Metadata-Version: 2.4
Name: suredata-client
Version: 0.1.2
Summary: Python client and CLI for extracting data from the Sure Finance API
Requires-Python: >=3.12
Requires-Dist: httpx>=0.28
Requires-Dist: typer>=0.15
Provides-Extra: dev
Requires-Dist: pytest-httpx>=0.35; extra == 'dev'
Requires-Dist: pytest>=8.3; extra == 'dev'
Requires-Dist: ruff>=0.9; extra == 'dev'
Description-Content-Type: text/markdown

# suredata-client

Python package and CLI for extracting data from the [Sure Finance API](https://github.com/we-promise/sure).

## Install

```bash
uv sync --all-extras
```

## Configuration

| Variable | Description |
| -------- | ----------- |
| `SURE_BASE_URL` | API base URL (default: `https://app.sure.am`) |
| `SURE_API_KEY` | API key sent as `X-Api-Key` |

CLI flags `--base-url` and `--api-key` override environment variables.

## CLI

```bash
# List supported resources
suredata-client resources

# List one page of accounts
export SURE_API_KEY=your-key
suredata-client list accounts --page 1 --per-page 25

# Fetch all pages as JSON
suredata-client list transactions --all -o json

# Stream JSONL to a file (container-friendly)
suredata-client list categories --all -o jsonl -f /data/categories.jsonl

# Get a single record
suredata-client get accounts <uuid>

# Balance sheet
suredata-client balance-sheet
```

### Docker-style usage

```bash
docker run --rm \
  -e SURE_API_KEY \
  -e SURE_BASE_URL=https://app.sure.am \
  suredata-client:latest \
  list transactions --all -o jsonl -f /out/transactions.jsonl
```

## Python API

```python
from suredata_client import SureClient, load_settings
from suredata_client.endpoints import Endpoints

settings = load_settings()  # reads SURE_* env vars
with SureClient(settings) as client:
    api = Endpoints(client)
    for account in api.iter_all("accounts"):
        print(account["name"])
```

## Development

```bash
uv sync --all-extras
ruff format .
ruff check .
uvx ty check
pytest
```

## MVP resources

`accounts`, `transactions`, `categories`, `merchants`, `tags`, `balances`, `holdings`, `trades`, `transfers`, `budgets`, `valuations`, `syncs`, `imports`, `family_exports`, plus `balance-sheet`.
