PingOne Platform APIs - Early Access

Update Authorization Policy

 

PUT {{apiPath}}/environments/{{envID}}/authorizationPolicies/{{authorizationPolicyID}}

The PUT {{apiPath}}/environments/{{envID}}/authorizationPolicies/{{authorizationPolicyID}} request updates the authorization policy specified by its ID in the request URL.

The update action requires that you specify the authorization policy ID and the version ID in the request body.

Request Model

For property descriptions, refer to Authorization policies data model

Property Type? Required?

children

Array

Optional

combiningAlgorithm

Object

Required

condition

Object

Optional

description

String

Optional

enabled

Boolean

Optional

id

String

Required

name

String

Required

repetitionSettings

Object

Optional

statements

Object

Optional

type

String

Required

version

String

Required

Headers

Authorization      Bearer {{accessToken}}

Content-Type      application/json

Body

raw ( application/json )

{
  "type": "POLICY",
  "id": "{{authorizationPolicyID}}",
  "version": "{{authorizationPolicyVersionID}}",
  "name": "Policy1 Updated",
  "description": "Policy1 description",
  "enabled": true,
  "statements": [
    {
      "value": {
        "id": "{{authorizationStatementID}}"
      }
    },
    {
      "name": "Statement1",
      "description": "Statement1 description",
      "code": "UPDATED_CODE",
      "appliesTo": "PERMIT_OR_DENY",
      "appliesIf": "FINAL_DECISION_MATCHES",
      "payload": "Updated payload",
      "obligatory": false,
      "attributes": [],
      "services": []
    }
  ],
  "condition": {
    "type": "AND",
    "conditions": [
      {
        "type": "COMPARISON",
        "left": {
          "type": "ATTRIBUTE",
          "id": "{{authAttributeID}}"
        },
        "comparator": "NOT_EQUALS",
        "right": {
          "type": "CONSTANT",
          "value": "def"
        }
      }
    ]
  },
  "combiningAlgorithm": {
    "algorithm": "DENY_OVERRIDES"
  }
}

Example Request

  • cURL

  • C#

  • Go

  • HTTP

  • Java

  • jQuery

  • NodeJS

  • Python

  • PHP

  • Ruby

  • Swift

curl --location --globoff --request PUT '{{apiPath}}/environments/{{envID}}/authorizationPolicies/{{authorizationPolicyID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data '{
  "type": "POLICY",
  "id": "{{authorizationPolicyID}}",
  "version": "{{authorizationPolicyVersionID}}",
  "name": "Policy1 Updated",
  "description": "Policy1 description",
  "enabled": true,
  "statements": [
    {
      "value": {
        "id": "{{authorizationStatementID}}"
      }
    },
    {
      "name": "Statement1",
      "description": "Statement1 description",
      "code": "UPDATED_CODE",
      "appliesTo": "PERMIT_OR_DENY",
      "appliesIf": "FINAL_DECISION_MATCHES",
      "payload": "Updated payload",
      "obligatory": false,
      "attributes": [],
      "services": []
    }
  ],
  "condition": {
    "type": "AND",
    "conditions": [
      {
        "type": "COMPARISON",
        "left": {
          "type": "ATTRIBUTE",
          "id": "{{authAttributeID}}"
        },
        "comparator": "NOT_EQUALS",
        "right": {
          "type": "CONSTANT",
          "value": "def"
        }
      }
    ]
  },
  "combiningAlgorithm": {
    "algorithm": "DENY_OVERRIDES"
  }
}'
var options = new RestClientOptions("{{apiPath}}/environments/{{envID}}/authorizationPolicies/{{authorizationPolicyID}}")
{
  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" +
@"  ""type"": ""POLICY""," + "\n" +
@"  ""id"": ""{{authorizationPolicyID}}""," + "\n" +
@"  ""version"": ""{{authorizationPolicyVersionID}}""," + "\n" +
@"  ""name"": ""Policy1 Updated""," + "\n" +
@"  ""description"": ""Policy1 description""," + "\n" +
@"  ""enabled"": true," + "\n" +
@"  ""statements"": [" + "\n" +
@"    {" + "\n" +
@"      ""value"": {" + "\n" +
@"        ""id"": ""{{authorizationStatementID}}""" + "\n" +
@"      }" + "\n" +
@"    }," + "\n" +
@"    {" + "\n" +
@"      ""name"": ""Statement1""," + "\n" +
@"      ""description"": ""Statement1 description""," + "\n" +
@"      ""code"": ""UPDATED_CODE""," + "\n" +
@"      ""appliesTo"": ""PERMIT_OR_DENY""," + "\n" +
@"      ""appliesIf"": ""FINAL_DECISION_MATCHES""," + "\n" +
@"      ""payload"": ""Updated payload""," + "\n" +
@"      ""obligatory"": false," + "\n" +
@"      ""attributes"": []," + "\n" +
@"      ""services"": []" + "\n" +
@"    }" + "\n" +
@"  ]," + "\n" +
@"  ""condition"": {" + "\n" +
@"    ""type"": ""AND""," + "\n" +
@"    ""conditions"": [" + "\n" +
@"      {" + "\n" +
@"        ""type"": ""COMPARISON""," + "\n" +
@"        ""left"": {" + "\n" +
@"          ""type"": ""ATTRIBUTE""," + "\n" +
@"          ""id"": ""{{authAttributeID}}""" + "\n" +
@"        }," + "\n" +
@"        ""comparator"": ""NOT_EQUALS""," + "\n" +
@"        ""right"": {" + "\n" +
@"          ""type"": ""CONSTANT""," + "\n" +
@"          ""value"": ""def""        " + "\n" +
@"        }" + "\n" +
@"      }" + "\n" +
@"    ]" + "\n" +
@"  }," + "\n" +
@"  ""combiningAlgorithm"": {" + "\n" +
@"    ""algorithm"": ""DENY_OVERRIDES""" + "\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}}/authorizationPolicies/{{authorizationPolicyID}}"
  method := "PUT"

  payload := strings.NewReader(`{
  "type": "POLICY",
  "id": "{{authorizationPolicyID}}",
  "version": "{{authorizationPolicyVersionID}}",
  "name": "Policy1 Updated",
  "description": "Policy1 description",
  "enabled": true,
  "statements": [
    {
      "value": {
        "id": "{{authorizationStatementID}}"
      }
    },
    {
      "name": "Statement1",
      "description": "Statement1 description",
      "code": "UPDATED_CODE",
      "appliesTo": "PERMIT_OR_DENY",
      "appliesIf": "FINAL_DECISION_MATCHES",
      "payload": "Updated payload",
      "obligatory": false,
      "attributes": [],
      "services": []
    }
  ],
  "condition": {
    "type": "AND",
    "conditions": [
      {
        "type": "COMPARISON",
        "left": {
          "type": "ATTRIBUTE",
          "id": "{{authAttributeID}}"
        },
        "comparator": "NOT_EQUALS",
        "right": {
          "type": "CONSTANT",
          "value": "def"
        }
      }
    ]
  },
  "combiningAlgorithm": {
    "algorithm": "DENY_OVERRIDES"
  }
}`)

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

{
  "type": "POLICY",
  "id": "{{authorizationPolicyID}}",
  "version": "{{authorizationPolicyVersionID}}",
  "name": "Policy1 Updated",
  "description": "Policy1 description",
  "enabled": true,
  "statements": [
    {
      "value": {
        "id": "{{authorizationStatementID}}"
      }
    },
    {
      "name": "Statement1",
      "description": "Statement1 description",
      "code": "UPDATED_CODE",
      "appliesTo": "PERMIT_OR_DENY",
      "appliesIf": "FINAL_DECISION_MATCHES",
      "payload": "Updated payload",
      "obligatory": false,
      "attributes": [],
      "services": []
    }
  ],
  "condition": {
    "type": "AND",
    "conditions": [
      {
        "type": "COMPARISON",
        "left": {
          "type": "ATTRIBUTE",
          "id": "{{authAttributeID}}"
        },
        "comparator": "NOT_EQUALS",
        "right": {
          "type": "CONSTANT",
          "value": "def"
        }
      }
    ]
  },
  "combiningAlgorithm": {
    "algorithm": "DENY_OVERRIDES"
  }
}
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n  \"type\": \"POLICY\",\n  \"id\": \"{{authorizationPolicyID}}\",\n  \"version\": \"{{authorizationPolicyVersionID}}\",\n  \"name\": \"Policy1 Updated\",\n  \"description\": \"Policy1 description\",\n  \"enabled\": true,\n  \"statements\": [\n    {\n      \"value\": {\n        \"id\": \"{{authorizationStatementID}}\"\n      }\n    },\n    {\n      \"name\": \"Statement1\",\n      \"description\": \"Statement1 description\",\n      \"code\": \"UPDATED_CODE\",\n      \"appliesTo\": \"PERMIT_OR_DENY\",\n      \"appliesIf\": \"FINAL_DECISION_MATCHES\",\n      \"payload\": \"Updated payload\",\n      \"obligatory\": false,\n      \"attributes\": [],\n      \"services\": []\n    }\n  ],\n  \"condition\": {\n    \"type\": \"AND\",\n    \"conditions\": [\n      {\n        \"type\": \"COMPARISON\",\n        \"left\": {\n          \"type\": \"ATTRIBUTE\",\n          \"id\": \"{{authAttributeID}}\"\n        },\n        \"comparator\": \"NOT_EQUALS\",\n        \"right\": {\n          \"type\": \"CONSTANT\",\n          \"value\": \"def\"        \n        }\n      }\n    ]\n  },\n  \"combiningAlgorithm\": {\n    \"algorithm\": \"DENY_OVERRIDES\"\n  }\n}");
Request request = new Request.Builder()
  .url("{{apiPath}}/environments/{{envID}}/authorizationPolicies/{{authorizationPolicyID}}")
  .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}}/authorizationPolicies/{{authorizationPolicyID}}",
  "method": "PUT",
  "timeout": 0,
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer {{accessToken}}"
  },
  "data": JSON.stringify({
    "type": "POLICY",
    "id": "{{authorizationPolicyID}}",
    "version": "{{authorizationPolicyVersionID}}",
    "name": "Policy1 Updated",
    "description": "Policy1 description",
    "enabled": true,
    "statements": [
      {
        "value": {
          "id": "{{authorizationStatementID}}"
        }
      },
      {
        "name": "Statement1",
        "description": "Statement1 description",
        "code": "UPDATED_CODE",
        "appliesTo": "PERMIT_OR_DENY",
        "appliesIf": "FINAL_DECISION_MATCHES",
        "payload": "Updated payload",
        "obligatory": false,
        "attributes": [],
        "services": []
      }
    ],
    "condition": {
      "type": "AND",
      "conditions": [
        {
          "type": "COMPARISON",
          "left": {
            "type": "ATTRIBUTE",
            "id": "{{authAttributeID}}"
          },
          "comparator": "NOT_EQUALS",
          "right": {
            "type": "CONSTANT",
            "value": "def"
          }
        }
      ]
    },
    "combiningAlgorithm": {
      "algorithm": "DENY_OVERRIDES"
    }
  }),
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
var request = require('request');
var options = {
  'method': 'PUT',
  'url': '{{apiPath}}/environments/{{envID}}/authorizationPolicies/{{authorizationPolicyID}}',
  'headers': {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer {{accessToken}}'
  },
  body: JSON.stringify({
    "type": "POLICY",
    "id": "{{authorizationPolicyID}}",
    "version": "{{authorizationPolicyVersionID}}",
    "name": "Policy1 Updated",
    "description": "Policy1 description",
    "enabled": true,
    "statements": [
      {
        "value": {
          "id": "{{authorizationStatementID}}"
        }
      },
      {
        "name": "Statement1",
        "description": "Statement1 description",
        "code": "UPDATED_CODE",
        "appliesTo": "PERMIT_OR_DENY",
        "appliesIf": "FINAL_DECISION_MATCHES",
        "payload": "Updated payload",
        "obligatory": false,
        "attributes": [],
        "services": []
      }
    ],
    "condition": {
      "type": "AND",
      "conditions": [
        {
          "type": "COMPARISON",
          "left": {
            "type": "ATTRIBUTE",
            "id": "{{authAttributeID}}"
          },
          "comparator": "NOT_EQUALS",
          "right": {
            "type": "CONSTANT",
            "value": "def"
          }
        }
      ]
    },
    "combiningAlgorithm": {
      "algorithm": "DENY_OVERRIDES"
    }
  })

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

url = "{{apiPath}}/environments/{{envID}}/authorizationPolicies/{{authorizationPolicyID}}"

payload = json.dumps({
  "type": "POLICY",
  "id": "{{authorizationPolicyID}}",
  "version": "{{authorizationPolicyVersionID}}",
  "name": "Policy1 Updated",
  "description": "Policy1 description",
  "enabled": True,
  "statements": [
    {
      "value": {
        "id": "{{authorizationStatementID}}"
      }
    },
    {
      "name": "Statement1",
      "description": "Statement1 description",
      "code": "UPDATED_CODE",
      "appliesTo": "PERMIT_OR_DENY",
      "appliesIf": "FINAL_DECISION_MATCHES",
      "payload": "Updated payload",
      "obligatory": False,
      "attributes": [],
      "services": []
    }
  ],
  "condition": {
    "type": "AND",
    "conditions": [
      {
        "type": "COMPARISON",
        "left": {
          "type": "ATTRIBUTE",
          "id": "{{authAttributeID}}"
        },
        "comparator": "NOT_EQUALS",
        "right": {
          "type": "CONSTANT",
          "value": "def"
        }
      }
    ]
  },
  "combiningAlgorithm": {
    "algorithm": "DENY_OVERRIDES"
  }
})
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}}/authorizationPolicies/{{authorizationPolicyID}}');
$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  "type": "POLICY",\n  "id": "{{authorizationPolicyID}}",\n  "version": "{{authorizationPolicyVersionID}}",\n  "name": "Policy1 Updated",\n  "description": "Policy1 description",\n  "enabled": true,\n  "statements": [\n    {\n      "value": {\n        "id": "{{authorizationStatementID}}"\n      }\n    },\n    {\n      "name": "Statement1",\n      "description": "Statement1 description",\n      "code": "UPDATED_CODE",\n      "appliesTo": "PERMIT_OR_DENY",\n      "appliesIf": "FINAL_DECISION_MATCHES",\n      "payload": "Updated payload",\n      "obligatory": false,\n      "attributes": [],\n      "services": []\n    }\n  ],\n  "condition": {\n    "type": "AND",\n    "conditions": [\n      {\n        "type": "COMPARISON",\n        "left": {\n          "type": "ATTRIBUTE",\n          "id": "{{authAttributeID}}"\n        },\n        "comparator": "NOT_EQUALS",\n        "right": {\n          "type": "CONSTANT",\n          "value": "def"        \n        }\n      }\n    ]\n  },\n  "combiningAlgorithm": {\n    "algorithm": "DENY_OVERRIDES"\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}}/authorizationPolicies/{{authorizationPolicyID}}")

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({
  "type": "POLICY",
  "id": "{{authorizationPolicyID}}",
  "version": "{{authorizationPolicyVersionID}}",
  "name": "Policy1 Updated",
  "description": "Policy1 description",
  "enabled": true,
  "statements": [
    {
      "value": {
        "id": "{{authorizationStatementID}}"
      }
    },
    {
      "name": "Statement1",
      "description": "Statement1 description",
      "code": "UPDATED_CODE",
      "appliesTo": "PERMIT_OR_DENY",
      "appliesIf": "FINAL_DECISION_MATCHES",
      "payload": "Updated payload",
      "obligatory": false,
      "attributes": [],
      "services": []
    }
  ],
  "condition": {
    "type": "AND",
    "conditions": [
      {
        "type": "COMPARISON",
        "left": {
          "type": "ATTRIBUTE",
          "id": "{{authAttributeID}}"
        },
        "comparator": "NOT_EQUALS",
        "right": {
          "type": "CONSTANT",
          "value": "def"
        }
      }
    ]
  },
  "combiningAlgorithm": {
    "algorithm": "DENY_OVERRIDES"
  }
})

