PingOne Platform APIs

Read User Activities

   

GET {{apiPath}}/environments/{{envID}}/userActivities

The GET {{apiPath}}/environments/{{envID}}/userActivities operation returns the counts for successful and failed sign-on actions as well as a count for password resets over a designated period of time.

If a startDate and endDate filtering parameter is not specified, the request returns all user activity information for the past 30 days.

To fine-tune the result data, you can specify a SCIM filtering expression to designate specific date ranges and sample sizes. In the sample, the SCIM filter (URL-encoded) returns data showing the user-activities that occurred from a startDate of "2018-02-17" to an endDate of "2018-02-23".

If your startDate and endDate filter values are less than or equal to five days, then the result data defaults to a sampleSize value of HOURS. The response data shows the collected event list for each hour interval.

Query parameters
Parameter Description

filter

Filters results for the specified date range. Both startDate and endDate values must be specified. (ISO 8601 format) Refer to filtering details below.

sampleSize

Determines how the data is sized when returned. This can be HOUR, DAY, WEEK. The default value is determined based on the date range used. If the date range is less than or equal to 5 days, HOUR is used. If the date range is greater than 5 or less than or equal to 60, DAY is used. If the date range is greater than 60, WEEK is used.

Filtering data

For large collections, filtering expressions can be added to the request URL to limit the response data by date. For example, this SCIM filter returns user activity data from the start date of "2019-01-01" and an end date of "2019-02-31":

https://api.pingone.com/v1/environments/{{envID}}/userActivities?filter=startDate eq "2019-01-01T00:00:00Z" AND EndDate eq "2019-02-31T23:59:00Z"

These SCIM operators are supported in the filtering expression:

  • eq (equals)

    The attribute and operator values must be identical.

These SCIM operators are not supported: gt (greater than), lt (less than), ge (greater than or equal to), le (less than or equal to), in (includes), ne (not equal), co (contains), sw (starts with), ew (ends with), pr (present, is a non-empty or non-null value), not (logical NOT), or (logical OR), and (logical AND).

For more information about SCIM syntax and operators, refer to Conventions.

Headers

Authorization      Bearer {{accessToken}}

Example Request

  • cURL

  • C#

  • Go

  • HTTP

  • Java

  • jQuery

  • NodeJS

  • Python

  • PHP

  • Ruby

  • Swift

curl --location --globoff '{{apiPath}}/environments/{{envID}}/userActivities' \
--header 'Authorization: Bearer {{accessToken}}'
var options = new RestClientOptions("{{apiPath}}/environments/{{envID}}/userActivities")
{
  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}}/userActivities"
  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}}/userActivities 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}}/userActivities")
  .method("GET", body)
  .addHeader("Authorization", "Bearer {{accessToken}}")
  .build();
