A DLT source for personio
Project description
description: dlt source for personio.com keywords: [personio API, personio.com]
dlt-source-personio
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 |
Why are you not using the dlt-hub/verified-sources personio source / Differences
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!
Usage
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)
Development
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 |
Run the sample
PERSONIO_CLIENT_ID=[...] \
PERSONIO_CLIENT_SECRET=[...] \
sample-pipeline-run
alternatively you can also create a .dlt/secrets.toml
(excluded from git) with the following content:
personio_client_id = "papi-..."
personio_client_secret = "papi-..."
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dlt_source_personio-0.0.4.tar.gz.
File metadata
- Download URL: dlt_source_personio-0.0.4.tar.gz
- Upload date:
- Size: 24.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a3a2b8c370b324b520eb6df48f4b17d262fa58ce4c3a2c05b4b4686b119491c1
|
|
| MD5 |
1b7f6798a46cefdbcb9c47d7c72074d9
|
|
| BLAKE2b-256 |
a95c8afac090c7f79c5b8891290b173d393d812b0577b1ed46d14fb50d6a055c
|
Provenance
The following attestation bundles were made for dlt_source_personio-0.0.4.tar.gz:
Publisher:
test.yml on planet-a-ventures/dlt-source-personio
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dlt_source_personio-0.0.4.tar.gz -
Subject digest:
a3a2b8c370b324b520eb6df48f4b17d262fa58ce4c3a2c05b4b4686b119491c1 - Sigstore transparency entry: 733258533
- Sigstore integration time:
-
Permalink:
planet-a-ventures/dlt-source-personio@e72e1895d97ec09dcaed684e6ab0f1a3aab84e5f -
Branch / Tag:
refs/tags/v0.0.4 - Owner: https://github.com/planet-a-ventures
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
test.yml@e72e1895d97ec09dcaed684e6ab0f1a3aab84e5f -
Trigger Event:
push
-
Statement type:
File details
Details for the file dlt_source_personio-0.0.4-py3-none-any.whl.
File metadata
- Download URL: dlt_source_personio-0.0.4-py3-none-any.whl
- Upload date:
- Size: 28.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8463e2802af7f9e1071a97c58cefab32be996754a515e90d562f3298e5c5882c
|
|
| MD5 |
3e5ccf6a3c5bb0d7662db02994175d3f
|
|
| BLAKE2b-256 |
1cb654dc82ec1c78f133ac5cd70613a3b69a8229989aac75a1e4c14c71d17261
|
Provenance
The following attestation bundles were made for dlt_source_personio-0.0.4-py3-none-any.whl:
Publisher:
test.yml on planet-a-ventures/dlt-source-personio
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dlt_source_personio-0.0.4-py3-none-any.whl -
Subject digest:
8463e2802af7f9e1071a97c58cefab32be996754a515e90d562f3298e5c5882c - Sigstore transparency entry: 733258575
- Sigstore integration time:
-
Permalink:
planet-a-ventures/dlt-source-personio@e72e1895d97ec09dcaed684e6ab0f1a3aab84e5f -
Branch / Tag:
refs/tags/v0.0.4 - Owner: https://github.com/planet-a-ventures
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
test.yml@e72e1895d97ec09dcaed684e6ab0f1a3aab84e5f -
Trigger Event:
push
-
Statement type: