PingOne Platform APIs - Early Access

Update Authorization Statement

 

PUT {{apiPath}}/environments/{{envID}}/authorizationStatements/{{authorizationStatementID}}

The PUT {{apiPath}}/environments/{{envID}}/authorizationStatements/{{authorizationStatementID}} request updates the the authorization statement specified by its ID in the request URL.

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

Request Model

For property descriptions, refer to Authorization statements data model

Property Type? Required?

appliesif

String

Required

appliesTo

String

Required

attributes

Object

Required

code

String

Required

description

String

id

String

Required

name

String

Required

obligatory

Boolean

Optional

payload

String

Required

services

Object

Required

version

String

Required

Headers

Authorization      Bearer {{accessToken}}

Content-Type      application/json

Body

raw ( application/json )

{
  "id": "{{authorizationStatementID}}",
  "version": "{{authorizationStatementVersionID}}",
  "name": "Authorization Statement2-updated",
  "description": "Authorization Statement1 description",
  "code": "CODE1",
  "appliesTo": "PERMIT_OR_DENY",
  "appliesIf": "FINAL_DECISION_MATCHES",
  "payload": "Payload1",
  "obligatory": false,
  "attributes": [],
  "services": []
}

Example Request

  • cURL

  • C#

  • Go

  • HTTP

  • Java

  • jQuery

  • NodeJS

  • Python

  • PHP

  • Ruby

  • Swift

