Skip to main content

pynteracta

CI License: Apache-2.0 Python 3.12+ Docs

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 and typed: service-account and Google OAuth2 authentication, ten read resources, a write surface that grows one resource group at a time (tasks, posts, attachment upload and the admin area so far), a Typer CLI with table/JSON/YAML output and file export. Current version and contents: 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, pick one from the releases page:

uv pip install "pynteracta @ git+https://github.com/simodalla/pynteracta@vX.Y.Z"

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

  • Authentication — service-account RS512 JWT assertion with token lifecycle and file/memory cache (POSIX 0o600/0o700 enforcement), 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 .raw escape hatch to the generated DTO.
  • Write operations — tasks create/edit/delete, custom posts (create, edit, copy, custom data, watchers, attachments, delete, mark-as-erasable, comments, workflow), admin users (create, edit, delete, credentials), admin groups (create, edit, delete, members), admin catalogs and catalog entries (create, edit, logical delete, restore) and the admin workspace edit (name, description, members, roles, cover and logo), with explicit kwargs and *_raw variants in the library and tasks … / posts … / users … / groups … / catalogs … / admin-manage edit-workspace write commands in the CLI (confirmation on destructive commands, exit code 9 on occToken conflicts, no automatic retry of uncertain writes). Event posts follow.
  • Attachment upload — client.attachments.upload() and --attach / attachments upload / posts edit-attachments in the CLI; the uploaded file is attached to posts, comments and tasks, with no Interacta token sent to the storage and signed links redacted from logs.
  • 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=VALUE passthrough.
  • Pagination — lazy iterate*() helpers in Python; --all, --page-token, --count in the CLI.
  • CLI output — table / json / yaml, --full and --fields field selection, --web-url deep links, --export to csv/json/yaml/parquet.
  • Configuration — 4-level precedence: built-in defaults → config.toml profiles → PYNTERACTA_* env vars → CLI flags; config sub-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/

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 surface complete; writes reopened one group at a time (tasks first)

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.

Metadata

Release files for pynteracta 0.13.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pynteracta 0.13.1
File Size Uploaded Provenance
pynteracta-0.13.1.tar.gz 805.4 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for pynteracta 0.13.1
File Interpreter ABI Platform
pynteracta-0.13.1-py3-none-any.whl Python 3 none any Details

Total release size: 996.4 kB

Release files / pynteracta-0.13.1.tar.gz

Download URL pynteracta-0.13.1.tar.gz
Size 805.4 kB
Tags Source
SHA-256 checksum
How to use checksums
01560787cff57a93a941069440f9c4bc7a31288744b5cfbc2231d75860725e32
BLAKE2b-256 checksum
How to use checksums
23749de5245ab43829ef912122b0920b0c131c0b510094b861bf5fc52d64820f
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 Oct 12, 2026.

Transparency log

Release files / pynteracta-0.13.1-py3-none-any.whl

Download URL pynteracta-0.13.1-py3-none-any.whl
Size 191.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
eb9cd541628f28ca5b20aeb52668aece19c53b08734385363413c2b04678106e
BLAKE2b-256 checksum
How to use checksums
43c7fe14f6e91b554ac0421c9f064c39bc482f1af087f25486dad64c5d479ba3
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 Oct 12, 2026.

Transparency log

Security for pynteracta 0.13.1

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for pynteracta-0.13.1.tar.gz

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 Oct 12, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.13.1 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page