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, 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/0o700 enforcement), or Google OAuth2 access-token exchange.
  • Read resourcesauth, 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.
  • 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 outputtable / 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-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

pynteracta-0.9.4.tar.gz (443.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pynteracta-0.9.4-py3-none-any.whl (128.3 kB view details)

Uploaded Python 3

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

Hashes for pynteracta-0.9.4.tar.gz
Algorithm Hash digest
SHA256 0e0bf67868b6c1f92e0063e7f49286cae0f57fec65611f8dc4881985aee5239a
MD5 375157303fb06a25141e3a074cd14248
BLAKE2b-256 d5c52ce3295226c916ae7731fbb642c87af4296b4a560595503eaba41476daab

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynteracta-0.9.4.tar.gz:

Publisher: release.yml on simodalla/pynteracta

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for pynteracta-0.9.4-py3-none-any.whl
Algorithm Hash digest
SHA256 03ada86fbd27327e4e6f8931bd7b084b97b215859fa06a3cfb638154da3ba764
MD5 5650682ed998e9551c5c05838047ecb1
BLAKE2b-256 3b69dfa77f4afde758fdd10c8c5734996f9fba2b365cf55ed2079c89fff2e447

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynteracta-0.9.4-py3-none-any.whl:

Publisher: release.yml on simodalla/pynteracta

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.9.4 This release

2 files

0.4.30

2 files

0.4.29

2 files

0.4.28

2 files

0.4.25

2 files

0.4.24

2 files

0.4.23

2 files

0.4.22

2 files

0.4.21

2 files

0.4.19

2 files

0.4.18

2 files

0.4.17

2 files

0.4.16

2 files

0.4.15

2 files

0.4.14

2 files

0.4.13

2 files

0.4.12

2 files

0.4.11

2 files

0.4.10

2 files

0.4.9

2 files

0.4.8

2 files

0.4.7

2 files

0.4.6

2 files

0.4.5

2 files

0.4.3

2 files

0.4.2

2 files

0.4.1

2 files

0.3.7

2 files

0.3.5

2 files

0.3.4

2 files

0.1.3

2 files

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