Skip to main content

ECZ-ID API Inspection

ecz-id-api inspects API projects for ECZ-ID configuration posture and, optionally, checks read-only public proof on the Resolver. It is part of the ECZ-ID PyPI family. It inspects, explains and routes only.

It never issues or activates an ECZ-ID, never determines BOUND, never calculates carts or prices, never creates proof, and never executes discovered project, agent, MCP or robot code. It is not a safety, certification, approval, compliance, insurance or premium decision, and it is not an API security, vulnerability, availability or correctness assessment. Missing public proof is neutral: it does not mean unsafe. Local policy decides. Re-check before reliance.

One-command first run

$ ecz-id-api inspect ./my-api-project
ECZ-ID inspection: ./my-api-project [ecz-id-api]
A. configuration posture : PRESENT
B. public proof posture  : NOT_CHECKED  (neutral)
means        : Local ECZ-ID configuration was found for this subject. | Public Resolver proof was not checked.
does not mean: This is not an API security, vulnerability, availability or correctness assessment. | This result is not a safety, certification, approval, compliance, insurance or premium decision. | Missing public proof is neutral: it does not mean unsafe, non-compliant or untrustworthy.
reason codes : ECZ-1000, ECZ-2002
local policy decides; re-check before reliance

The first result is useful with no account, no network and no configuration. The public check is strictly opt-in (--check-public), so first runs are network-silent.

Supported inputs

  • A project directory containing an ECZ-ID API descriptor, or the descriptor file itself.
  • Descriptor names: ecz_id_config.json, ecz-id.json, ecz-id.toml, .ecz-id.toml.
  • Co-located OpenAPI / Swagger documents (openapi.json, openapi.yaml, openapi.yml, swagger.json) are observed for title, version, servers, contact and external docs — never fetched.

JSON is parsed natively. TOML needs Python 3.11+ or pip install ecz-id-api[toml]; YAML needs pip install ecz-id-api[yaml]. Without them, those formats degrade to a neutral note instead of failing.

Privacy boundaries

  • Bounded, read-only enumeration; never follows symlinks or escapes the root.
  • No telemetry, no uploads. The optional public check sends a lookup key only, to the validated Resolver host, over HTTPS.
  • Secrets are redacted from every export.
  • Offline mode (--offline or ECZ_ID_OFFLINE=1) skips all network.

Explicit non-claims

Not a safety / certification / approval / compliance / insurance / premium decision. Not an API security or vulnerability assessment. Does not issue, activate or bind an ECZ-ID. Does not price or cart.

Python API

from ecz_id_api import inspect

result = inspect("./my-api-project", check_public=False)
print(result.configuration_evidence.posture.value)   # PRESENT / PARTIAL / ABSENT / INVALID
print(result.public_evidence.posture.value)           # NOT_CHECKED by default

# Fully offline-testable: inject a fake opener so no real network call happens.
proof = b'{"proof": {"status": "PUBLIC_RECORD_PRESENT"}}'
checked = inspect("./my-api-project", check_public=True, opener=lambda url, t: proof)

CI / test example

$ ecz-id-api inspect . --json > ecz-id-api.json   # exit 0 for any completed inspection
$ ecz-id-api doctor --json                          # environment / parser availability

Exit code is 0 for every completed inspection regardless of posture (neutrality rule); non-zero only for genuine input/tool errors.

Routes

Setup, payment, lifecycle and repair happen in TrustOps — this package only routes you there.

Re-check

Posture and public proof can change at any time. Re-run before reliance:

$ ecz-id-api recheck ./my-api-project --json

Machine-readable integration

Machine Interface · Manifest · Resolver · Operator setup · Developer guidance

Each installation includes structured machine-readable metadata for automation, CI and supported integrations. Every JSON report embeds a compact machine_interface object with the canonical roots and safe, read-only actions.

The package runs locally to inspect, explain and route. It does not issue an ECZ-ID, write canonical truth, create public proof, price a cart, or replace Resolver proof.

$ ecz-id-api manifest --json
$ ecz-id-api compare ./old ./new --json    # neutral drift
$ ecz-id-api inspect . --sarif             # SARIF for code scanning
$ uvx ecz-id-api inspect .                 # or: pipx run ecz-id-api inspect .

Need help choosing the right ECZ-ID route?

Use ECZ-ID GPT guidance: https://trustops.ecocitizenz.com/start#gpt-guidance

Route guidance only. TrustOps handles setup; Backend/Core writes truth; Resolver proves public state. Local policy decides reliance. Re-check before reliance.

Continue with ECZ-ID

Licence and trademarks

Apache-2.0 (see LICENSE, NOTICE). The code licence grants no trademark rights; “ECZ-ID” and “EcoCitizenz” are trademarks of their owner(s) — see TRADEMARKS.md. Changelog: CHANGELOG.md. Security: SECURITY.md.

CLI: ecz-id-api  |  Import: ecz_id_api  |  Plugin group: ecz_id.plugins

Metadata

Release files for ecz-id-api 0.1.2

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

Source distribution (sdist)

Source distribution for ecz-id-api 0.1.2
File Size Uploaded
ecz_id_api-0.1.2.tar.gz 15.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ecz-id-api 0.1.2
File Interpreter ABI Platform
ecz_id_api-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 31.3 kB

Release files / ecz_id_api-0.1.2.tar.gz

Download URL ecz_id_api-0.1.2.tar.gz
Size 15.9 kB
Tags Source
SHA-256 checksum
How to use checksums
6d8ee3fc0225b76d658f4ec9ee5ea2bd2f9dc6ca099305f698b7fa7eb50f0e07
BLAKE2b-256 checksum
How to use checksums
c594fdbf7b276d5e07629756a3d4404bbe48ae2e82e4969fcb4d94b8cf8d404b
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 13, 2026.

Transparency log

Release files / ecz_id_api-0.1.2-py3-none-any.whl

Download URL ecz_id_api-0.1.2-py3-none-any.whl
Size 15.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8cf5e52786cae2ea74502fa7f6386d66bfc5d766f0b82564712f3abdeda3789f
BLAKE2b-256 checksum
How to use checksums
b142dee5db88ba466202e6f30bd8eef99c60b667ffaf72df3d2049b21ebd78b1
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 13, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release 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