tpm.py
Modern Python SDK groundwork for TeamPasswordManager with safer API boundaries and maintainable packaging.
A Python Module for the TeamPasswordManager API
Requires: requests
Install tpm.py
You can install the tpm module via pip
pip install tpm
How to Use
This is an example how you can use it in a python script
#! /usr/bin/env python
import tpm
# create a object for the connection settings
URL = "https://mypasswordmanager.example.com"
USER = 'example-user'
PASS = 'EXAMPLE_PASSWORD'
tpmconn = tpm.TpmApiv5(URL, username=USER, password=PASS)
# get a dictionary for all password entries
data = tpmconn.list_passwords()
# show all names from the password entries
for item in data:
print (item.get('name'))
You can also use Private/Public Key authentication
#! /usr/bin/env python
import tpm
# create a object for the connection settings
URL = "https://mypasswordmanager.example.com"
pubkey = 'EXAMPLE_PUBLIC_KEY'
privkey = 'EXAMPLE_PRIVATE_KEY'
tpmconn = tpm.TpmApiv5(URL, private_key=privkey, public_key=pubkey)
# get a dictionary for all password entries
data = tpmconn.list_passwords()
# show all names from the password entries
for item in data:
print (item.get('name'))
If you always want to unlock entries that are locked, you can specify an unlock reason
tpmconn = tpm.TpmApiv5(URL, username=USER, password=PASS, unlock_reason="Because I can!")
TLS certificate verification
TLS certificates are verified by default (verify=True). To connect to a server
with a self-signed certificate you can disable verification or point to a custom
CA bundle:
# disable verification (not recommended)
tpmconn = tpm.TpmApiv5(URL, username=USER, password=PASS, verify=False)
# or verify against a custom CA bundle
tpmconn = tpm.TpmApiv5(URL, username=USER, password=PASS, verify="/path/to/ca-bundle.pem")
API v6
Use tpm.TpmApiv6 to talk to the v6 API. It inherits every function from the
previous versions and adds the endpoints introduced in v6 (see the
Functions explained section, marked (since v6)):
tpmconn = tpm.TpmApiv6(URL, username=USER, password=PASS)
Page size
Since v6 you can set the page size for paginated requests via the X-Page-Size
header. Pass page_size (an integer between 5 and 1000) when creating the
client:
tpmconn = tpm.TpmApiv6(URL, username=USER, password=PASS, page_size=100)
Development artifact guard
This repository uses pre-commit to keep public artifacts safe to publish. Install the hook once after cloning:
python3 -m pip install pre-commit
pre-commit install --install-hooks
Before opening a PR, run:
pre-commit run --all-files
The guard blocks accidental literal backslash-n text where real line breaks belong, local machine paths, internal workflow details, and obvious secret or auth-token values. Replace real values with placeholders or environment-variable references before publishing.
Logging
Every function call leads to a at least a logging message. If you want to log all your script does, you can do it like this:
import logging
# set log file and log level
logfile = 'MyLogFile.log'
loglevel = logging.INFO
logformat = '%(asctime)s - %(levelname)s - %(message)s'
logging.basicConfig(filename=logfile, level=loglevel, format=logformat)
# If you don't want the requests and urllib3 module to log too much
logging.getLogger("requests").setLevel(logging.WARNING)
logging.getLogger("urllib3").setLevel(logging.WARNING)
Functions explained
All Functions are also explained at the API documentation
API Projects
List Projects
list_projects()
list_projects_archived()
list_projects_favorite()
list_projects_search(searchstring)
(since v4) List Subprojects
list_subprojects(ID)
list_subprojects_action(ID, action)
Show Project
show_project(ID)
List Passwords of Project
list_passwords_of_project(ID)
List User Access on Project
list_user_access_on_project(ID)
Create Project
create_project(data)
Update Project
update_project(ID, data)
Change Parent of Project
change_parent_of_project(ID, NewParentID)
Update Security of Project
update_security_of_project(ID, data)
Archive Project
archive_project(ID)
Unarchive Project
unarchive_project(ID)
Delete Project
delete_project(ID)
API Passwords
List Passwords
list_passwords()
list_passwords_archived()
list_passwords_favorite()
list_passwords_search(searchstring)
Show Password
show_password(ID)
List User Access on Password
list_user_access_on_password(ID)
Create Password
create_password(data)
Update Password
update_password(ID, data)
Update Security of Password
update_security_of_password(ID, data)
Update Custom Fields of Password
update_custom_fields_of_password(ID, data)
Delete Password
delete_password(ID)
Lock Password
lock_password(ID)
Unlock Password
unlock_password(ID)
(since v5) Archive Password
archive_password(ID)
(since v5) Unarchive Password
unarchive_password(ID)
(since v5) Move Password
move_password(ID, PROJECT_ID)
API MyPasswords
(since v6) List Archived MyPasswords
list_mypasswords_archived()
(since v6) List Favorite MyPasswords
list_mypasswords_favorite()
List MyPasswords
list_mypasswords()
list_mypasswords_search(searchstring)
Show MyPassword
show_mypassword(ID)
Create MyPassword
create_mypassword(data)
Update MyPassword
update_mypassword(ID, data)
Delete MyPassword
delete_mypassword(ID)
API Favorites
Set Favorite Password
set_favorite_password(ID)
Unset Favorite Password
unset_favorite_password(ID)
Set Favorite Project
set_favorite_project(ID)
Unset Favorite Project
unset_favorite_project(ID)
Note:
TpmApiv6overrides these two to use the v6 endpointfavorite_projects/{ID}.json(plural); earlier versions usefavorite_project/{ID}.json.
(since v6) Set Favorite MyPassword
set_favorite_mypassword(ID)
(since v6) Unset Favorite MyPassword
unset_favorite_mypassword(ID)
Move MyPassword to a Project
move_mypassword(ID, PROJECT_ID)
API Users
List Users
list_users()
Show User
show_user(ID)
(since v6) List Passwords a User can access
list_user_passwords(ID)
(since v6) List Projects a User can access
list_user_projects(ID)
Show Me/Who am I?
show_me() who_am_i()
Create User
create_user(data)
(since v5) Create LDAP User
create_user_ldap(data)
(since v5) Create SAML User
create_user_saml(data)
Update User
update_user(ID, data)
Change User Password
change_user_password(ID, data)
Activate User
activate_user(ID)
Deactivate User
deactivate_user(ID)
Convert User to LDAP
convert_user_to_ldap(ID, DN) convert_ldap_user_to_normal(ID)
(since v5) Convert User to LDAP
convert_user_to_ldap(ID, DN, SERVER_ID)
(since v5) Convert User to SAML
convert_user_to_saml(ID)
Delete User
delete_user(ID)
API Groups
List groups
list_groups()
Show Group
show_group(ID)
Create Group
create_group(data)
Update Group
update_group(ID, data):
Add User to Group
add_user_to_group(GroupID, UserID)
Delete User from Group
delete_user_from_group(GroupID, UserID)
Delete Group
delete_group(ID)
Files
(since v5) List Files of Project
list_project_files(ID)
(since v5) List Files of Password
list_password_files(ID)
(since v5) Upload a file to a project
upload_project_file(ID, file, notes="optional notes")
(since v5) Upload a file to a password
upload_password_file(ID, file, notes="optional notes")
(since v5) Show info of a file
show_file_info(ID)
(since v5) Updates notes of a file
update_file_notes(ID, NOTES)
(since v5) Show max upload file size
max_upload_file_size()
(since v5) Download a file
download_file(ID)
(since v5) Delete a file
delete_file(ID)
API Password Generator
generate_password()
API Version
get_version() get_latest_version() up_to_date()
(since v6) API Log
(since v6) List Log
list_log()
(since v6) Search Log
list_log_search(searchstring)
Governance
- Contribution guide: CONTRIBUTING.md
- Security policy: SECURITY.md
- AI-agent guide: AGENTS.md
- License: LICENSE
Support
If this Python SDK is useful to you, you can support its ongoing maintenance via bunq. Support is voluntary and appreciated, but does not create any entitlement to support, features, consulting, an SLA, or invoice-based work.
Release files for tpm 5.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tpm-5.0.1.tar.gz | 29.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tpm-5.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 41.6 kB
Release files / tpm-5.0.1.tar.gz
| Download URL | tpm-5.0.1.tar.gz |
|---|---|
| Size | 29.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4ce71b72f51c2cfb4918e4aafaebd38b61c42e1218d83653b77386db8701418a
|
|
BLAKE2b-256 checksum How to use checksums |
39ed53cf271e1cb8c0fcea71773d43da53a909eac3ddde5c13d42abbae375874
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.
Transparency logRelease files / tpm-5.0.1-py3-none-any.whl
| Download URL | tpm-5.0.1-py3-none-any.whl |
|---|---|
| Size | 12.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
50b4dc944875a53b01b9880cd480a26d99508f2a268defdb7f78bb436414ce09
|
|
BLAKE2b-256 checksum How to use checksums |
73a5a75c0291898a86136aa162a8d7500a9010114536c63a49a22bf60f969f1f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.
Transparency log