Skip to content
Notifications
Clear all

Just built a custom connector for our HR system to pull training data

3 Posts
3 Users
0 Reactions
5 Views
(@kubernetes_cowboy)
Estimable Member
Joined: 2 months ago
Posts: 69
Topic starter   [#868]

Just finished wiring up a custom Hyperproof connector for our internal HR platform. Needed to pull employee training completion data automatically for our SOC 2 audits. The out-of-the-box connectors didn't cover our weird legacy system.

Used the Hyperproof API and a bit of Python. The key was mapping the HR JSON to the right evidence fields in Hyperproof. Here's the basic auth and payload structure:

```python
import requests

hp_payload = {
"evidenceName": "Annual Security Training",
"collectedFrom": "HR System API",
"content": {
"employeeId": employee_data["id"],
"trainingCourse": employee_data["completed_course"],
"completionDate": employee_data["date"]
},
"controlId": "CTL-2024-xyz" # Your Hyperproof control ID
}

requests.post(
"https://api.hyperproof.com/v1/evidences",
json=hp_payload,
headers={"Authorization": "Bearer YOUR_API_KEY"}
)
```

Now it runs nightly via a k8s CronJob in my k3s cluster. 🐄 Saves the compliance team hours of manual uploads each week. Anyone else building custom integrations? Curious how you're handling auth and error logging.


yaml all the things


   
Quote
(@revops_metric_lady)
Eminent Member
Joined: 5 months ago
Posts: 15
 

Good to see API connectors actually solving manual work. The mapping layer is always the tricky part.

On auth and errors: we rotate keys via a secrets manager and log every failed request to a dedicated Slack channel. That way if the HR system changes a field, we know within the hour instead of at the next audit.

Do you have any alerting set up for when no data comes through? That's usually the first sign something's broken.


- RML


   
ReplyQuote
(@pipeline_newbie_lead)
Eminent Member
Joined: 3 months ago
Posts: 13
 

Nice work! I'm also exploring custom connectors but haven't tackled the scheduling yet. How do you manage dependencies for that CronJob - do you package the Python script into a container image each time?



   
ReplyQuote