Read program participation overview
Requires the participation feature, programs_view and access to this organization-owned program. Requires participation_view, participation_record, participation_submit or participation_configure. Results follow the caller’s site/cohort scope. Returns setup, active scoped locations and groups, period schedule, roster/check totals and caller capabilities. Defaults to the open period, otherwise the newest period. Setup details are returned only to configurators; intake options require record capability.
curl --request GET \
--url https://api.gratona.com/v1/admin/programs/{program_id}/participation \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.gratona.com/v1/admin/programs/{program_id}/participation"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.gratona.com/v1/admin/programs/{program_id}/participation', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.gratona.com/v1/admin/programs/{program_id}/participation",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.gratona.com/v1/admin/programs/{program_id}/participation"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.gratona.com/v1/admin/programs/{program_id}/participation")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gratona.com/v1/admin/programs/{program_id}/participation")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"feature_enabled": true,
"configured": true,
"program": {
"id": 123,
"name": "<string>"
},
"selected_period_id": 42,
"schedule": {
"cadence": "weekly",
"fixed": true,
"state": "closed",
"as_of": "2026-10-20",
"window_starts_on": "2026-10-20",
"window_ends_on": "2026-10-20",
"next_window_starts_on": "2026-10-20"
},
"settings": {
"enabled": true,
"terminology": "school",
"default_session_type": "roster_verification",
"cadence": "weekly",
"default_evidence_source": "official_record",
"allowed_evidence_sources": [
"official_record"
],
"site_field_id": 42,
"cohort_field_id": 42,
"required_intake_field_keys": [
"<string>"
],
"profile_ready_field_keys": [
"<string>"
],
"profile_photo_required": true,
"unresolved_check_threshold": 123,
"dropout_review_after_days": 123,
"follow_up_due_days": 123,
"follow_up_assignee_user_id": 42,
"revision": 123
},
"periods": [
{
"id": 123,
"name": "<string>",
"starts_on": "2023-12-25",
"ends_on": "2023-12-25",
"status": "draft"
}
],
"sites": [
{
"id": 123,
"name": "<string>",
"code": "<string>",
"site_type": "<string>",
"roster_count": 123,
"cohorts": [
{
"id": 123,
"name": "<string>",
"roster_count": 123,
"can_start": true,
"next_check_on": "2023-12-25",
"missed_windows": 123,
"latest_session": {
"id": 123,
"scheduled_for": "2023-12-25",
"seen_count": 123,
"expected_count": 123,
"unresolved_count": 123,
"status": "draft"
},
"completion_status": "complete",
"scheduled_session": {
"id": 123,
"scheduled_for": "2023-12-25",
"seen_count": 123,
"expected_count": 123,
"unresolved_count": 123,
"status": "draft"
},
"schedule_status": "upcoming"
}
]
}
],
"summary": {
"recipients_with_current_placement": 123,
"recipients_without_current_placement": 123,
"draft_sessions": 123,
"unresolved_recipients": 123,
"verified_recipients": 123,
"period_unresolved_recipients": 123,
"new_recipients": 123,
"transferred_recipients": 123,
"withdrawn_recipients": 123,
"incomplete_profiles": 123,
"completed_cohorts": 123,
"expected_cohorts": 123
},
"capabilities": {
"view": true,
"record": true,
"submit": true,
"configure": true,
"scope": {
"restricted": true,
"sites": [
{
"site_id": 123,
"all_cohorts": true,
"cohort_ids": [
123
]
}
]
}
},
"intake_fields": [
{
"id": 123,
"key": "<string>",
"label": "<string>",
"type": "<string>",
"options": "<string>",
"required": true,
"required_for_intake": true,
"title": true,
"option_values": [
"<string>"
],
"placement_source": "site"
}
],
"recipient_creation": {
"program_type": "<string>",
"number_sponsors": [
"<string>"
],
"sponsorship_amounts": [
"<string>"
],
"contribution_levels": [
"<string>"
],
"donation_target": "<string>",
"recipient_portal_enabled": true,
"tags": [
"<string>"
]
},
"configuration": {
"recipient_fields": [
{
"id": 123,
"key": "<string>",
"label": "<string>",
"type": "<string>",
"options": "<string>",
"required": true,
"required_for_intake": true,
"title": true,
"option_values": [
"<string>"
],
"placement_source": "site"
}
],
"roles": [
{
"id": 123,
"name": "<string>"
}
],
"follow_up_assignees": [
{
"id": 123,
"name": "<string>"
}
],
"access_scopes": [
{
"group_id": 123,
"site_id": 123,
"cohort_id": 123
}
],
"sites": [
{
"id": 123,
"name": "<string>",
"code": "<string>",
"site_type": "school",
"status": "active",
"legacy_values": [
"<string>"
],
"cohorts": [
{
"id": 123,
"name": "<string>",
"code": "<string>",
"sort_order": 123,
"status": "active",
"legacy_values": [
"<string>"
]
}
]
}
]
}
}{
"message": "Unauthorized",
"status": "error"
}{
"message": "Something went wrong. Please try again.",
"status": "error",
"error": "invalid_request",
"code": "DONOR_NOT_FOUND"
}{
"message": "Not Found",
"status": "error"
}{
"errors": {},
"status": "error",
"message": "The given data was invalid."
}Authorizations
Passport bearer token authentication for legacy admin sessions.
Path Parameters
Program whose participation setup, placements and checks are being accessed.
x >= 1Query Parameters
Select a period belonging to this program. Omitted or zero uses the open period, otherwise the newest period.
Response
Read program participation overview response.
true
True when participation settings are enabled, an active accessible site exists and a period is open.
Show child attributes
Show child attributes
x >= 142
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Program recipient fields for callers with record capability; otherwise empty.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
curl --request GET \
--url https://api.gratona.com/v1/admin/programs/{program_id}/participation \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.gratona.com/v1/admin/programs/{program_id}/participation"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.gratona.com/v1/admin/programs/{program_id}/participation', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.gratona.com/v1/admin/programs/{program_id}/participation",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.gratona.com/v1/admin/programs/{program_id}/participation"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.gratona.com/v1/admin/programs/{program_id}/participation")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gratona.com/v1/admin/programs/{program_id}/participation")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"feature_enabled": true,
"configured": true,
"program": {
"id": 123,
"name": "<string>"
},
"selected_period_id": 42,
"schedule": {
"cadence": "weekly",
"fixed": true,
"state": "closed",
"as_of": "2026-10-20",
"window_starts_on": "2026-10-20",
"window_ends_on": "2026-10-20",
"next_window_starts_on": "2026-10-20"
},
"settings": {
"enabled": true,
"terminology": "school",
"default_session_type": "roster_verification",
"cadence": "weekly",
"default_evidence_source": "official_record",
"allowed_evidence_sources": [
"official_record"
],
"site_field_id": 42,
"cohort_field_id": 42,
"required_intake_field_keys": [
"<string>"
],
"profile_ready_field_keys": [
"<string>"
],
"profile_photo_required": true,
"unresolved_check_threshold": 123,
"dropout_review_after_days": 123,
"follow_up_due_days": 123,
"follow_up_assignee_user_id": 42,
"revision": 123
},
"periods": [
{
"id": 123,
"name": "<string>",
"starts_on": "2023-12-25",
"ends_on": "2023-12-25",
"status": "draft"
}
],
"sites": [
{
"id": 123,
"name": "<string>",
"code": "<string>",
"site_type": "<string>",
"roster_count": 123,
"cohorts": [
{
"id": 123,
"name": "<string>",
"roster_count": 123,
"can_start": true,
"next_check_on": "2023-12-25",
"missed_windows": 123,
"latest_session": {
"id": 123,
"scheduled_for": "2023-12-25",
"seen_count": 123,
"expected_count": 123,
"unresolved_count": 123,
"status": "draft"
},
"completion_status": "complete",
"scheduled_session": {
"id": 123,
"scheduled_for": "2023-12-25",
"seen_count": 123,
"expected_count": 123,
"unresolved_count": 123,
"status": "draft"
},
"schedule_status": "upcoming"
}
]
}
],
"summary": {
"recipients_with_current_placement": 123,
"recipients_without_current_placement": 123,
"draft_sessions": 123,
"unresolved_recipients": 123,
"verified_recipients": 123,
"period_unresolved_recipients": 123,
"new_recipients": 123,
"transferred_recipients": 123,
"withdrawn_recipients": 123,
"incomplete_profiles": 123,
"completed_cohorts": 123,
"expected_cohorts": 123
},
"capabilities": {
"view": true,
"record": true,
"submit": true,
"configure": true,
"scope": {
"restricted": true,
"sites": [
{
"site_id": 123,
"all_cohorts": true,
"cohort_ids": [
123
]
}
]
}
},
"intake_fields": [
{
"id": 123,
"key": "<string>",
"label": "<string>",
"type": "<string>",
"options": "<string>",
"required": true,
"required_for_intake": true,
"title": true,
"option_values": [
"<string>"
],
"placement_source": "site"
}
],
"recipient_creation": {
"program_type": "<string>",
"number_sponsors": [
"<string>"
],
"sponsorship_amounts": [
"<string>"
],
"contribution_levels": [
"<string>"
],
"donation_target": "<string>",
"recipient_portal_enabled": true,
"tags": [
"<string>"
]
},
"configuration": {
"recipient_fields": [
{
"id": 123,
"key": "<string>",
"label": "<string>",
"type": "<string>",
"options": "<string>",
"required": true,
"required_for_intake": true,
"title": true,
"option_values": [
"<string>"
],
"placement_source": "site"
}
],
"roles": [
{
"id": 123,
"name": "<string>"
}
],
"follow_up_assignees": [
{
"id": 123,
"name": "<string>"
}
],
"access_scopes": [
{
"group_id": 123,
"site_id": 123,
"cohort_id": 123
}
],
"sites": [
{
"id": 123,
"name": "<string>",
"code": "<string>",
"site_type": "school",
"status": "active",
"legacy_values": [
"<string>"
],
"cohorts": [
{
"id": 123,
"name": "<string>",
"code": "<string>",
"sort_order": 123,
"status": "active",
"legacy_values": [
"<string>"
]
}
]
}
]
}
}{
"message": "Unauthorized",
"status": "error"
}{
"message": "Something went wrong. Please try again.",
"status": "error",
"error": "invalid_request",
"code": "DONOR_NOT_FOUND"
}{
"message": "Not Found",
"status": "error"
}{
"errors": {},
"status": "error",
"message": "The given data was invalid."
}