response = http.request(request)
puts response.read_body
let parameters = "{\n  \"type\": \"POLICY\",\n  \"id\": \"{{authorizationPolicyID}}\",\n  \"version\": \"{{authorizationPolicyVersionID}}\",\n  \"name\": \"Policy1 Updated\",\n  \"description\": \"Policy1 description\",\n  \"enabled\": true,\n  \"statements\": [\n    {\n      \"value\": {\n        \"id\": \"{{authorizationStatementID}}\"\n      }\n    },\n    {\n      \"name\": \"Statement1\",\n      \"description\": \"Statement1 description\",\n      \"code\": \"UPDATED_CODE\",\n      \"appliesTo\": \"PERMIT_OR_DENY\",\n      \"appliesIf\": \"FINAL_DECISION_MATCHES\",\n      \"payload\": \"Updated payload\",\n      \"obligatory\": false,\n      \"attributes\": [],\n      \"services\": []\n    }\n  ],\n  \"condition\": {\n    \"type\": \"AND\",\n    \"conditions\": [\n      {\n        \"type\": \"COMPARISON\",\n        \"left\": {\n          \"type\": \"ATTRIBUTE\",\n          \"id\": \"{{authAttributeID}}\"\n        },\n        \"comparator\": \"NOT_EQUALS\",\n        \"right\": {\n          \"type\": \"CONSTANT\",\n          \"value\": \"def\"        \n        }\n      }\n    ]\n  },\n  \"combiningAlgorithm\": {\n    \"algorithm\": \"DENY_OVERRIDES\"\n  }\n}"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string: "{{apiPath}}/environments/{{envID}}/authorizationPolicies/{{authorizationPolicyID}}")!,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/authorizationPolicies/dfcb5648-53f0-4eb7-8250-24df83d89141"
        },
        "environment": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
        }
    },
    "id": "dfcb5648-53f0-4eb7-8250-24df83d89141",
    "name": "Policy1 Updated",
    "description": "Policy1 description",
    "enabled": true,
    "statements": [
        {
            "value": {
                "id": "96f87e06-3044-4961-938e-60b2a52b121c"
            }
        },
        {
            "name": "Statement1",
            "description": "Statement1 description",
            "code": "UPDATED_CODE",
            "appliesTo": "PERMIT_OR_DENY",
            "appliesIf": "FINAL_DECISION_MATCHES",
            "payload": "Updated payload",
            "obligatory": false,
            "attributes": []
        }
    ],
    "condition": {
        "type": "AND",
        "conditions": [
            {
                "type": "COMPARISON",
                "left": {
                    "type": "ATTRIBUTE",
                    "id": "a82a932f-f8bd-4b05-8c1f-5cf75c8fc030"
                },
                "comparator": "NOT_EQUALS",
                "right": {
                    "type": "CONSTANT",
                    "value": "def"
                }
            }
        ]
    },
    "combiningAlgorithm": {
        "algorithm": "DENY_OVERRIDES"
    },
    "children": [],
    "version": "e937ca2d-a7ce-4e35-82c5-6762fffe55a5"
}