Personio
Personio is a human resources management software that helps businesses streamline HR processes, including recruitment, employee data management, and payroll, in one platform.
ingestr supports Personio as a source.
URI format
The URI format for Personio is as follows:
personio://?client_id=<client-id>&client_secret=<client-secret>URI parameters:
client_id: the client ID used for authentication with the Personio APIclient_secret: the client secret used for authentication with the Personio API
Setting up a Personio Integration
To connect to Personio, you need to create API credentials in your Personio account.
Step 1: Access API Settings
- Log in to your Personio account
- Navigate to Settings → Integrations → API credentials
Step 2: Create API Credentials
- Click Generate new credentials
- Enter a description for the API credential (e.g., "Data Integration")
- Select the required permissions for the data you want to access:
- Read employees - For employee data
- Read absences - For absence data
- Read attendances - For attendance records
- Read documents - For document categories
- Read custom reports - For custom reports
- Click Generate
Step 3: Copy Credentials
After generating, you will see:
- Client ID - A unique identifier for your API credential
- Client Secret - A secret key (shown only once, save it securely)
These are your client_id and client_secret for the ingestr URI.
Let's say your client_id is id_123 and your client_secret is secret_123, here's a sample command that will copy the data from Personio into a DuckDB database:
ingestr ingest --source-uri 'personio://?client_id=id_123&client_secret=secret_123' \
--source-table 'employees' \
--dest-uri duckdb:///personio.duckdb \
--dest-table 'dest.employees'
Personio source allows ingesting the following resources into separate tables:
Tables
Personio source allows ingesting the following sources into separate tables:
| Table | PK | Inc Key | Inc Strategy | Details |
|---|---|---|---|---|
| employees | id | last_modified_at | merge | Retrieves company employees details. |
| absence_types | id | – | replace | Retrieves list of various types of employee absences Retrieves absence periods for absences tracked in days. |
| absences | id | updated_at | merge | Fetches absence periods for absences with time unit set to days. |
| attendances | id | updated_at | merge | Retrieves attendance records for each employee |
| projects | id | – | replace | Retrieves a list of all company projects |
| document_categories | id | – | replace | Retrieves all document categories of the company |
| custom_reports_list | id | – | replace | Retrieves metadata about existing custom reports in your Personio account, such as report name, report type, report date / timeframe. |
| employees_absences_balance | [employee_id,id] | – | merge | Retrieves the absence balance for a specific employee |
Use these as --source-table parameter in the ingestr ingest command.\
WARNING
Personio does not support incremental loading for many endpoints, which means ingestr will load endpoints incrementally if they support it, and do a full-refresh if not.