pynteracta
pynteracta is an unofficial third-party Python client for the Interacta™ platform by Dinova S.r.l. / Maggioli S.p.A. It is neither sponsored nor endorsed by the vendor.
An unofficial Python 3.12+ library and CLI client for the Interacta™ REST API (external_v2).
Synchronous, read-only, typed: service-account and Google OAuth2 authentication, ten read
resources, a Typer CLI with table/JSON/YAML output and file export. Current version: see
CHANGELOG.md.
Installation
uv pip install pynteracta
# with YAML output support:
uv pip install "pynteracta[yaml]"
# with Parquet export support:
uv pip install "pynteracta[parquet]"
# with all export formats (yaml + parquet):
uv pip install "pynteracta[export]"
Upgrading from 0.4.x? The API changed completely — see the compatibility note at the end of this page.
Each release is also attached as a wheel and sdist to its GitHub release. To pin an exact tag from the repository instead:
uv pip install "pynteracta @ git+https://github.com/simodalla/pynteracta@v0.9.3"
Quickstart — library
from pathlib import Path
from pynteracta.auth import load_service_account_key
from pynteracta.client import InteractaClient
key = load_service_account_key(Path("sa.json"))
with InteractaClient(
base_url="https://interacta.example.it",
credentials=key,
) as client:
# Who am I?
me = client.users.me()
ud = me.user_data_typed
if ud is not None:
print(ud.firstName, ud.lastName)
# Lazy pagination over every user
for user in client.users.iterate(page_size=100):
print(user.id, user.firstName, user.lastName, user.contactEmail)
# Filtered, sorted posts of a community
page = client.posts.list_in_community(
79, order_by="postCreationTimestamp", order_desc=True, post_types=[1], page_size=50
)
for post in page.items_typed:
print(post.id, post.title, client.web_urls.post(post.id))
Quickstart — CLI
# Authenticate with a service-account key (global options go BEFORE the command)
pynteracta --base-url https://interacta.example.it auth login --service-account-key sa.json
# Who am I?
pynteracta auth whoami
# List users (table output by default); count matching users only
pynteracta users list --all
pynteracta users list --status 1 --count
# Fetch a post as JSON; list a community's posts with filters and validation
pynteracta posts get 21269 --output json
pynteracta posts list --community 79 --mentioned --field-filter 1411:4:226 --validate --web-url
# Export to file (csv / json / yaml / parquet inferred from the extension)
pynteracta posts list --community 79 --all --export posts.parquet
pynteracta --version
Features (v0.9.x)
- Authentication — service-account RS512 JWT assertion with token lifecycle and file/memory
cache (POSIX
0o600/0o700enforcement), or Google OAuth2 access-token exchange. - Read resources —
auth,users,posts,communities,catalogs,attachments,tasks,groups,hashtags,admin_manage(manage/edit forms). One facade per response with a.rawescape hatch to the generated DTO. - Filtering & sorting — curated kwargs/flags for posts and users, custom-field and workflow
screen-field filters with opt-in validation against the community post-definition, generic
--filter KEY=VALUEpassthrough. - Pagination — lazy
iterate*()helpers in Python;--all,--page-token,--countin the CLI. - CLI output —
table/json/yaml,--fulland--fieldsfield selection,--web-urldeep links,--exportto csv/json/yaml/parquet. - Configuration — 4-level precedence: built-in defaults →
config.tomlprofiles →PYNTERACTA_*env vars → CLI flags;configsub-commands edit the file without losing comments. - Logging — structured logging with token redaction; optional API call audit log to console and rotating JSON-lines file.
Configuration
Config file: ~/.config/pynteracta/config.toml (Linux/macOS, XDG; %LOCALAPPDATA%\pynteracta\
on Windows).
current_profile = "default"
[profiles.default]
base_url = "https://interacta.example.it"
service_account_key = "~/.config/pynteracta/sa.json"
Environment variables: PYNTERACTA_BASE_URL, PYNTERACTA_SERVICE_ACCOUNT_KEY,
PYNTERACTA_LOG_LEVEL, etc. See docs/configuration.md for the full
reference.
Documentation
Full documentation: https://simodalla.github.io/pynteracta/
- CLI reference — every command, flag and exit code.
- Guides: filtering and sorting posts, filtering and sorting users.
- Authentication, configuration, audit logging, testing.
- Planning:
ROADMAP.md(what ships when),specs/(one spec per version),WORKFLOW.md(how we work),CHANGELOG.md.
To preview the site locally: uv run mkdocs serve.
License
Apache-2.0 — see LICENSE.
Note for users of pynteracta 0.4.x and earlier
Version 0.9.4 and every later version are a complete rewrite of this project. The package name
on PyPI is the same, but the code is not: the library was rebuilt from scratch, and its public API
is not compatible with the 0.4.x line. (PyPI jumps straight from 0.4.30 to 0.9.4: the
rewrite's earlier versions were released on GitHub only.) Upgrading from 0.4.x will break your code, and there
is no migration path — the two versions share no common API surface.
What changed:
0.4.30 and earlier |
0.9.4 and later |
|
|---|---|---|
| Library API | pynteracta.api / pynteracta.core / pynteracta.schemas |
InteractaClient + pynteracta.api.* resource clients |
| CLI command | pynta |
pynteracta |
| HTTP backend | requests |
httpx |
| License | BSD-3-Clause | Apache-2.0 |
| Scope | read + write | read-only surface (writes deferred) |
If you depend on the old line, it is still published and installable — nothing has been removed or yanked. Pin it explicitly:
uv pip install "pynteracta==0.4.30"
The 0.4.x releases receive no further updates. New work happens on the rewrite.
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 pynteracta-0.9.4.tar.gz.
File metadata
- Download URL: pynteracta-0.9.4.tar.gz
- Upload date:
- Size: 443.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e0bf67868b6c1f92e0063e7f49286cae0f57fec65611f8dc4881985aee5239a
|
|
| MD5 |
375157303fb06a25141e3a074cd14248
|
|
| BLAKE2b-256 |
d5c52ce3295226c916ae7731fbb642c87af4296b4a560595503eaba41476daab
|
Provenance
The following attestation bundles were made for pynteracta-0.9.4.tar.gz:
Publisher:
release.yml on simodalla/pynteracta
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pynteracta-0.9.4.tar.gz -
Subject digest:
0e0bf67868b6c1f92e0063e7f49286cae0f57fec65611f8dc4881985aee5239a - Sigstore transparency entry: 2809602546
- Sigstore integration time:
-
Permalink:
simodalla/pynteracta@f0398bc13b8fee51e98925536338c48460dd4324 -
Branch / Tag:
refs/tags/v0.9.4 - Owner: https://github.com/simodalla
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@f0398bc13b8fee51e98925536338c48460dd4324 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pynteracta-0.9.4-py3-none-any.whl.
File metadata
- Download URL: pynteracta-0.9.4-py3-none-any.whl
- Upload date:
- Size: 128.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
03ada86fbd27327e4e6f8931bd7b084b97b215859fa06a3cfb638154da3ba764
|
|
| MD5 |
5650682ed998e9551c5c05838047ecb1
|
|
| BLAKE2b-256 |
3b69dfa77f4afde758fdd10c8c5734996f9fba2b365cf55ed2079c89fff2e447
|
Provenance
The following attestation bundles were made for pynteracta-0.9.4-py3-none-any.whl:
Publisher:
release.yml on simodalla/pynteracta
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pynteracta-0.9.4-py3-none-any.whl -
Subject digest:
03ada86fbd27327e4e6f8931bd7b084b97b215859fa06a3cfb638154da3ba764 - Sigstore transparency entry: 2809602646
- Sigstore integration time:
-
Permalink:
simodalla/pynteracta@f0398bc13b8fee51e98925536338c48460dd4324 -
Branch / Tag:
refs/tags/v0.9.4 - Owner: https://github.com/simodalla
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@f0398bc13b8fee51e98925536338c48460dd4324 -
Trigger Event:
push
-
Statement type: