PingOne Platform APIs - Early Access

Create Authorization Attribute

 

POST {{apiPath}}/environments/{{envID}}/authorizationAttributes

The POST /environments/{{envID}}/authorizationAttributes` request creates a new authorization attribute.

Request Model

For property descriptions, refer to Authorization attributes data model

Property Type? Required?

defaultValue

String

Optional

description

String

Optional

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

Headers

Authorization      Bearer {{accessToken}}

Content-Type      application/json

Body

raw ( application/json )

{
    "name": "Remote API Server 1",
    "type": "ATTRIBUTE",
    "description": "Information about the 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 '{{apiPath}}/environments/{{envID}}/authorizationAttributes' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data '{
    "name": "Remote API Server 1",
    "type": "ATTRIBUTE",
    "description": "Information about the 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")
{
  MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("", Method.Post);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer {{accessToken}}");
var body = @"{" + "\n" +
@"    ""name"": ""Remote API Server 1""," + "\n" +
@"    ""type"": ""ATTRIBUTE""," + "\n" +
@"    ""description"": ""Information about the 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"
  method := "POST"

  payload := strings.NewReader(`{
    "name": "Remote API Server 1",
    "type": "ATTRIBUTE",
    "description": "Information about the 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))
}
POST /environments/{{envID}}/authorizationAttributes HTTP/1.1
Host: {{apiPath}}
Content-Type: application/json
Authorization: Bearer {{accessToken}}

{
    "name": "Remote API Server 1",
    "type": "ATTRIBUTE",
    "description": "Information about the 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    \"name\": \"Remote API Server 1\",\n    \"type\": \"ATTRIBUTE\",\n    \"description\": \"Information about the 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")
  .method("POST", body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer {{accessToken}}")
  .build();
Response response = client.newCall(request).execute();
var settings = {
  "url": "{{apiPath}}/environments/{{envID}}/authorizationAttributes",
  "method": "POST",
  "timeout": 0,
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer {{accessToken}}"
  },
  "data": JSON.stringify({
    "name": "Remote API Server 1",
    "type": "ATTRIBUTE",
    "description": "Information about the 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': 'POST',
  'url': '{{apiPath}}/environments/{{envID}}/authorizationAttributes',
  'headers': {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer {{accessToken}}'
  },
  body: JSON.stringify({
    "name": "Remote API Server 1",
    "type": "ATTRIBUTE",
    "description": "Information about the 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"

payload = json.dumps({
  "name": "Remote API Server 1",
  "type": "ATTRIBUTE",
  "description": "Information about the 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("POST", url, headers=headers, data=payload)

print(response.text)
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('{{apiPath}}/environments/{{envID}}/authorizationAttributes');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setHeader(array(
  'Content-Type' => 'application/json',
  'Authorization' => 'Bearer {{accessToken}}'
));
$request->setBody('{\n    "name": "Remote API Server 1",\n    "type": "ATTRIBUTE",\n    "description": "Information about the 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")

http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer {{accessToken}}"
request.body = JSON.dump({
  "name": "Remote API Server 1",
  "type": "ATTRIBUTE",
  "description": "Information about the 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    \"name\": \"Remote API Server 1\",\n    \"type\": \"ATTRIBUTE\",\n    \"description\": \"Information about the 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")!,timeoutInterval: Double.infinity)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("Bearer {{accessToken}}", forHTTPHeaderField: "Authorization")

request.httpMethod = "POST"
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

201 Created

{
    "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": "9962fb07-acf9-4d2a-83ab-733548a574e4",
    "name": "Remote API Server 1",
    "fullName": "PingOne.API Access Management.Remote API Server 5.Remote API Server 1",
    "description": "Information about the API server backup that was matched to an HTTP request/response.",
    "parent": {
        "id": "212ff558-dea2-4e0a-be00-91d7707fbad6"
    },
    "resolvers": [
        {
            "type": "REQUEST"
        }
    ],
    "valueType": {
        "type": "JSON"
    }
}