PingAuthorize API Reference

Update Statement

PUT {{apiPath}}/v2/policy-manager/statements/{{statementId}}?branch={{branchId}}

The PUT /v2/policy-manager/statements/{{statementId}} operation updates the statement identified by {{statementId}}. The request must provide either a branch ID or a snapshot ID in the request URL to specify where the statement should be updated.

Prerequisites

Query parameters
Query parameter Description

branch

Branch ID or name

snapshot

Snapshot ID

Request Model

For property descriptions, refer to Authorization statements data model.

Property Type Required

id

String

Required

version

String

Required

type

String

Optional

name

String

Required

description

String

Optional

shared

Boolean

Optional

code

String

Required

appliesTo

String

Optional

appliesIf

String

Optional

payload

String

Optional

obligatory

Boolean

Optional

attributes

String[]

Optional

services

String[]

Optional

Headers

Content-Type      application/json

x-user-id      {{userId}}

Body

raw ( application/json )

{
    "id": {{statementId}},
    "version": {{versionId}},
    "type": "statement",
    "name": "new-example-statement",
    "description": "Example denial statement",
    "shared": true,
    "code": "denied-reason",
    "appliesTo": "DENY",
    "appliesIf": "PATH_MATCHES",
    "payload": "Requested operation not allowed by the granted OAuth scopes.",
    "obligatory": false,
    "attributes": [],
    "services": []
}

Example Request

  • cURL

  • C#

  • Go

  • HTTP

  • Java

  • jQuery

  • NodeJS

  • Python

  • PHP

  • Ruby

  • Swift

