| description | keywords | ||
|---|---|---|---|
dlt source for personio.com  | 
  
  | 
  
Currently loads the following data:
| Table | Contains | Spec version | 
|---|---|---|
persons | 
Items of the Person model with all properties | 
V2 | 
persons_custom_attributes | 
All defined custom attributes. The table is pivoted, so each custom attribute becomes a column in the table. | V2 | 
persons_profile_pictures | 
The profile picture for each employee (that has defined one) | V1 | 
employments | 
Items of the Employment model with all properties | 
V2 | 
The official verified source has a few drawbacks:
- it is based on the Personio API V1, not the current V2
 - on usage of the verified source, a copy of the current state of
the 
dlt-hub/verified-sourcesrepository is copied into your project; Once you make changes to it, it effectively becomes a fork, making it hard to update after the fact. - The verified source does not use any data validation other than ensuring dates are correct; This means that data shape is not guaranteed, resulting in potential schema changes. This data source uses an (unofficial) OpenAPI spec, which is transformed into Pydantic 2 models.
 
Currently this data source does not support delta updates (the verified source does) and it also does not contain some of the data sources (absences, etc.). Contributions are welcome!
Create a .dlt/secrets.toml with your API key and email:
personio_client_id = "papi-..."
personio_client_secret = "papi-..."and then run the default source with optional list references:
from dlt_source_personio import source as personio_source
pipeline = dlt.pipeline(
   pipeline_name="personio_pipeline",
   destination="duckdb",
   dev_mode=True,
)
personio_data = personio_source()
pipeline.run(personio_data)This project is using devenv.
Commands:
| Command | What does it do? | 
|---|---|
generate-model | 
generates the personio Pydantic model from the current spec file, applies patches, etc. | 
update-spec | 
Pulls in the latest master#HEAD of personio/api-docs | 
validate-spec | 
Validates the local (unofficial) Personio V2 spec | 
refresh-model | 
Both commands above plus adds it to git and commits the changes. | 
format | 
Formats & lints all code | 
sample-pipeline-run | 
Runs the sample pipeline. By default dev_mode=True which fetches resources with a limit of 1 (page) | 
sample-pipeline-show | 
Starts the streamlit-based dlt hub | 
PERSONIO_CLIENT_ID=[...] \
   PERSONIO_CLIENT_SECRET=[...] \
      sample-pipeline-runalternatively you can also create a .dlt/secrets.toml
(excluded from git) with the following content:
personio_client_id = "papi-..."
personio_client_secret = "papi-..."