Response response = client.newCall(request).execute();
var settings = {
  "url": "{{apiPath}}/environments/{{envID}}/userActivities",
  "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}}/userActivities',
  '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}}/userActivities"

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}}/userActivities');
$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}}/userActivities")

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}}/userActivities")!,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/userActivities"
        }
    },
    "_embedded": {
        "userActivities": [
            {
                "startDate": "2022-05-17T00:00:00Z",
                "endDate": "2022-05-18T00:00:00Z",
                "userSignOns": {
                    "successes": 33,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-05-18T00:00:00Z",
                "endDate": "2022-05-19T00:00:00Z",
                "userSignOns": {
                    "successes": 6,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-05-19T00:00:00Z",
                "endDate": "2022-05-20T00:00:00Z",
                "userSignOns": {
                    "successes": 3,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-05-20T00:00:00Z",
                "endDate": "2022-05-21T00:00:00Z",
                "userSignOns": {
                    "successes": 22,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-05-21T00:00:00Z",
                "endDate": "2022-05-22T00:00:00Z",
                "userSignOns": {
                    "successes": 0,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-05-22T00:00:00Z",
                "endDate": "2022-05-23T00:00:00Z",
                "userSignOns": {
                    "successes": 0,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-05-23T00:00:00Z",
                "endDate": "2022-05-24T00:00:00Z",
                "userSignOns": {
                    "successes": 0,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-05-24T00:00:00Z",
                "endDate": "2022-05-25T00:00:00Z",
                "userSignOns": {
                    "successes": 23,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-05-25T00:00:00Z",
                "endDate": "2022-05-26T00:00:00Z",
                "userSignOns": {
                    "successes": 4,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-05-26T00:00:00Z",
                "endDate": "2022-05-27T00:00:00Z",
                "userSignOns": {
                    "successes": 5,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-05-27T00:00:00Z",
                "endDate": "2022-05-28T00:00:00Z",
                "userSignOns": {
                    "successes": 6,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-05-28T00:00:00Z",
                "endDate": "2022-05-29T00:00:00Z",
                "userSignOns": {
                    "successes": 0,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-05-29T00:00:00Z",
                "endDate": "2022-05-30T00:00:00Z",
                "userSignOns": {
                    "successes": 0,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-05-30T00:00:00Z",
                "endDate": "2022-05-31T00:00:00Z",
                "userSignOns": {
                    "successes": 5,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-05-31T00:00:00Z",
                "endDate": "2022-06-01T00:00:00Z",
                "userSignOns": {
                    "successes": 3,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-06-01T00:00:00Z",
                "endDate": "2022-06-02T00:00:00Z",
                "userSignOns": {
                    "successes": 6,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-06-02T00:00:00Z",
                "endDate": "2022-06-03T00:00:00Z",
                "userSignOns": {
                    "successes": 3,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-06-03T00:00:00Z",
                "endDate": "2022-06-04T00:00:00Z",
                "userSignOns": {
                    "successes": 4,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-06-04T00:00:00Z",
                "endDate": "2022-06-05T00:00:00Z",
                "userSignOns": {
                    "successes": 0,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-06-05T00:00:00Z",
                "endDate": "2022-06-06T00:00:00Z",
                "userSignOns": {
                    "successes": 0,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-06-06T00:00:00Z",
                "endDate": "2022-06-07T00:00:00Z",
                "userSignOns": {
                    "successes": 8,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-06-07T00:00:00Z",
                "endDate": "2022-06-08T00:00:00Z",
                "userSignOns": {
                    "successes": 6,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-06-08T00:00:00Z",
                "endDate": "2022-06-09T00:00:00Z",
                "userSignOns": {
                    "successes": 8,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-06-09T00:00:00Z",
                "endDate": "2022-06-10T00:00:00Z",
                "userSignOns": {
                    "successes": 13,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-06-10T00:00:00Z",
                "endDate": "2022-06-11T00:00:00Z",
                "userSignOns": {
                    "successes": 22,
                    "failures": 0
                },
                "passwordResets": 2
            },
            {
                "startDate": "2022-06-11T00:00:00Z",
                "endDate": "2022-06-12T00:00:00Z",
                "userSignOns": {
                    "successes": 0,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-06-12T00:00:00Z",
                "endDate": "2022-06-13T00:00:00Z",
                "userSignOns": {
                    "successes": 0,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-06-13T00:00:00Z",
                "endDate": "2022-06-14T00:00:00Z",
                "userSignOns": {
                    "successes": 5,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-06-14T00:00:00Z",
                "endDate": "2022-06-15T00:00:00Z",
                "userSignOns": {
                    "successes": 4,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-06-15T00:00:00Z",
                "endDate": "2022-06-16T00:00:00Z",
                "userSignOns": {
                    "successes": 24,
                    "failures": 0
                },
                "passwordResets": 0
            }
        ]
    }
}

Example Response

200 OK

{
    "_links": {
        "self": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/userActivities?filter=startDate%20eq%20%222022-05-17T09%3A10%3A12-04%3A00%22%20and%20endDate%20eq%20%222022-05-23T09%3A10%3A12-04%3A00%22"
        }
    },
    "_embedded": {
        "userActivities": [
            {
                "startDate": "2022-05-18T00:00:00-04:00",
                "endDate": "2022-05-19T00:00:00-04:00",
                "userSignOns": {
                    "successes": 6,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-05-19T00:00:00-04:00",
                "endDate": "2022-05-20T00:00:00-04:00",
                "userSignOns": {
                    "successes": 3,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-05-20T00:00:00-04:00",
                "endDate": "2022-05-21T00:00:00-04:00",
                "userSignOns": {
                    "successes": 22,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-05-21T00:00:00-04:00",
                "endDate": "2022-05-22T00:00:00-04:00",
                "userSignOns": {
                    "successes": 0,
                    "failures": 0
                },
                "passwordResets": 0
            },
            {
                "startDate": "2022-05-22T00:00:00-04:00",
                "endDate": "2022-05-23T00:00:00-04:00",
                "userSignOns": {
                    "successes": 0,
                    "failures": 0
                },
                "passwordResets": 0
            }
        ]
    }
}