curl --location --globoff --request PUT '{{apiPath}}/environments/{{envID}}/authorizationStatements/{{authorizationStatementID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data '{
  "id": "{{authorizationStatementID}}",
  "version": "{{authorizationStatementVersionID}}",
  "name": "Authorization Statement2-updated",
  "description": "Authorization Statement1 description",
  "code": "CODE1",
  "appliesTo": "PERMIT_OR_DENY",
  "appliesIf": "FINAL_DECISION_MATCHES",
  "payload": "Payload1",
  "obligatory": false,
  "attributes": [],
  "services": []
}'
var options = new RestClientOptions("{{apiPath}}/environments/{{envID}}/authorizationStatements/{{authorizationStatementID}}")
{
  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" +
@"  ""id"": ""{{authorizationStatementID}}""," + "\n" +
@"  ""version"": ""{{authorizationStatementVersionID}}""," + "\n" +
@"  ""name"": ""Authorization Statement2-updated""," + "\n" +
@"  ""description"": ""Authorization Statement1 description""," + "\n" +
@"  ""code"": ""CODE1""," + "\n" +
@"  ""appliesTo"": ""PERMIT_OR_DENY""," + "\n" +
@"  ""appliesIf"": ""FINAL_DECISION_MATCHES""," + "\n" +
@"  ""payload"": ""Payload1""," + "\n" +
@"  ""obligatory"": false," + "\n" +
@"  ""attributes"": []," + "\n" +
@"  ""services"": []" + "\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}}/authorizationStatements/{{authorizationStatementID}}"
  method := "PUT"

  payload := strings.NewReader(`{
  "id": "{{authorizationStatementID}}",
  "version": "{{authorizationStatementVersionID}}",
  "name": "Authorization Statement2-updated",
  "description": "Authorization Statement1 description",
  "code": "CODE1",
  "appliesTo": "PERMIT_OR_DENY",
  "appliesIf": "FINAL_DECISION_MATCHES",
  "payload": "Payload1",
  "obligatory": false,
  "attributes": [],
  "services": []
}`)

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

{
  "id": "{{authorizationStatementID}}",
  "version": "{{authorizationStatementVersionID}}",
  "name": "Authorization Statement2-updated",
  "description": "Authorization Statement1 description",
  "code": "CODE1",
  "appliesTo": "PERMIT_OR_DENY",
  "appliesIf": "FINAL_DECISION_MATCHES",
  "payload": "Payload1",
  "obligatory": false,
  "attributes": [],
  "services": []
}
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n  \"id\": \"{{authorizationStatementID}}\",\n  \"version\": \"{{authorizationStatementVersionID}}\",\n  \"name\": \"Authorization Statement2-updated\",\n  \"description\": \"Authorization Statement1 description\",\n  \"code\": \"CODE1\",\n  \"appliesTo\": \"PERMIT_OR_DENY\",\n  \"appliesIf\": \"FINAL_DECISION_MATCHES\",\n  \"payload\": \"Payload1\",\n  \"obligatory\": false,\n  \"attributes\": [],\n  \"services\": []\n}");
Request request = new Request.Builder()
  .url("{{apiPath}}/environments/{{envID}}/authorizationStatements/{{authorizationStatementID}}")
  .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}}/authorizationStatements/{{authorizationStatementID}}",
  "method": "PUT",
  "timeout": 0,
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer {{accessToken}}"
  },
  "data": JSON.stringify({
    "id": "{{authorizationStatementID}}",
    "version": "{{authorizationStatementVersionID}}",
    "name": "Authorization Statement2-updated",
    "description": "Authorization Statement1 description",
    "code": "CODE1",
    "appliesTo": "PERMIT_OR_DENY",
    "appliesIf": "FINAL_DECISION_MATCHES",
    "payload": "Payload1",
    "obligatory": false,
    "attributes": [],
    "services": []
  }),
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
var request = require('request');
var options = {
  'method': 'PUT',
  'url': '{{apiPath}}/environments/{{envID}}/authorizationStatements/{{authorizationStatementID}}',
  'headers': {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer {{accessToken}}'
  },
  body: JSON.stringify({
    "id": "{{authorizationStatementID}}",
    "version": "{{authorizationStatementVersionID}}",
    "name": "Authorization Statement2-updated",
    "description": "Authorization Statement1 description",
    "code": "CODE1",
    "appliesTo": "PERMIT_OR_DENY",
    "appliesIf": "FINAL_DECISION_MATCHES",
    "payload": "Payload1",
    "obligatory": false,
    "attributes": [],
    "services": []
  })

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

url = "{{apiPath}}/environments/{{envID}}/authorizationStatements/{{authorizationStatementID}}"

payload = json.dumps({
  "id": "{{authorizationStatementID}}",
  "version": "{{authorizationStatementVersionID}}",
  "name": "Authorization Statement2-updated",
  "description": "Authorization Statement1 description",
  "code": "CODE1",
  "appliesTo": "PERMIT_OR_DENY",
  "appliesIf": "FINAL_DECISION_MATCHES",
  "payload": "Payload1",
  "obligatory": False,
  "attributes": [],
  "services": []
})
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}}/authorizationStatements/{{authorizationStatementID}}');
$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  "id": "{{authorizationStatementID}}",\n  "version": "{{authorizationStatementVersionID}}",\n  "name": "Authorization Statement2-updated",\n  "description": "Authorization Statement1 description",\n  "code": "CODE1",\n  "appliesTo": "PERMIT_OR_DENY",\n  "appliesIf": "FINAL_DECISION_MATCHES",\n  "payload": "Payload1",\n  "obligatory": false,\n  "attributes": [],\n  "services": []\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}}/authorizationStatements/{{authorizationStatementID}}")

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({
  "id": "{{authorizationStatementID}}",
  "version": "{{authorizationStatementVersionID}}",
  "name": "Authorization Statement2-updated",
  "description": "Authorization Statement1 description",
  "code": "CODE1",
  "appliesTo": "PERMIT_OR_DENY",
  "appliesIf": "FINAL_DECISION_MATCHES",
  "payload": "Payload1",
  "obligatory": false,
  "attributes": [],
  "services": []
})

response = http.request(request)
puts response.read_body
let parameters = "{\n  \"id\": \"{{authorizationStatementID}}\",\n  \"version\": \"{{authorizationStatementVersionID}}\",\n  \"name\": \"Authorization Statement2-updated\",\n  \"description\": \"Authorization Statement1 description\",\n  \"code\": \"CODE1\",\n  \"appliesTo\": \"PERMIT_OR_DENY\",\n  \"appliesIf\": \"FINAL_DECISION_MATCHES\",\n  \"payload\": \"Payload1\",\n  \"obligatory\": false,\n  \"attributes\": [],\n  \"services\": []\n}"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string: "{{apiPath}}/environments/{{envID}}/authorizationStatements/{{authorizationStatementID}}")!,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/authorizationStatements/3fc9b589-724a-489a-a5bf-cab4a18a9db3"
        },
        "environment": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
        }
    },
    "id": "3fc9b589-724a-489a-a5bf-cab4a18a9db3",
    "name": "Authorization Statement2-updated",
    "description": "Authorization Statement1 description",
    "code": "CODE1",
    "appliesTo": "PERMIT_OR_DENY",
    "appliesIf": "FINAL_DECISION_MATCHES",
    "payload": "Payload1",
    "obligatory": false,
    "attributes": [],
    "services": [],
    "version": "620a6998-2c3e-4859-8ec2-a22407a9affc"
}