Overview #
The PlanTRAK API provides read-only access to event data for integration into reporting, analytics, and business intelligence platforms such as Power BI, Qlik Sense, Tableau, Excel, or custom internal systems.
Access to the API is restricted to authenticated PlanTRAK clients. API Tokens are available only to Administrator-level users within the client portal.
Authentication #
The API uses Bearer Token authentication.
All API requests must include the following HTTP header:
Authorization: Bearer YOUR_API_TOKEN
Important Notes #
- API Tokens are generated per client organization.
- Tokens are available only to Administrator-level users.
- Regenerating a token immediately invalidates the previous token.
- Keep your API Token secure and do not share it outside your organization.
- All requests must use HTTPS.
Base Endpoint #
https://clients2.psaraonline.com/api/v1/analytics/events
Available Endpoints #
Open Events #
Returns events that are currently active and have not yet been closed.
Endpoint #
GET https://clients2.psaraonline.com/api/v1/analytics/events?type=open
Holding Table Events #
Returns events that have been closed, or submitted as completed, but are still pending review/approval.
Endpoint #
GET https://clients2.psaraonline.com/api/v1/analytics/events?type=holding
Recently Closed Events #
Returns events that have been fully approved and closed.
Endpoint #
GET https://clients2.psaraonline.com/api/v1/analytics/events?type=recent_closed
Optional Parameters #
| Parameter | Description |
|---|---|
past_days |
Number of days back to pull recently closed events |
Parameter Rules #
- Default:
3days - Maximum:
180days
Example #
GET https://clients2.psaraonline.com/api/v1/analytics/events?type=recent_closed&past_days=30
#
Event Lifecycle #
| Status | is_closed | close_date | Meaning |
|---|---|---|---|
| Open | false | null | Event is still open/active |
| Holding Table | false | populated | Event has been closed/submitted but is pending review |
| Recently Closed | true | populated | Event has been fully approved and closed |
#
Example API Requests #
Recently Closed Events #
curl -X GET "https://clients2.psaraonline.com/api/v1/analytics/events?type=recent_closed&past_days=30" -H "Authorization: Bearer YOUR_API_TOKEN"
Open Events #
curl -X GET "https://clients2.psaraonline.com/api/v1/analytics/events?type=open" -H "Authorization: Bearer YOUR_API_TOKEN"
Holding Table Events #
curl -X GET "https://clients2.psaraonline.com/api/v1/analytics/events?type=holding" -H "Authorization: Bearer YOUR_API_TOKEN"
#
Example Response #
{
"count": 462,
"results": [
{
"area_id": 16,
"area_name": "Other",
"assignment_id": 2747,
"assignment_name": "Albert Phillips",
"citation": "",
"citation_link": "N/A",
"close_date": null,
"comments": [],
"due_date": "2028-03-29",
"event_activity": "Quarterly Test",
"event_description": "Testing",
"event_id": 244822,
"event_info": "",
"event_parent_id": 14288,
"event_parent_type": "Plan",
"event_recommendation": null,
"facility_id": 498,
"facility_name": "Cincinnati, OH",
"is_closed": false,
"is_overdue": false,
"is_regulatory": null,
"required_checklist_id": null,
"required_checklist_name": null,
"requires_attachment": false,
"type_id": 16,
"type_name": "Other"
},...
],
"type": "open"
}
#
Common Response Fields #
| Field | Description |
|---|---|
event_id |
Unique event identifier |
facility_id |
Unique facility identifier |
facility_name |
Facility associated with the event |
area_id |
Unique area identifier |
area_name |
Environmental/compliance area |
assignment_id |
Unique identifier for the assigned user |
assignment_name |
Assigned user |
due_date |
Event due date |
close_date |
Date event was submitted/closed |
event_activity |
Event title/activity |
event_description |
Event description/details |
type_id |
Unique event type identifier |
type_name |
Event type |
is_closed |
Indicates final closure status |
is_overdue |
Indicates overdue status |
requires_attachment |
Indicates whether an attachment is required |
Some endpoints may also include additional comment-related or metadata fields.
#
Recommended Synchronization Strategy #
For most integrations, we recommend the following synchronization approach:
- Pull Open Events daily
- Pull Holding Table Events daily
- Pull Recently Closed Events using a rolling
dayswindow (example: 3 days)
This approach helps ensure event updates are not missed while minimizing unnecessary or redundant data transfer.
#
Rate Limiting #
The API is designed for periodic synchronization and reporting workflows rather than continuous polling.
Daily refresh schedules are recommended for most integrations.