PingOne Platform APIs - Early Access

Update Authorization Attribute

 

PUT {{apiPath}}/environments/{{envID}}/authorizationAttributes/{{authAttributeID}}

The PUT /environments/{{envID}}/authorizationAttributes/{{authAttributeID}}` request updates the authorization attribute specified by its ID in the request URL.

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

Request Model

For property descriptions, refer to Authorization attributes data model

Property Type? Required?

defaultValue

String

Optional

description

String

Optional

id

String

Required

managedEntity

Object

Optional

name

String

Required

parent

Object

Optional

parent.id

String

Optional

processor

Object

Optional

processor.type

String

Optional

processor.expression

String

Optional

processor.valueType

Object

Optional

processor.valueType.type

String

Optional

repetitionSource

Object

Optional

resolvers

Array

Optional

resolvers.type

String

Optional

type

String

Required

valueType

Object

Required

version

String

Required

Headers

Authorization      Bearer {{accessToken}}

Content-Type      application/json

Body

raw ( application/json )

{
    "id": "{{authAttributeID}}",
    "version": "{{authAttributeVersionID}}",
    "name": "Remote API Server 1",
    "type": "ATTRIBUTE",
    "description": "Information about the redundant API server backup that was matched to an HTTP request/response.",
    "parent": {
        "id": "{{authParentID}}"
    },
    "resolvers": [
        {
            "type": "REQUEST"
        }
    ],
    "valueType": {
        "type": "JSON"
    }
}

Example Request

  • cURL

  • C#

  • Go

  • HTTP

  • Java

  • jQuery

  • NodeJS

  • Python

  • PHP

  • Ruby

  • Swift

curl --location --globoff --request PUT '{{apiPath}}/environments/{{envID}}/authorizationAttributes/{{authAttributeID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data '{
    "id": "{{authAttributeID}}",
    "version": "{{authAttributeVersionID}}",
    "name": "Remote API Server 1",
    "type": "ATTRIBUTE",
    "description": "Information about the redundant API server backup that was matched to an HTTP request/response.",
    "parent": {
        "id": "{{authParentID}}"
    },
    "resolvers": [
        {
            "type": "REQUEST"
        }
    ],
    "valueType": {
        "type": "JSON"
    }
}'
var options = new RestClientOptions("{{apiPath}}/environments/{{envID}}/authorizationAttributes/{{authAttributeID}}")
{
  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"": ""{{authAttributeID}}""," + "\n" +
@"    ""version"": ""{{authAttributeVersionID}}""," + "\n" +
@"    ""name"": ""Remote API Server 1""," + "\n" +
@"    ""type"": ""ATTRIBUTE""," + "\n" +
@"    ""description"": ""Information about the redundant API server backup that was matched to an HTTP request/response.""," + "\n" +
@"    ""parent"": {" + "\n" +
@"        ""id"": ""{{authParentID}}""" + "\n" +
@"    }," + "\n" +
@"    ""resolvers"": [" + "\n" +
@"        {" + "\n" +
@"            ""type"": ""REQUEST""" + "\n" +
@"        }" + "\n" +
@"    ]," + "\n" +
@"    ""valueType"": {" + "\n" +
@"        ""type"": ""JSON""" + "\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}}/authorizationAttributes/{{authAttributeID}}"
  method := "PUT"

  payload := strings.NewReader(`{
    "id": "{{authAttributeID}}",
    "version": "{{authAttributeVersionID}}",
    "name": "Remote API Server 1",
    "type": "ATTRIBUTE",
    "description": "Information about the redundant API server backup that was matched to an HTTP request/response.",
    "parent": {
        "id": "{{authParentID}}"
    },
    "resolvers": [
        {
            "type": "REQUEST"
        }
    ],
    "valueType": {
        "type": "JSON"
    }
}`)

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

{
    "id": "{{authAttributeID}}",
    "version": "{{authAttributeVersionID}}",
    "name": "Remote API Server 1",
    "type": "ATTRIBUTE",
    "description": "Information about the redundant API server backup that was matched to an HTTP request/response.",
    "parent": {
        "id": "{{authParentID}}"
    },
    "resolvers": [
        {
            "type": "REQUEST"
        }
    ],
    "valueType": {
        "type": "JSON"
    }
}
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n    \"id\": \"{{authAttributeID}}\",\n    \"version\": \"{{authAttributeVersionID}}\",\n    \"name\": \"Remote API Server 1\",\n    \"type\": \"ATTRIBUTE\",\n    \"description\": \"Information about the redundant API server backup that was matched to an HTTP request/response.\",\n    \"parent\": {\n        \"id\": \"{{authParentID}}\"\n    },\n    \"resolvers\": [\n        {\n            \"type\": \"REQUEST\"\n        }\n    ],\n    \"valueType\": {\n        \"type\": \"JSON\"\n    }\n}");
Request request = new Request.Builder()
  .url("{{apiPath}}/environments/{{envID}}/authorizationAttributes/{{authAttributeID}}")
  .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}}/authorizationAttributes/{{authAttributeID}}",
  "method": "PUT",
  "timeout": 0,
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer {{accessToken}}"
  },
  "data": JSON.stringify({
    "id": "{{authAttributeID}}",
    "version": "{{authAttributeVersionID}}",
    "name": "Remote API Server 1",
    "type": "ATTRIBUTE",
    "description": "Information about the redundant API server backup that was matched to an HTTP request/response.",
    "parent": {
      "id": "{{authParentID}}"
    },
    "resolvers": [
      {
        "type": "REQUEST"
      }
    ],
    "valueType": {
      "type": "JSON"
    }
  }),
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
var request = require('request');
var options = {
  'method': 'PUT',
  'url': '{{apiPath}}/environments/{{envID}}/authorizationAttributes/{{authAttributeID}}',
  'headers': {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer {{accessToken}}'
  },
  body: JSON.stringify({
    "id": "{{authAttributeID}}",
    "version": "{{authAttributeVersionID}}",
    "name": "Remote API Server 1",
    "type": "ATTRIBUTE",
    "description": "Information about the redundant API server backup that was matched to an HTTP request/response.",
    "parent": {
      "id": "{{authParentID}}"
    },
    "resolvers": [
      {
        "type": "REQUEST"
      }
    ],
    "valueType": {
      "type": "JSON"
    }
  })

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

url = "{{apiPath}}/environments/{{envID}}/authorizationAttributes/{{authAttributeID}}"

payload = json.dumps({
  "id": "{{authAttributeID}}",
  "version": "{{authAttributeVersionID}}",
  "name": "Remote API Server 1",
  "type": "ATTRIBUTE",
  "description": "Information about the redundant API server backup that was matched to an HTTP request/response.",
  "parent": {
    "id": "{{authParentID}}"
  },
  "resolvers": [
    {
      "type": "REQUEST"
    }
  ],
  "valueType": {
    "type": "JSON"
  }
})
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}}/authorizationAttributes/{{authAttributeID}}');
$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": "{{authAttributeID}}",\n    "version": "{{authAttributeVersionID}}",\n    "name": "Remote API Server 1",\n    "type": "ATTRIBUTE",\n    "description": "Information about the redundant API server backup that was matched to an HTTP request/response.",\n    "parent": {\n        "id": "{{authParentID}}"\n    },\n    "resolvers": [\n        {\n            "type": "REQUEST"\n        }\n    ],\n    "valueType": {\n        "type": "JSON"\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}}/authorizationAttributes/{{authAttributeID}}")

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": "{{authAttributeID}}",
  "version": "{{authAttributeVersionID}}",
  "name": "Remote API Server 1",
  "type": "ATTRIBUTE",
  "description": "Information about the redundant API server backup that was matched to an HTTP request/response.",
  "parent": {
    "id": "{{authParentID}}"
  },
  "resolvers": [
    {
      "type": "REQUEST"
    }
  ],
  "valueType": {
    "type": "JSON"
  }
})

response = http.request(request)
puts response.read_body
let parameters = "{\n    \"id\": \"{{authAttributeID}}\",\n    \"version\": \"{{authAttributeVersionID}}\",\n    \"name\": \"Remote API Server 1\",\n    \"type\": \"ATTRIBUTE\",\n    \"description\": \"Information about the redundant API server backup that was matched to an HTTP request/response.\",\n    \"parent\": {\n        \"id\": \"{{authParentID}}\"\n    },\n    \"resolvers\": [\n        {\n            \"type\": \"REQUEST\"\n        }\n    ],\n    \"valueType\": {\n        \"type\": \"JSON\"\n    }\n}"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string: "{{apiPath}}/environments/{{envID}}/authorizationAttributes/{{authAttributeID}}")!,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": "ATTRIBUTE",
    "_links": {
        "self": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/authorizationAttributes/746aba7f-2daa-4bf4-8597-3014200a26cb"
        },
        "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/authorizationAttributes/212ff558-dea2-4e0a-be00-91d7707fbad6"
        }
    },
    "id": "746aba7f-2daa-4bf4-8597-3014200a26cb",
    "version": "bf60fdae-5087-4c61-8dd6-861040c125b5",
    "name": "Remote API Server 1",
    "fullName": "PingOne.API Access Management.Remote API Server 5.Remote API Server 1",
    "description": "Information about the redundant API server backup that was matched to an HTTP request/response.",
    "parent": {
        "id": "212ff558-dea2-4e0a-be00-91d7707fbad6"
    },
    "resolvers": [
        {
            "type": "REQUEST"
        }
    ],
    "valueType": {
        "type": "JSON"
    }
}