ChangeLog
The ChangeLog object
The ChangeLog object looks like this in JSON:
{
"object": "change_log",
"id": 946156314,
"owner_type_id": 8,
"owner_id": 1862,
"changed_by_id": 13154473,
"changed_by_ip": "10.0.0.13",
"changed_time": "2024-07-08T19:49:36+00:00",
"type_id": 127,
"action": "changed",
"changed_from": "External LMS",
"changed_to": "Internal LMS",
"sandbox": true
}
| Attribute | Required | Data Type |
|---|---|---|
| id | Yes | int |
| owner_type_id | Yes | int |
| owner_id | Yes | int |
| changed_by_id | No | int |
| changed_by_ip | Yes | text (50) |
| changed_time | Yes | datetime |
| type_id | Yes | int |
| action | No | enum (added, changed, deleted, printed, restored, cloned, requested) |
| changed_from | No | text |
| changed_to | No | text |
| sandbox | No | bool |
changelog
Example code to call this method:
curl "https://yourschool.populiweb.com/api2/changelog" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \
-X GET
-d '{
"filter": []
}' \
require 'httparty'
response = HTTParty.get(
'https://yourschool.populiweb.com/api2/changelog',
headers: {
'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
},
)
puts response.body
import requests
response = requests.get(
'https://yourschool.populiweb.com/api2/changelog',
headers={
'Authorization': 'Bearer YOUR_POPULI_API_KEY'
},
)
print(response.json())
using Newtonsoft.Json;
using RestSharp;
var client = new RestClient();
var request = new RestRequest(new Uri("https://yourschool.populiweb.com/api2/changelog"), Method.Get);
request.AddHeader("Authorization", "Bearer YOUR_POPULI_API_KEY");
var response = client.Execute(request);
var response_object = JsonConvert.DeserializeObject(response.Content);
Console.Write(response_object);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://yourschool.populiweb.com/api2/changelog');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_POPULI_API_KEY']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
$response = curl_exec($curl);
$response_decoded = json_decode($response);
var_dump($response_decoded);
Example response:
{
"object": "list",
"count": 106,
"results": 106,
"results_per_page": 200,
"pages": 1,
"page": 1,
"offset": 0,
"has_more": false,
"data": [
{
"object": "change_log",
"id": 946156420,
"owner_type_id": 1,
"owner_id": 16,
"changed_by_id": 22,
"changed_by_ip": "10.0.0.1",
"changed_time": "2026-07-25T16:24:12+00:00",
"type_id": 151,
"action": "added",
"changed_from": "Cool Kids Plan",
"changed_to": null,
"report_data": {
"changed_time_local": "2026-07-25 09:24:12",
"owner_type": "PERSON",
"change_type": "DEFAULT_TUITION_SCHEDULE",
"changed_by_id": 22,
"changed_by_name": "API Dude"
}
}
],
"sandbox": true
}
Results are limited to changes in the past 30 days.
HTTP Request
GET /changelog
Parameters
| Name | Required | Data Type | Description |
|---|---|---|---|
| filter | No | mixed | See available filter conditions |
| page | No | int | The page of results to return if more than 200 records are found. |
Filter Condition Parameters
These conditions can be used to narrow the results returned.
| Name | Type |
|---|---|
| changed_by | object_id |
| affected | changelog_affected |
| affected_type | choice |
| type | choice |
| action | enum |
Permissions
Only keys that have been granted Populi Account Administrator permissions may call this method.
This is a heavy call. For performance reasons, only one heavy call may be made at a time.
Run LMS sync
curl "https://yourschool.populiweb.com/api2/lmssync/run" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \
-X GET
require 'httparty'
response = HTTParty.get(
'https://yourschool.populiweb.com/api2/lmssync/run',
headers: {
'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
},
)
puts response.body
import requests
response = requests.get(
'https://yourschool.populiweb.com/api2/lmssync/run',
headers={
'Authorization': 'Bearer YOUR_POPULI_API_KEY'
},
)
print(response.json())
using Newtonsoft.Json;
using RestSharp;
var client = new RestClient();
var request = new RestRequest(new Uri("https://yourschool.populiweb.com/api2/lmssync/run"), Method.Get);
request.AddHeader("Authorization", "Bearer YOUR_POPULI_API_KEY");
var response = client.Execute(request);
var response_object = JsonConvert.DeserializeObject(response.Content);
Console.Write(response_object);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://yourschool.populiweb.com/api2/lmssync/run');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_POPULI_API_KEY']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
$response = curl_exec($curl);
$response_decoded = json_decode($response);
var_dump($response_decoded);
Example response:
{}
Begin a sync operation between Populi and an outside LMS (e.g. Canvas), if you have an integration configured.
HTTP Request
GET /lmssync/run
Parameters
| Name | Required | Data Type | Description |
|---|---|---|---|
| direction | No | enum (from_populi, to_populi, both) | Default is both |
Permissions
Only keys that have been granted Populi Account Administrator permissions may call this method.
logins
Example code to call this method:
curl "https://yourschool.populiweb.com/api2/logins" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \
-X GET
-d '{
"filter": []
}' \
require 'httparty'
response = HTTParty.get(
'https://yourschool.populiweb.com/api2/logins',
headers: {
'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
},
)
puts response.body
import requests
response = requests.get(
'https://yourschool.populiweb.com/api2/logins',
headers={
'Authorization': 'Bearer YOUR_POPULI_API_KEY'
},
)
print(response.json())
using Newtonsoft.Json;
using RestSharp;
var client = new RestClient();
var request = new RestRequest(new Uri("https://yourschool.populiweb.com/api2/logins"), Method.Get);
request.AddHeader("Authorization", "Bearer YOUR_POPULI_API_KEY");
var response = client.Execute(request);
var response_object = JsonConvert.DeserializeObject(response.Content);
Console.Write(response_object);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://yourschool.populiweb.com/api2/logins');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_POPULI_API_KEY']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
$response = curl_exec($curl);
$response_decoded = json_decode($response);
var_dump($response_decoded);
Example response:
{
"object": "list",
"count": 0,
"results": 0,
"results_per_page": 200,
"pages": 0,
"page": 0,
"offset": 0,
"has_more": false,
"data": [],
"sandbox": true
}
Results are limited to logins in the past 12 months. See user_username field for the User's username. The username field will only have a value for unrecognized failed logins.
HTTP Request
GET /logins
Parameters
| Name | Required | Data Type | Description |
|---|---|---|---|
| filter | No | mixed | See available filter conditions |
| page | No | int | The page of results to return if more than 200 records are found. |
Filter Condition Parameters
These conditions can be used to narrow the results returned.
| Name | Type |
|---|---|
| user | object_id |
| username | text |
| partial_login | bool |
| outcome | enum |
| fail_reason | choice |
| partial_login_reason | choice |
| type | choice |
| ip_address | text |
Permissions
Only keys that have been granted Populi Account Administrator permissions may call this method.