PingOne Platform APIs - Early Access

Update Authorization Condition

 

PUT {{apiPath}}/environments/{{envID}}/authorizationConditions/{{authConditionsID}}

The PUT /environments/{{envID}}/authorizationConditions/{{authConditionsID}}` request updates the authorization condition specified by its ID in the request URL.

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

Request Model

For property descriptions, refer to Authorization conditions data model

Property Type? Required?

condition

Object

Required

condition.type

String

Required

condition.conditions[]

Object

Required

condition.conditions.type

String

Required

condition.conditions.comparator

String

Required

condition.conditions.left

Object

Required

condition.conditions.right

Object

Required

description

String

Optional

fullName

String

Required

id

String

Required

name

String

Required

parent

Object

Optional

parent.id

String

Optional

type

String

Optional

version

String

Required

Headers

Authorization      Bearer {{accessToken}}

Content-Type      application/json

Body

raw ( application/json )

{
    "id": "{{authConditionsID}}",
    "version": "{{authConditionsVersionID}}",
    "type": "CONDITION",
    "name": "Has Balance",
    "description": "Updated description.",
    "parent": {
        "id": "{{authParentID}}"
    },
    "condition": {
        "type": "AND",
        "conditions": [
            {
                "type": "COMPARISON",
                "left": {
                    "type": "ATTRIBUTE",
                    "id": "{{authAttributeID}}"
                },
                "comparator": "EQUALS",
                "right": {
                    "type": "CONSTANT",
                    "value": "def"
                }
            }
        ]
    }
}

Example Request

  • cURL

  • C#

  • Go

  • HTTP

  • Java

  • jQuery

  • NodeJS

  • Python

  • PHP

  • Ruby

  • Swift

curl --location --globoff --request PUT '{{apiPath}}/environments/{{envID}}/authorizationConditions/{{authConditionsID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data '{
    "id": "{{authConditionsID}}",
    "version": "{{authConditionsVersionID}}",
    "type": "CONDITION",
    "name": "Has Balance",
    "description": "Updated description.",
    "parent": {
        "id": "{{authParentID}}"
    },
    "condition": {
        "type": "AND",
        "conditions": [
            {
                "type": "COMPARISON",
                "left": {
                    "type": "ATTRIBUTE",
                    "id": "{{authAttributeID}}"
                },
                "comparator": "EQUALS",
                "right": {
                    "type": "CONSTANT",
                    "value": "def"
                }
            }
        ]
    }
}'
var options = new RestClientOptions("{{apiPath}}/environments/{{envID}}/authorizationConditions/{{authConditionsID}}")
{
  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" +
@"{" + "\n" +
@"    ""id"": ""{{authConditionsID}}""," + "\n" +
@"    ""version"": ""{{authConditionsVersionID}}""," + "\n" +
@"    ""type"": ""CONDITION""," + "\n" +
@"    ""name"": ""Has Balance""," + "\n" +
@"    ""description"": ""Updated description.""," + "\n" +
@"    ""parent"": {" + "\n" +
@"        ""id"": ""{{authParentID}}""" + "\n" +
@"    }," + "\n" +
@"    ""condition"": {" + "\n" +
@"        ""type"": ""AND""," + "\n" +
@"        ""conditions"": [" + "\n" +
@"            {" + "\n" +
@"                ""type"": ""COMPARISON""," + "\n" +
@"                ""left"": {" + "\n" +
@"                    ""type"": ""ATTRIBUTE""," + "\n" +
@"                    ""id"": ""{{authAttributeID}}""" + "\n" +
@"                }," + "\n" +
@"                ""comparator"": ""EQUALS""," + "\n" +
@"                ""right"": {" + "\n" +
@"                    ""type"": ""CONSTANT""," + "\n" +
@"                    ""value"": ""def""" + "\n" +
@"                }" + "\n" +
@"            }" + "\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}}/authorizationConditions/{{authConditionsID}}"
  method := "PUT"

  payload := strings.NewReader(`{
    "id": "{{authConditionsID}}",
    "version": "{{authConditionsVersionID}}",
    "type": "CONDITION",
    "name": "Has Balance",
    "description": "Updated description.",
    "parent": {
        "id": "{{authParentID}}"
    },
    "condition": {
        "type": "AND",
        "conditions": [
            {
                "type": "COMPARISON",
                "left": {
                    "type": "ATTRIBUTE",
                    "id": "{{authAttributeID}}"
                },
                "comparator": "EQUALS",
                "right": {
                    "type": "CONSTANT",
                    "value": "def"
                }
            }
        ]
    }
}`)

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

{
    "id": "{{authConditionsID}}",
    "version": "{{authConditionsVersionID}}",
    "type": "CONDITION",
    "name": "Has Balance",
    "description": "Updated description.",
    "parent": {
        "id": "{{authParentID}}"
    },
    "condition": {
        "type": "AND",
        "conditions": [
            {
                "type": "COMPARISON",
                "left": {
                    "type": "ATTRIBUTE",
                    "id": "{{authAttributeID}}"
                },
                "comparator": "EQUALS",
                "right": {
                    "type": "CONSTANT",
                    "value": "def"
                }
            }
        ]
    }
}
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "\n{\n    \"id\": \"{{authConditionsID}}\",\n    \"version\": \"{{authConditionsVersionID}}\",\n    \"type\": \"CONDITION\",\n    \"name\": \"Has Balance\",\n    \"description\": \"Updated description.\",\n    \"parent\": {\n        \"id\": \"{{authParentID}}\"\n    },\n    \"condition\": {\n        \"type\": \"AND\",\n        \"conditions\": [\n            {\n                \"type\": \"COMPARISON\",\n                \"left\": {\n                    \"type\": \"ATTRIBUTE\",\n                    \"id\": \"{{authAttributeID}}\"\n                },\n                \"comparator\": \"EQUALS\",\n                \"right\": {\n                    \"type\": \"CONSTANT\",\n                    \"value\": \"def\"\n                }\n            }\n        ]\n    }\n}");
Request request = new Request.Builder()
  .url("{{apiPath}}/environments/{{envID}}/authorizationConditions/{{authConditionsID}}")
  .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}}/authorizationConditions/{{authConditionsID}}",
  "method": "PUT",
  "timeout": 0,
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer {{accessToken}}"
  },
  "data": JSON.stringify({
    "id": "{{authConditionsID}}",
    "version": "{{authConditionsVersionID}}",
    "type": "CONDITION",
    "name": "Has Balance",
    "description": "Updated description.",
    "parent": {
      "id": "{{authParentID}}"
    },
    "condition": {
      "type": "AND",
      "conditions": [
        {
          "type": "COMPARISON",
          "left": {
            "type": "ATTRIBUTE",
            "id": "{{authAttributeID}}"
          },
          "comparator": "EQUALS",
          "right": {
            "type": "CONSTANT",
            "value": "def"
          }
        }
      ]
    }
  }),
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
var request = require('request');
var options = {
  'method': 'PUT',
  'url': '{{apiPath}}/environments/{{envID}}/authorizationConditions/{{authConditionsID}}',
  'headers': {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer {{accessToken}}'
  },
  body: JSON.stringify({
    "id": "{{authConditionsID}}",
    "version": "{{authConditionsVersionID}}",
    "type": "CONDITION",
    "name": "Has Balance",
    "description": "Updated description.",
    "parent": {
      "id": "{{authParentID}}"
    },
    "condition": {
      "type": "AND",
      "conditions": [
        {
          "type": "COMPARISON",
          "left": {
            "type": "ATTRIBUTE",
            "id": "{{authAttributeID}}"
          },
          "comparator": "EQUALS",
          "right": {
            "type": "CONSTANT",
            "value": "def"
          }
        }
      ]
    }
  })

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

url = "{{apiPath}}/environments/{{envID}}/authorizationConditions/{{authConditionsID}}"

payload = json.dumps({
  "id": "{{authConditionsID}}",
  "version": "{{authConditionsVersionID}}",
  "type": "CONDITION",
  "name": "Has Balance",
  "description": "Updated description.",
  "parent": {
    "id": "{{authParentID}}"
  },
  "condition": {
    "type": "AND",
    "conditions": [
      {
        "type": "COMPARISON",
        "left": {
          "type": "ATTRIBUTE",
          "id": "{{authAttributeID}}"
        },
        "comparator": "EQUALS",
        "right": {
          "type": "CONSTANT",
          "value": "def"
        }
      }
    ]
  }
})
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}}/authorizationConditions/{{authConditionsID}}');
$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": "{{authConditionsID}}",\n    "version": "{{authConditionsVersionID}}",\n    "type": "CONDITION",\n    "name": "Has Balance",\n    "description": "Updated description.",\n    "parent": {\n        "id": "{{authParentID}}"\n    },\n    "condition": {\n        "type": "AND",\n        "conditions": [\n            {\n                "type": "COMPARISON",\n                "left": {\n                    "type": "ATTRIBUTE",\n                    "id": "{{authAttributeID}}"\n                },\n                "comparator": "EQUALS",\n                "right": {\n                    "type": "CONSTANT",\n                    "value": "def"\n                }\n            }\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}}/authorizationConditions/{{authConditionsID}}")

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": "{{authConditionsID}}",
  "version": "{{authConditionsVersionID}}",
  "type": "CONDITION",
  "name": "Has Balance",
  "description": "Updated description.",
  "parent": {
    "id": "{{authParentID}}"
  },
  "condition": {
    "type": "AND",
    "conditions": [
      {
        "type": "COMPARISON",
        "left": {
          "type": "ATTRIBUTE",
          "id": "{{authAttributeID}}"
        },
        "comparator": "EQUALS",
        "right": {
          "type": "CONSTANT",
          "value": "def"
        }
      }
    ]
  }
})

response = http.request(request)
puts response.read_body
let parameters = "{\n    \"id\": \"{{authConditionsID}}\",\n    \"version\": \"{{authConditionsVersionID}}\",\n    \"type\": \"CONDITION\",\n    \"name\": \"Has Balance\",\n    \"description\": \"Updated description.\",\n    \"parent\": {\n        \"id\": \"{{authParentID}}\"\n    },\n    \"condition\": {\n        \"type\": \"AND\",\n        \"conditions\": [\n            {\n                \"type\": \"COMPARISON\",\n                \"left\": {\n                    \"type\": \"ATTRIBUTE\",\n                    \"id\": \"{{authAttributeID}}\"\n                },\n                \"comparator\": \"EQUALS\",\n                \"right\": {\n                    \"type\": \"CONSTANT\",\n                    \"value\": \"def\"\n                }\n            }\n        ]\n    }\n}"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string: "{{apiPath}}/environments/{{envID}}/authorizationConditions/{{authConditionsID}}")!,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

{
    "type": "CONDITION",
    "_links": {
        "self": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/authorizationConditions/0d6da20c-a285-4b58-9122-76cd40e7fa40"
        },
        "environment": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
        },
        "parent": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/authorizationConditions/7dadff8c-795d-4a5a-95f8-7942d3e49e70"
        }
    },
    "id": "0d6da20c-a285-4b58-9122-76cd40e7fa40",
    "version": "147d474c-7f26-4955-a167-5376c13bf143",
    "name": "Has Balance",
    "fullName": "PingOne.API Access Management.Has Balance",
    "description": "Updated description.",
    "parent": {
        "id": "7dadff8c-795d-4a5a-95f8-7942d3e49e70"
    },
    "condition": {
        "type": "AND",
        "conditions": [
            {
                "type": "COMPARISON",
                "left": {
                    "type": "ATTRIBUTE",
                    "id": "700fa8e4-f6a1-4269-9de7-43074f49af4d"
                },
                "comparator": "EQUALS",
                "right": {
                    "type": "CONSTANT",
                    "value": "def"
                }
            }
        ]
    }
}