PingOne Platform APIs

Step 3: Get all OIDC Scopes

   

GET {{apiPath}}/environments/{{envID}}/resources/{{openidResourceID}}/scopes

In this step, you get a list of all scopes, and from that list you must reference the scope IDs that you want to apply to the resource access grant in Step 4. The GET /environments/{{envID}}/resources/{{resourceID}}/scopes operation returns information about the scopes associated with the resource entity ID specified in the request URL.

The response data shows the scopes and their IDs. At a minimum, the resource application grant for this activity must have at least one openid scope.

There are several scopes returned by this GET request. In this activity, you need only the profile scope.

Headers

Authorization      Bearer {{accessToken}}

Example Request

  • cURL

  • C#

  • Go

  • HTTP

  • Java

  • jQuery

  • NodeJS

  • Python

  • PHP

  • Ruby

  • Swift

curl --location --globoff '{{apiPath}}/environments/{{envID}}/resources/{{openidResourceID}}/scopes' \
--header 'Authorization: Bearer {{accessToken}}'
var options = new RestClientOptions("{{apiPath}}/environments/{{envID}}/resources/{{openidResourceID}}/scopes")
{
  MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("", Method.Get);
request.AddHeader("Authorization", "Bearer {{accessToken}}");
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);
package main

import (
  "fmt"
  "net/http"
  "io"
)

func main() {

  url := "{{apiPath}}/environments/{{envID}}/resources/{{openidResourceID}}/scopes"
  method := "GET"

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

  if err != nil {
    fmt.Println(err)
    return
  }
  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))
}
GET /environments/{{envID}}/resources/{{openidResourceID}}/scopes HTTP/1.1
Host: {{apiPath}}
Authorization: Bearer {{accessToken}}
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("{{apiPath}}/environments/{{envID}}/resources/{{openidResourceID}}/scopes")
  .method("GET", body)
  .addHeader("Authorization", "Bearer {{accessToken}}")
  .build();
Response response = client.newCall(request).execute();
var settings = {
  "url": "{{apiPath}}/environments/{{envID}}/resources/{{openidResourceID}}/scopes",
  "method": "GET",
  "timeout": 0,
  "headers": {
    "Authorization": "Bearer {{accessToken}}"
  },
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
var request = require('request');
var options = {
  'method': 'GET',
  'url': '{{apiPath}}/environments/{{envID}}/resources/{{openidResourceID}}/scopes',
  'headers': {
    'Authorization': 'Bearer {{accessToken}}'
  }
};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});
import requests

url = "{{apiPath}}/environments/{{envID}}/resources/{{openidResourceID}}/scopes"

payload = {}
headers = {
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('{{apiPath}}/environments/{{envID}}/resources/{{openidResourceID}}/scopes');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setHeader(array(
  'Authorization' => 'Bearer {{accessToken}}'
));
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 "net/http"

url = URI("{{apiPath}}/environments/{{envID}}/resources/{{openidResourceID}}/scopes")

http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer {{accessToken}}"

response = http.request(request)
puts response.read_body
var request = URLRequest(url: URL(string: "{{apiPath}}/environments/{{envID}}/resources/{{openidResourceID}}/scopes")!,timeoutInterval: Double.infinity)
request.addValue("Bearer {{accessToken}}", forHTTPHeaderField: "Authorization")

request.httpMethod = "GET"

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/resources/71ff29d5-c666-4348-b54e-c5b64f0a80b8/scopes"
        }
    },
    "_embedded": {
        "scopes": [
            {
                "_links": {
                    "self": {
                        "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/resources/71ff29d5-c666-4348-b54e-c5b64f0a80b8/scopes/a7952e0a-57f2-4922-85cc-7e791e2e70b1"
                    },
                    "resource": {
                        "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/resources/71ff29d5-c666-4348-b54e-c5b64f0a80b8"
                    },
                    "environment": {
                        "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
                    }
                },
                "id": "a7952e0a-57f2-4922-85cc-7e791e2e70b1",
                "environment": {
                    "id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
                },
                "name": "profile",
                "description": "Access to the default profile Claims: name, family_name, given_name, middle_name, nickname, preferred_username, profile, picture, website, gender, birthdate, zoneinfo, locale, and updated_at",
                "resource": {
                    "id": "71ff29d5-c666-4348-b54e-c5b64f0a80b8"
                }
            },
            {
                "_links": {
                    "self": {
                        "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/resources/71ff29d5-c666-4348-b54e-c5b64f0a80b8/scopes/54e316b3-4e9f-46dd-bdec-581de61e28e7"
                    },
                    "resource": {
                        "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/resources/71ff29d5-c666-4348-b54e-c5b64f0a80b8"
                    },
                    "environment": {
                        "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
                    }
                },
                "id": "54e316b3-4e9f-46dd-bdec-581de61e28e7",
                "environment": {
                    "id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
                },
                "name": "email",
                "description": "Access to the email and email_verified Claims",
                "resource": {
                    "id": "71ff29d5-c666-4348-b54e-c5b64f0a80b8"
                }
            },
            {
                "_links": {
                    "self": {
                        "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/resources/71ff29d5-c666-4348-b54e-c5b64f0a80b8/scopes/276be0bc-e070-45e5-8980-17fa0ac759dd"
                    },
                    "resource": {
                        "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/resources/71ff29d5-c666-4348-b54e-c5b64f0a80b8"
                    },
                    "environment": {
                        "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
                    }
                },
                "id": "276be0bc-e070-45e5-8980-17fa0ac759dd",
                "environment": {
                    "id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
                },
                "name": "phone",
                "description": "Access to the phone_number and phone_number_verified Claims",
                "resource": {
                    "id": "71ff29d5-c666-4348-b54e-c5b64f0a80b8"
                }
            },
            {
                "_links": {
                    "self": {
                        "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/resources/71ff29d5-c666-4348-b54e-c5b64f0a80b8/scopes/016de9d5-0399-4537-b0bb-916c016dd708"
                    },
                    "resource": {
                        "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/resources/71ff29d5-c666-4348-b54e-c5b64f0a80b8"
                    },
                    "environment": {
                        "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
                    }
                },
                "id": "016de9d5-0399-4537-b0bb-916c016dd708",
                "environment": {
                    "id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
                },
                "name": "address",
                "description": "Access to the address Claim",
                "resource": {
                    "id": "71ff29d5-c666-4348-b54e-c5b64f0a80b8"
                }
            }
        ]
    },
    "count": 4,
    "size": 4
}