a lightweight Personio API client
Project description
personio-py
personio-py is a lightweight Personio API client library for Python. Also, it's pretty intuitive to use. But don't take my word for it, please have a look:
>>> from personio_py import Personio
>>> p = Personio(client_id='***', client_secret='***')
>>> employees = p.get_employees()
>>> len(employees)
42
>>> ada = employees[0]
>>> ada.last_name
'Lovelace'
>>> absences = p.get_absences(ada.id_)
>>> len(absences)
12
>>> absences[0].to_dict()
{'id': 42, 'status': 'approved', 'start_date': '2020-08-01', 'end_date': '2020-08-16', ...}
personio-py aims to provide Python function wrappers and object mappings for all endpoints of the Personio REST API. Because personio-py is a third party library and the REST API may change from time to time, we cannot guarantee that all functions are covered, but we try our best.
If something appears to be broken, please have a look at the open issues and vote for an existing issue or create a new one, if you can't find an issue that describes your problem.
📖 Documentation is available at at-gmbh.github.io/personio-py
Features
- Aims to cover all functions of the Personio API (work in progress)
- Python function wrappers for all API endpoints as part of the Personio class
- Object mappings for all API resources, e.g. an Employee is an object with properties for all the information that is provided by the REST API.
- Completely transparent handling of authentication and key rotation
- Support for Type Hints
- Only one dependency: requests
Getting Started
The package is available on PyPI and can be installed with
pip install personio-py
Now you can import personio_py
and start coding. Please have a look at the User Guide and the Examples section for more details.
Contributing
Contributions are very welcome! For our contribution guidelines, please have a look at CONTRIBUTING.md.
To set up your local development environment, please use a fresh virtual environment, then run
pip install -r requirements.txt -r requirements-dev.txt
This project is intended to be used as library, so there is no command line interface or stuff like that.
We use pytest
as test framework. To execute the tests, please run
python setup.py test
To build a distribution package (wheel), please use
python setup.py dist
this will clean up the build folder and then run the bdist_wheel
command.
Before contributing code, please set up the pre-commit hooks to reduce errors and ensure consistency
pip install -U pre-commit && pre-commit install
API Functions
Available
POST /auth
: fully transparent authentication handlingGET /company/employees
: list all employeesGET /company/employees/{id}
: get the employee with the specified IDGET /company/employees/{id}/profile-picture/{width}
: get the profile picture of the specified employee
Work in Progress
POST /company/employees
: create a new employeePATCH /company/employees/{id}
: update an existing employee entryGET /company/attendances
: fetch attendance data for the company employeesPOST /company/attendances
: add attendance data for the company employeesDELETE /company/attendances/{id}
: delete the attendance entry with the specified IDPATCH /company/attendances/{id}
: update the attendance entry with the specified IDGET /company/time-off-types
: get a list of available absences typesGET /company/time-offs
: fetch absence data for the company employeesPOST /company/time-offs
: add absence data for the company employeesDELETE /company/time-offs/{id}
: delete the absence entry with the specified IDGET /company/time-offs/{id}
: get the absence entry with the specified ID
Contact
Sebastian Straub (sebastian.straub [at] alexanderthamm.com)
Developed with ❤ at Alexander Thamm GmbH
License
Copyright 2020 Alexander Thamm GmbH
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Project details
Release history Release notifications | RSS feed
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
Hashes for personio_py-0.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8857ff544bb0bcfc3ced8c391a41d9df33126f1438b7c7f5ca54b67190027fbd |
|
MD5 | 75ed3cd0c3782a0985e608063a73b35b |
|
BLAKE2b-256 | d97a93146fcc65bda56cfebbab2833db23b02a81365e7f2ad4037729c0492e57 |