76 lines
1.8 KiB
Markdown
76 lines
1.8 KiB
Markdown
# Conduit Python Client
|
|
|
|
Small synchronous Python client for the Conduit / Mega API gateway.
|
|
|
|
```python
|
|
from conduit import Client
|
|
|
|
client = Client.from_env()
|
|
|
|
print(client.health())
|
|
print(client.auth.me())
|
|
print(client.keys.list())
|
|
```
|
|
|
|
Configure it with environment variables:
|
|
|
|
```sh
|
|
export MEGA_API_BASE_URL=https://api.cowtunnel.com
|
|
export MEGA_API_KEY='mega_sk_live_...'
|
|
```
|
|
|
|
Do not put raw API keys in source files. Mega API keys are shown once by the
|
|
gateway and should live in environment variables, a secret manager, or a local
|
|
ignored config file.
|
|
|
|
## Common Calls
|
|
|
|
```python
|
|
from conduit import Client
|
|
|
|
client = Client(base_url="https://api.cowtunnel.com", api_key="...")
|
|
|
|
client.services.list()
|
|
client.sms.history(limit=1)
|
|
client.dns.server_status()
|
|
client.compute.resources(type="vm")
|
|
client.media.library.search(term="matrix", limit=5)
|
|
client.media.ingest.jobs()
|
|
```
|
|
|
|
Key management:
|
|
|
|
```python
|
|
created = client.keys.create(
|
|
display_name="automation",
|
|
scopes=["gateway:read", "sms:read"],
|
|
)
|
|
print(created["key"]) # shown only once
|
|
|
|
client.keys.revoke(created["key_prefix"])
|
|
```
|
|
|
|
Admin audit:
|
|
|
|
```python
|
|
client.admin.audit(scope="sms:send", result="denied")
|
|
```
|
|
|
|
## Errors
|
|
|
|
The library raises:
|
|
|
|
| Exception | Meaning |
|
|
|---|---|
|
|
| `MegaAPIConfigError` | Invalid/missing client configuration |
|
|
| `MegaAPIHTTPError` | Non-2xx response; includes `status_code`, `detail`, and `body` |
|
|
| `MegaAPIConnectionError` | Could not reach the gateway |
|
|
| `MegaAPIResponseError` | Gateway returned malformed JSON where JSON was expected |
|
|
|
|
## Naming
|
|
|
|
The import package is `conduit` for the private package registry. The public PyPI
|
|
name `conduit` is already used by an unrelated project, so publish publicly as
|
|
`conduit-client` if this ever leaves the private registry. `megaapi` remains as a
|
|
compatibility import alias.
|