Reports & Statistics
CMS Admin exposes a large set of read-only aggregation endpoints for dashboards and printed reports — case counts by category/branch/court type, filing trends by year, hearing volume, and more.
These endpoints are aggregate/analytics queries, not CRUD resources — they return pre-shaped chart/table data rather than a paginated collection of a single model. The examples below cover the most commonly used ones; consult app/Http/Controllers/BackOffice/StatisticsController.php for the full list.
Case record statistics
- Name
GET /api/case-records/statistics- Description
Overall case counts, typically broken down by status.
- Name
GET /api/case-records/statistics-by-court-type- Description
Case counts grouped by court type.
- Name
GET /api/case-records/statistics-by-branch- Description
Case counts grouped by court branch.
- Name
GET /api/case-records/statistics-by-category- Description
Case counts grouped by case category.
- Name
GET /api/case-records/statistics-by-case-type- Description
Case counts grouped by case type.
Back-office dashboards
- Name
GET /api/backoffice/statistics- Description
General back-office dashboard summary.
- Name
GET /api/backoffice/case-counts- Description
Total case counts across statuses.
- Name
GET /api/backoffice/case-top-categories- Description
Top case categories by volume.
- Name
GET /api/backoffice/case-stage-charts- Description
Case distribution across procedural stages.
- Name
GET /api/backoffice/case-per-year- Description
Filings per year, with a
/summary/per-categoryvariant broken down by category.
- Name
GET /api/backoffice/court-statistics- Description
Aggregate statistics per court type/level.
- Name
GET /api/backoffice/province-case-report- Description
Case counts by province.
- Name
GET /api/backoffice/hearings-per-month- Description
Hearing volume by month.
- Name
GET /api/backoffice/login-frequency- Description
User login frequency over time.
- Name
GET /api/backoffice/filed-vs-closed- Description
Filed vs. closed case comparison over time.
- Name
GET /api/backoffice/actions-overdue-count- Description
Count of overdue compliance/action items.
Get case statistics
Retrieve overall case counts, typically broken down by status.
Optional attributes
- Name
year- Type
- integer
- Description
Restrict the statistics to a specific filing year.
Request
curl -G https://your-domain.com/api/case-records/statistics \
-H "Accept: application/json" \
-H "X-XSRF-TOKEN: {token}" \
--cookie "cms_admin_session={session}" \
--data-urlencode "year=2026"
Response
{
"data": {
"total": 1240,
"for_raffling": 32,
"received": 980,
"case_closed": 190,
"archived": 38
}
}
Get available filing years
Retrieve the distinct years in which cases have been filed, used to populate year filters. GET /api/case-year-bracket returns the min/max range instead of the distinct list.
Request
curl https://your-domain.com/api/case-year-list \
-H "Accept: application/json" \
-H "X-XSRF-TOKEN: {token}" \
--cookie "cms_admin_session={session}"
Response
{
"data": [2023, 2024, 2025, 2026]
}
Generate a case record list report
Generate a filtered, printable case record list report.
Optional attributes
- Name
filters- Type
- object
- Description
Same filter shape as List all case records — status, branch, category, date range.
Request
curl -X POST https://your-domain.com/api/reports/case-record-list \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-XSRF-TOKEN: {token}" \
--cookie "cms_admin_session={session}" \
-d '{"filters": {"status": "case_closed", "branch_id": "9c8d7e6f-5a4b-3210-9c8d-7e6f5a4b3210"}}'
Response
{
"data": [
{
"case_number": "2025-CIV-000012",
"case_title": "MARIA REYES VS. ABC CORP.",
"status": "case_closed",
"closed_at": "2025-11-20"
}
],
"meta": {"total": 1}
}