NAV
shell ruby python csharp php

Program

The Program object

The Program object looks like this in JSON:

{
    "object": "program",
    "id": 2,
    "name": "Certificate",
    "units": "credits",
    "graduate_level": false,
    "default": 1,
    "default_tuition_schedule_id": null,
    "default_enrollment_agreement_page_layout_id": null,
    "grants_academic_credit": true,
    "standings_include_clinical_hours": false,
    "continuous_enrollment": false,
    "payment_period_behavior": "none",
    "payment_period_default_length": null,
    "payment_period_max_length": null,
    "payment_period_max_units": null,
    "hidden_from_students": false,
    "external_id": "C1",
    "status": "active",
    "sandbox": true
}
Attribute Required Data Type
id Yes int
name Yes text (255)
units Yes enum (credits, hours)
graduate_level Yes bool
default Yes int
default_tuition_schedule_id No int
default_enrollment_agreement_page_layout_id No int
grants_academic_credit Yes bool
standings_include_clinical_hours Yes bool
continuous_enrollment Yes bool
payment_period_behavior No enum (none, new, extend, manual)
payment_period_default_length No int
payment_period_max_length No int
payment_period_max_units No int
hidden_from_students Yes bool
external_id No text (100)
status Yes enum (active, retired, deleted)
sandbox No bool

index

Example code to call this method:

curl "https://yourschool.populiweb.com/api2/programs" \
-H "Content-Type: application/json" \ 
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \ 
-X GET
require 'httparty'
response = HTTParty.get(
 'https://yourschool.populiweb.com/api2/programs',
 headers: {
  'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
 },
)
puts response.body
import requests
response = requests.get(
 'https://yourschool.populiweb.com/api2/programs',
 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/programs"), 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/programs');
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": 3,
    "results": 3,
    "results_per_page": null,
    "pages": 1,
    "page": 1,
    "offset": 0,
    "has_more": false,
    "data": [
        {
            "object": "program",
            "id": 2,
            "name": "Certificate",
            "units": "credits",
            "graduate_level": false,
            "default": 1,
            "default_tuition_schedule_id": null,
            "default_enrollment_agreement_page_layout_id": null,
            "grants_academic_credit": true,
            "standings_include_clinical_hours": false,
            "continuous_enrollment": false,
            "payment_period_behavior": "none",
            "payment_period_default_length": null,
            "payment_period_max_length": null,
            "payment_period_max_units": null,
            "hidden_from_students": false,
            "external_id": "C1",
            "status": "active"
        }
    ],
    "sandbox": true
}

Retrieves all Program objects.

HTTP Request

GET /programs

Parameters

None

Permissions

One of the following roles is required to call this method:

show

Example code to call this method:

curl "https://yourschool.populiweb.com/api2/programs/(program)" \
-H "Content-Type: application/json" \ 
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \ 
-X GET
require 'httparty'
response = HTTParty.get(
 'https://yourschool.populiweb.com/api2/programs/(program)',
 headers: {
  'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
 },
)
puts response.body
import requests
response = requests.get(
 'https://yourschool.populiweb.com/api2/programs/(program)',
 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/programs/(program)"), 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/programs/(program)');
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": "program",
    "id": 2,
    "name": "Certificate",
    "units": "credits",
    "graduate_level": false,
    "default": 1,
    "default_tuition_schedule_id": null,
    "default_enrollment_agreement_page_layout_id": null,
    "grants_academic_credit": true,
    "standings_include_clinical_hours": false,
    "continuous_enrollment": false,
    "payment_period_behavior": "none",
    "payment_period_default_length": null,
    "payment_period_max_length": null,
    "payment_period_max_units": null,
    "hidden_from_students": false,
    "external_id": "C1",
    "status": "active",
    "sandbox": true
}

Retrieves a specific Program object.

HTTP Request

GET /programs/(program)

Parameters

No additional parameters are needed beyond the ID of the object being requested that appears in the URL.

Expandable Properties

Permissions

One of the following roles is required to call this method:

students

Example code to call this method:

curl "https://yourschool.populiweb.com/api2/programs/(program)/students" \
-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/programs/(program)/students',
 headers: {
  'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
 },
)
puts response.body
import requests
response = requests.get(
 'https://yourschool.populiweb.com/api2/programs/(program)/students',
 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/programs/(program)/students"), 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/programs/(program)/students');
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": 2,
    "results": 2,
    "results_per_page": 200,
    "pages": 1,
    "page": 1,
    "offset": 0,
    "has_more": false,
    "data": [
        {
            "object": "person",
            "id": 16,
            "first_name": "Abby",
            "last_name": "Admin",
            "middle_name": null,
            "prefix": null,
            "suffix": null,
            "preferred_name": null,
            "display_name": "Abby Admin",
            "salutation": "Abby Admin",
            "addressee": "Abby Admin",
            "gender": "female",
            "other_gender": null,
            "image_file_id": null,
            "birth_date": null,
            "status": "active",
            "social_security_number": null,
            "alien_registration_number": null,
            "social_insurance_number": null,
            "home_city": null,
            "home_state": null,
            "home_country": null,
            "former_name": null,
            "license_plate": null,
            "bio": null,
            "hispanic_latino": false,
            "resident_alien": false,
            "localization_id": null,
            "notification_email_id": null,
            "deceased_date": null,
            "import_id": null,
            "staff_id": null,
            "faculty_id": null,
            "degree_level_id": null,
            "added_at": null,
            "added_by_id": null,
            "updated_at": "2026-07-25T16:24:07+00:00",
            "report_data": {
                "person_id": 16,
                "active_roles": "4,5,7,14",
                "username": "academic.admin",
                "primary_address_street": null,
                "primary_address_city": null,
                "primary_address_state": null,
                "primary_address_country": null,
                "is_alum": 0,
                "primary_org_title": null,
                "primary_org_name": null,
                "contact_primary_email": "football@nowhere.co",
                "contact_primary_phone": "333.555.6666 x 091",
                "visible_student_id": "20220xx001",
                "row_id": 16
            },
            "private_profile": false,
            "is_user": true
        }
    ],
    "sandbox": true
}

HTTP Request

GET /programs/(program)/students

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.

Expandable Properties

Filter Condition Parameters

These conditions can be used to narrow the results returned.

Name Type
age integer
degree integer
degree_level integer
home_country country
last_active date
program integer
specialization integer

Permissions

One of the following roles is required to call this method:

transfer_credit_grade_options

Example code to call this method:

curl "https://yourschool.populiweb.com/api2/programs/(program)/transfercreditsgradeoptions" \
-H "Content-Type: application/json" \ 
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \ 
-X GET
require 'httparty'
response = HTTParty.get(
 'https://yourschool.populiweb.com/api2/programs/(program)/transfercreditsgradeoptions',
 headers: {
  'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
 },
)
puts response.body
import requests
response = requests.get(
 'https://yourschool.populiweb.com/api2/programs/(program)/transfercreditsgradeoptions',
 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/programs/(program)/transfercreditsgradeoptions"), 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/programs/(program)/transfercreditsgradeoptions');
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": 4,
    "results": 4,
    "results_per_page": null,
    "pages": 1,
    "page": 1,
    "offset": 0,
    "has_more": false,
    "data": {
        "grade_scale": {
            "label": "Letter Grade",
            "options": [
                {
                    "value": 95,
                    "label": "A",
                    "min_points": 94,
                    "max_points": 999.99
                },
                {
                    "value": 92,
                    "label": "A-",
                    "min_points": 90,
                    "max_points": 93.99
                },
                {
                    "value": 88,
                    "label": "B+",
                    "min_points": 87,
                    "max_points": 89.99
                },
                {
                    "value": 85,
                    "label": "B",
                    "min_points": 84,
                    "max_points": 86.99
                },
                {
                    "value": 82,
                    "label": "B-",
                    "min_points": 80,
                    "max_points": 83.99
                },
                {
                    "value": 78,
                    "label": "C+",
                    "min_points": 77,
                    "max_points": 79.99
                },
                {
                    "value": 75,
                    "label": "C",
                    "min_points": 74,
                    "max_points": 76.99
                },
                {
                    "value": 72,
                    "label": "C-",
                    "min_points": 70,
                    "max_points": 73.99
                },
                {
                    "value": 65,
                    "label": "F",
                    "min_points": 0,
                    "max_points": 69.99
                }
            ]
        },
        "pass_fail_grade_scale": {
            "label": "Pass\/Fail",
            "options": [
                {
                    "value": 100,
                    "label": "P",
                    "min_points": 70,
                    "max_points": 999.99
                },
                {
                    "value": 0,
                    "label": "F",
                    "min_points": 0,
                    "max_points": 69.99
                }
            ]
        },
        "other": {
            "label": "Other",
            "options": [
                {
                    "value": "W",
                    "label": "W",
                    "full_label": "Withdrawn"
                },
                {
                    "value": "I",
                    "label": "I",
                    "full_label": "Incomplete"
                }
            ]
        },
        "custom": {
            "label": "Other",
            "options": [
                {
                    "value": "CUSTOM_STUDENT_STATUS_3",
                    "label": "INCFULL",
                    "allow_retakes": 0
                },
                {
                    "value": "CUSTOM_STUDENT_STATUS_2",
                    "label": "WF",
                    "allow_retakes": 0
                },
                {
                    "value": "CUSTOM_STUDENT_STATUS_1",
                    "label": "WP",
                    "allow_retakes": 0
                }
            ]
        }
    }
}

HTTP Request

GET /programs/(program)/transfercreditsgradeoptions

Parameters

None

Permissions

One of the following roles is required to call this method: