GET [ staff/{id}/training ]
Production Endpoint: https://app.complyflow.com.au/app/public/index.php/api/v1/staff/{id}/training
Test Endpoint: https://test.complyflow.com.au/app/public/index.php/api/v1/staff/{id}/training
Overview
This endpoint returns the complete training history (online + offline) for a specific staff member in the current organisation. It returns attendee-level records — use this endpoint for individual profile views and compliance verification.
Authentication instructions
Refer to the Authentication method for Authentication Methods (for Login and Logout).
Permissions Required
The user requires the permissions below:
API User
User is Staff
Users have View Training Permission
Please also refer to the Permissions Overview guide.
Path parameters
FIELD | TYPE | DESCRIPTION | EXAMPLE | REQUIRED |
|
| Staff member ID |
| Yes |
Query parameters
FIELD | TYPE | DESCRIPTION | EXAMPLE | REQUIRED | DEFAULT | PATTERN |
|
| Filter by training type |
| No |
|
|
|
| Filter by status |
| No |
|
|
|
| Filter by project/site ID |
| No |
|
|
|
| Filter by training label ID |
| No |
|
|
|
| Start date filter |
| No |
|
|
|
| End date filter |
| No |
|
|
|
| Page number |
| No |
| min: 1 |
|
| Records per page |
| No |
| min: 1, max: 100 |
Request Example
curl --location 'https://test.complyflow.com.au/app/public/index.php/api/v1/staff/123/training?type=all&page=1' \
--header 'Authorization: Bearer [...]'
Response Example
The API request returns the unified training history for the specified staff member. Pagination metadata is returned under the meta key.
{
"data": [
{
"id": 9012,
"type": "offline",
"training_name": "Emergency Response Drill",
"training_type": "session",
"completed_at": "2025-06-15T00:00:00+00:00",
"status": "completed",
"result": "attended",
"valid_until": null,
"person": {
"id": 123,
"type": "staff",
"name": "Jane Smith",
"company": null
},
"projects": ["Melbourne Rail Hub"],
"labels": ["Safety", "Emergency"],
"session": {
"id": 456,
"name": "Emergency Response Drill",
"venue": "Training Room A",
"checked_in_at": "2025-06-15T08:45:00+00:00",
"check_in_method": "qr_code"
}
},
{
"id": 3456,
"type": "online",
"training_name": "WHS Fundamentals",
"training_type": "course",
"completed_at": "2025-05-20T00:00:00+00:00",
"status": "completed",
"result": "passed",
"valid_until": "2026-05-20",
"person": {
"id": 123,
"type": "staff",
"name": "Jane Smith",
"company": null
},
"projects": [],
"labels": ["Mandatory"],
"session": null
}
],
"meta": {
"current_page": 1,
"per_page": 50,
"total": 15,
"total_pages": 1
}
}Note: For offline records, completed_at is the first session day and session holds the check-in detail. For online records, session is null and valid_until holds the course expiry date. Result values: online — passed / failed / expired; offline — attended / not_attended.
Error Responses
HTTP Code | Scenario | Body |
401 | Missing JWT token |
|
401 | Invalid or malformed JWT |
|
401 | Expired JWT token |
|
404 | Staff not found or not in your organisation |
|
429 | Rate limit exceeded (60 requests/minute per user) |
|