curl --location --globoff --request PUT '{{apiPath}}/v2/policy-manager/statements/{{statementId}}?branch={{branchId}}' \
--header 'x-user-id: {{userId}}' \
--header 'Content-Type: application/json' \
--data '{
    "id": {{statementId}},
    "version": {{versionId}},
    "type": "statement",
    "name": "new-example-statement",
    "description": "Example denial statement",
    "shared": true,
    "code": "denied-reason",
    "appliesTo": "DENY",
    "appliesIf": "PATH_MATCHES",
    "payload": "Requested operation not allowed by the granted OAuth scopes.",
    "obligatory": false,
    "attributes": [],
    "services": []
}'
var options = new RestClientOptions("{{apiPath}}/v2/policy-manager/statements/{{statementId}}?branch={{branchId}}")
{
  MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("", Method.Put);
request.AddHeader("x-user-id", "{{userId}}");
request.AddHeader("Content-Type", "application/json");
var body = @"{" + "\n" +
@"    ""id"": {{statementId}}," + "\n" +
@"    ""version"": {{versionId}}," + "\n" +
@"    ""type"": ""statement""," + "\n" +
@"    ""name"": ""new-example-statement""," + "\n" +
@"    ""description"": ""Example denial statement""," + "\n" +
@"    ""shared"": true," + "\n" +
@"    ""code"": ""denied-reason""," + "\n" +
@"    ""appliesTo"": ""DENY""," + "\n" +
@"    ""appliesIf"": ""PATH_MATCHES""," + "\n" +
@"    ""payload"": ""Requested operation not allowed by the granted OAuth scopes.""," + "\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}}/v2/policy-manager/statements/{{statementId}}?branch={{branchId}}"
  method := "PUT"

  payload := strings.NewReader(`{
    "id": {{statementId}},
    "version": {{versionId}},
    "type": "statement",
    "name": "new-example-statement",
    "description": "Example denial statement",
    "shared": true,
    "code": "denied-reason",
    "appliesTo": "DENY",
    "appliesIf": "PATH_MATCHES",
    "payload": "Requested operation not allowed by the granted OAuth scopes.",
    "obligatory": false,
    "attributes": [],
    "services": []
}`)

  client := &http.Client {
  }
  req, err := http.NewRequest(method, url, payload)

  if err != nil {
    fmt.Println(err)
    return
  }
  req.Header.Add("x-user-id", "{{userId}}")
  req.Header.Add("Content-Type", "application/json")

  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 /v2/policy-manager/statements/{{statementId}}?branch={{branchId}} HTTP/1.1
Host: {{apiPath}}
x-user-id: {{userId}}
Content-Type: application/json

{
    "id": {{statementId}},
    "version": {{versionId}},
    "type": "statement",
    "name": "new-example-statement",
    "description": "Example denial statement",
    "shared": true,
    "code": "denied-reason",
    "appliesTo": "DENY",
    "appliesIf": "PATH_MATCHES",
    "payload": "Requested operation not allowed by the granted OAuth scopes.",
    "obligatory": false,
    "attributes": [],
    "services": []
}
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n    \"id\": {{statementId}},\n    \"version\": {{versionId}},\n    \"type\": \"statement\",\n    \"name\": \"new-example-statement\",\n    \"description\": \"Example denial statement\",\n    \"shared\": true,\n    \"code\": \"denied-reason\",\n    \"appliesTo\": \"DENY\",\n    \"appliesIf\": \"PATH_MATCHES\",\n    \"payload\": \"Requested operation not allowed by the granted OAuth scopes.\",\n    \"obligatory\": false,\n    \"attributes\": [],\n    \"services\": []\n}");
Request request = new Request.Builder()
  .url("{{apiPath}}/v2/policy-manager/statements/{{statementId}}?branch={{branchId}}")
  .method("PUT", body)
  .addHeader("x-user-id", "{{userId}}")
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
var settings = {
  "url": "{{apiPath}}/v2/policy-manager/statements/{{statementId}}?branch={{branchId}}",
  "method": "PUT",
  "timeout": 0,
  "headers": {
    "x-user-id": "{{userId}}",
    "Content-Type": "application/json"
  },
  "data": "{\n    \"id\": {{statementId}},\n    \"version\": {{versionId}},\n    \"type\": \"statement\",\n    \"name\": \"new-example-statement\",\n    \"description\": \"Example denial statement\",\n    \"shared\": true,\n    \"code\": \"denied-reason\",\n    \"appliesTo\": \"DENY\",\n    \"appliesIf\": \"PATH_MATCHES\",\n    \"payload\": \"Requested operation not allowed by the granted OAuth scopes.\",\n    \"obligatory\": false,\n    \"attributes\": [],\n    \"services\": []\n}",
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
var request = require('request');
var options = {
  'method': 'PUT',
  'url': '{{apiPath}}/v2/policy-manager/statements/{{statementId}}?branch={{branchId}}',
  'headers': {
    'x-user-id': '{{userId}}',
    'Content-Type': 'application/json'
  },
  body: '{\n    "id": {{statementId}},\n    "version": {{versionId}},\n    "type": "statement",\n    "name": "new-example-statement",\n    "description": "Example denial statement",\n    "shared": true,\n    "code": "denied-reason",\n    "appliesTo": "DENY",\n    "appliesIf": "PATH_MATCHES",\n    "payload": "Requested operation not allowed by the granted OAuth scopes.",\n    "obligatory": false,\n    "attributes": [],\n    "services": []\n}'

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

url = "{{apiPath}}/v2/policy-manager/statements/{{statementId}}?branch={{branchId}}"

payload = "{\n    \"id\": {{statementId}},\n    \"version\": {{versionId}},\n    \"type\": \"statement\",\n    \"name\": \"new-example-statement\",\n    \"description\": \"Example denial statement\",\n    \"shared\": true,\n    \"code\": \"denied-reason\",\n    \"appliesTo\": \"DENY\",\n    \"appliesIf\": \"PATH_MATCHES\",\n    \"payload\": \"Requested operation not allowed by the granted OAuth scopes.\",\n    \"obligatory\": false,\n    \"attributes\": [],\n    \"services\": []\n}"
headers = {
  'x-user-id': '{{userId}}',
  'Content-Type': 'application/json'
}

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}}/v2/policy-manager/statements/{{statementId}}?branch={{branchId}}');
$request->setMethod(HTTP_Request2::METHOD_PUT);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setHeader(array(
  'x-user-id' => '{{userId}}',
  'Content-Type' => 'application/json'
));
$request->setBody('{\n    "id": {{statementId}},\n    "version": {{versionId}},\n    "type": "statement",\n    "name": "new-example-statement",\n    "description": "Example denial statement",\n    "shared": true,\n    "code": "denied-reason",\n    "appliesTo": "DENY",\n    "appliesIf": "PATH_MATCHES",\n    "payload": "Requested operation not allowed by the granted OAuth scopes.",\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}}/v2/policy-manager/statements/{{statementId}}?branch={{branchId}}")

http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Put.new(url)
request["x-user-id"] = "{{userId}}"
request["Content-Type"] = "application/json"
request.body = "{\n    \"id\": {{statementId}},\n    \"version\": {{versionId}},\n    \"type\": \"statement\",\n    \"name\": \"new-example-statement\",\n    \"description\": \"Example denial statement\",\n    \"shared\": true,\n    \"code\": \"denied-reason\",\n    \"appliesTo\": \"DENY\",\n    \"appliesIf\": \"PATH_MATCHES\",\n    \"payload\": \"Requested operation not allowed by the granted OAuth scopes.\",\n    \"obligatory\": false,\n    \"attributes\": [],\n    \"services\": []\n}"

response = http.request(request)
puts response.read_body
let parameters = "{\n    \"id\": {{statementId}},\n    \"version\": {{versionId}},\n    \"type\": \"statement\",\n    \"name\": \"new-example-statement\",\n    \"description\": \"Example denial statement\",\n    \"shared\": true,\n    \"code\": \"denied-reason\",\n    \"appliesTo\": \"DENY\",\n    \"appliesIf\": \"PATH_MATCHES\",\n    \"payload\": \"Requested operation not allowed by the granted OAuth scopes.\",\n    \"obligatory\": false,\n    \"attributes\": [],\n    \"services\": []\n}"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string: "{{apiPath}}/v2/policy-manager/statements/{{statementId}}?branch={{branchId}}")!,timeoutInterval: Double.infinity)
request.addValue("{{userId}}", forHTTPHeaderField: "x-user-id")
request.addValue("application/json", forHTTPHeaderField: "Content-Type")

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

{
    "id": "fc94c663-dfe1-4c2c-b5e5-3d795c80a417",
    "version": "93e39c4e-e024-4091-8205-5f8ab8ff8d0d",
    "type": "statement",
    "name": "new-example-statement",
    "description": "Example denial statement",
    "shared": true,
    "code": "denied-reason",
    "appliesTo": "DENY",
    "appliesIf": "PATH_MATCHES",
    "payload": "Requested operation not allowed by the granted OAuth scopes.",
    "obligatory": false,
    "permissions": {
        "inherit": true,
        "rolePermissions": []
    },
    "attributes": [],
    "services": []
}