Read All MFA User Devices
GET {{apiPath}}/environments/{{envID}}/users/{{userID}}/devices
The GET {{apiPath}}/environments/{{envID}}/users/{{userID}}/devices operation returns a list of all device resources associated with the specified user.
If a device is inactive, the status property is set to ACTIVATION_REQUIRED and the _links property includes the activate link. The response shows data for an inactive device.
|
If devices are ordered, |
The results from this operation can be filtered and expanded. For more information, refer to Filtering result data and Expanding result data.
Query parameters
| Query parameter | Attributes (or allowed limits) |
|---|---|
|
* * |
|
N/A |
|
|
|
N/A |
Example Request
-
cURL
-
C#
-
Go
-
HTTP
-
Java
-
jQuery
-
NodeJS
-
Python
-
PHP
-
Ruby
-
Swift
curl --location --globoff '{{apiPath}}/environments/{{envID}}/users/{{userID}}/devices' \
--header 'Authorization: Bearer {{accessToken}}'
var options = new RestClientOptions("{{apiPath}}/environments/{{envID}}/users/{{userID}}/devices")
{
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}}/users/{{userID}}/devices"
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}}/users/{{userID}}/devices 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}}/users/{{userID}}/devices")
.method("GET", body)
.addHeader("Authorization", "Bearer {{accessToken}}")
.build();
Response response = client.newCall(request).execute();
var settings = {
"url": "{{apiPath}}/environments/{{envID}}/users/{{userID}}/devices",
"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}}/users/{{userID}}/devices',
'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}}/users/{{userID}}/devices"
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}}/users/{{userID}}/devices');
$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}}/users/{{userID}}/devices")
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}}/users/{{userID}}/devices")!,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.eu/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/b30ac647-e33e-464f-a6ea-0275082d4c26/devices"
},
"devices.reorder": {
"href": "https://api.pingone.eu/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/b30ac647-e33e-464f-a6ea-0275082d4c26/devices"
}
},
"_embedded": {
"devices": [
{
"_links": {
"self": {
"href": "https://api.pingone.eu/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/b30ac647-e33e-464f-a6ea-0275082d4c26/devices/e112c96d-d165-45c5-8061-87ff268fd520"
},
"environment": {
"href": "https://api.pingone.eu/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
},
"user": {
"href": "https://api.pingone.eu/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/b30ac647-e33e-464f-a6ea-0275082d4c26"
}
},
"id": "e112c96d-d165-45c5-8061-87ff268fd520",
"environment": {
"id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
},
"user": {
"id": "b30ac647-e33e-464f-a6ea-0275082d4c26"
},
"type": "SMS",
"lock": {
"status": "UNLOCKED"
},
"block": {
"status": "UNBLOCKED"
},
"status": "ACTIVE",
"createdAt": "2024-03-13T16:27:40.614Z",
"updatedAt": "2024-03-13T16:27:40.614Z",
"phone": "+972.547339044"
},
{
"_links": {
"self": {
"href": "https://api.pingone.eu/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/b30ac647-e33e-464f-a6ea-0275082d4c26/devices/f44fa23e-67db-493a-8278-570010dc57f0"
},
"environment": {
"href": "https://api.pingone.eu/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
},
"user": {
"href": "https://api.pingone.eu/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/b30ac647-e33e-464f-a6ea-0275082d4c26"
}
},
"id": "f44fa23e-67db-493a-8278-570010dc57f0",
"environment": {
"id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
},
"user": {
"id": "b30ac647-e33e-464f-a6ea-0275082d4c26"
},
"type": "FIDO2",
"lock": {
"status": "UNLOCKED"
},
"block": {
"status": "UNBLOCKED"
},
"status": "ACTIVE",
"attributes": {
"transports": [
"hybrid",
"internal"
],
"isCrossPlatform": false,
"isResidentKey": true
},
"createdAt": "2025-03-12T15:28:02.384Z",
"updatedAt": "2025-03-12T15:28:39.719Z",
"rp": {
"id": "pingone.eu",
"name": "pingone.eu"
},
"backup": {
"backupEligibility": true,
"backupState": true
},
"fidoRegistrationResponse": "{\"id\":\"eyinrLcvUJRv0IXwPciFWA\",\"type\":\"public-key\",\"rawId\":\"eyinrLcvUJRv0IXwPciFWA==\",\"authenticatorAttachment\":\"platform\",\"clientExtensionResults\":{\"credProps\":{\"rk\":true},\"hmacCreateSecret\":false},\"response\":{\"clientDataJSON\":\"eyJ0eXBlIjoid2ViYXV0aG4uY3JlYXRlIiwiY2hhbGxlbmdlIjoiWHpJWkRuMml1N3pGa0VNOGpWN1lSZER0S05jV1Zjckc5b3VLdnE4eGdfYyIsIm9yaWdpbiI6Imh0dHBzOi8vYXBwcy5waW5nb25lLmV1IiwiY3Jvc3NPcmlnaW4iOmZhbHNlfQ==\",\"attestationObject\":\"o2NmbXRkbm9uZWdhdHRTdG10oGhhdXRoRGF0YViU07Nim5zkTbGqg2RDZSPjc131ooiLJq+cojav4bK9k+VdAAAAAOqbjWZNAR0hPOS2tIy1ddQAEHsop6y3L1CUb9CF8D3IhVilAQIDJiABIVggAk+zus4pkW2/Z83qu11hxMR2txh8KoRNxdSE/MCVwrwiWCCBAGUiv7b7y7JQzOHeeYS70Vd7QfuL2y2vNkIa6QJYvA==\",\"transports\":[\"hybrid\",\"internal\"]}}",
"fidoDeviceMetadata": {
"mdsIdentifier": "ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4"
},
"displayName": "testAPILabelDisplayName"
},
{
"_links": {
"self": {
"href": "https://api.pingone.eu/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/b30ac647-e33e-464f-a6ea-0275082d4c26/devices/0d26cb0d-a938-46ca-986f-d55aa9bb12c6"
},
"environment": {
"href": "https://api.pingone.eu/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
},
"user": {
"href": "https://api.pingone.eu/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/b30ac647-e33e-464f-a6ea-0275082d4c26"
},
"device.activate": {
"href": "https://api.pingone.eu/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/b30ac647-e33e-464f-a6ea-0275082d4c26/devices/0d26cb0d-a938-46ca-986f-d55aa9bb12c6"
}
},
"id": "0d26cb0d-a938-46ca-986f-d55aa9bb12c6",
"environment": {
"id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
},
"user": {
"id": "b30ac647-e33e-464f-a6ea-0275082d4c26"
},
"type": "FIDO2",
"lock": {
"status": "UNLOCKED"
},
"block": {
"status": "UNBLOCKED"
},
"status": "ACTIVATION_REQUIRED",
"createdAt": "2025-03-06T15:15:04.907Z",
"updatedAt": "2025-03-06T15:15:04.907Z",
"rp": {
"id": "pingone.com",
"name": "PingOne"
},
"displayName": "testAPILabelDisplayName"
},
{
"_links": {
"self": {
"href": "https://api.pingone.eu/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/b30ac647-e33e-464f-a6ea-0275082d4c26/devices/44e3c0b5-fda7-4f48-86ec-457184437cd3"
},
"environment": {
"href": "https://api.pingone.eu/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
},
"user": {
"href": "https://api.pingone.eu/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/b30ac647-e33e-464f-a6ea-0275082d4c26"
},
"device.activate": {
"href": "https://api.pingone.eu/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/b30ac647-e33e-464f-a6ea-0275082d4c26/devices/44e3c0b5-fda7-4f48-86ec-457184437cd3"
}
},
"id": "44e3c0b5-fda7-4f48-86ec-457184437cd3",
"environment": {
"id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
},
"user": {
"id": "b30ac647-e33e-464f-a6ea-0275082d4c26"
},
"type": "TOTP",
"lock": {
"status": "UNLOCKED"
},
"block": {
"status": "UNBLOCKED"
},
"status": "ACTIVATION_REQUIRED",
"createdAt": "2024-09-01T16:23:09.870Z",
"updatedAt": "2024-09-01T16:24:40.936Z"
},
{
"_links": {
"self": {
"href": "https://api.pingone.eu/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/b30ac647-e33e-464f-a6ea-0275082d4c26/devices/a837a752-714f-4fcb-9963-902c9e31ce67"
},
"environment": {
"href": "https://api.pingone.eu/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
},
"user": {
"href": "https://api.pingone.eu/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/b30ac647-e33e-464f-a6ea-0275082d4c26"
}
},
"id": "a837a752-714f-4fcb-9963-902c9e31ce67",
"environment": {
"id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
},
"user": {
"id": "b30ac647-e33e-464f-a6ea-0275082d4c26"
},
"type": "BROWSER",
"nickname": "Chrome(133.0.0.0)",
"lock": {
"status": "UNLOCKED"
},
"block": {
"status": "UNBLOCKED"
},
"status": "ACTIVE",
"createdAt": "2025-02-04T13:09:18.795Z",
"updatedAt": "2025-02-18T12:09:24.364Z",
"session": {
"id": "e7992c24-0df6-4c71-ad38-6950f4829290"
},
"locale": "en-US",
"operatingSystem": {
"name": "Mac OS",
"version": "10.15.7"
},
"name": "Chrome",
"version": "133.0.0.0",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36",
"jsFingerprint": "01116803998751e1a1bac99e3d17cbaa",
"pushNotificationSupport": true,
"cookiesEnabled": true,
"screenResolution": {
"width": 3440,
"height": 1440
},
"lastRememberedAt": "2025-02-18T12:09:24.347Z"
}
]
},
"count": 5,
"size": 5
}