> ## Documentation Index
> Fetch the complete documentation index at: https://docs.manthan.systems/llms.txt
> Use this file to discover all available pages before exploring further.

# ParmanaClient

> The Python SDK's entry point, and how its behavior actually differs from TypeScript's

`ParmanaClient` (`python/parmana/client.py`) composes seven sub-APIs, each exposed as a public attribute rather than wrapped in top-level convenience methods:

```python theme={null}
client = ParmanaClient(endpoint="http://localhost:3000")

trust_record = client.execution.execute(transaction)
verification = client.verification.verify(trust_record.business_transaction_id)
receipt = client.receipt.generate(trust_record.business_transaction_id)
replay = client.replay.replay(trust_record.business_transaction_id)
transaction = client.transactions.get(trust_record.business_transaction_id)
trust_record_again = client.trust_records.get(trust_record.business_transaction_id)
result = client.policy.validate({"policyId": "vendor-payment", "policyVersion": "1.0.0"})
```

| Attribute       | Class             | Methods                                                      |
| --------------- | ----------------- | ------------------------------------------------------------ |
| `execution`     | `ExecutionApi`    | `health()`, `execute(transaction)`                           |
| `verification`  | `VerificationApi` | `verify(business_transaction_id)`                            |
| `replay`        | `ReplayApi`       | `replay(business_transaction_id)`                            |
| `receipt`       | `ReceiptApi`      | `generate(business_transaction_id)`                          |
| `transactions`  | `TransactionApi`  | `get(business_transaction_id)`, `list(page=1, page_size=25)` |
| `trust_records` | `TrustRecordApi`  | `get(business_transaction_id)`                               |
| `policy`        | `PolicyApi`       | `validate(policy)`                                           |

This mirrors the TypeScript SDK's seven functional areas closely, but the two clients are shaped differently: TypeScript exposes flat methods directly on `ParmanaClient` (`client.execute(...)`, `client.verify(...)`) that delegate internally to sub-API instances; Python exposes the sub-API instances themselves as public attributes (`client.execution.execute(...)`, `client.verification.verify(...)`) with no flat top-level shortcuts.

<Warning>
  **`verify()` does not mean the same thing in both SDKs.** This is the most important behavioral divergence between the two clients:

  * **TypeScript** `client.verify(businessTransactionId)` → `VerificationApi.verify()` → `GET /verification/${id}`. It **reads** the latest already-computed [Verification](/docs/concepts/verification); it never triggers a new one.
  * **Python** `client.verification.verify(business_transaction_id)` → `VerificationApi.verify()` (`python/parmana/api/verification_api.py`) → `POST /verify` with `{"businessTransactionId": business_transaction_id}`. It **triggers a new verification** — the exact same effect as [`POST /verify`](/docs/api/verify#trigger-a-verification) over HTTP, appending a fresh `Verification` to the trust record.

  If you call the Python SDK's `verify()` expecting a side-effect-free read (as the TypeScript method name would suggest), you'll instead create a new persisted Verification record each time. There is no Python method that performs the read-only `GET /verification/:id` lookup — if you need that, call it directly over HTTP.
</Warning>

## Properties

```python theme={null}
client.endpoint  # -> str, delegates to the underlying HttpTransport
client.version   # -> str, the SDK's own __version__, not the Runtime's /version
```

`repr(client)` returns `ParmanaClient(endpoint='...', version='...')` (`__repr__` on `ParmanaClient`).

## Related

<CardGroup cols={2}>
  <Card title="Installation" href="/docs/python-sdk/installation">Constructing the client.</Card>
  <Card title="APIs & Models" href="/docs/python-sdk/apis-and-models">Every sub-API and model in detail.</Card>
  <Card title="Verify (REST API)" href="/docs/api/verify">The two real HTTP endpoints behind "verify."</Card>
  <Card title="TypeScript SDK — ParmanaClient" href="/docs/typescript-sdk/parmana-client">The other client's shape.</Card>
</CardGroup>
