# dsms-gateway

Python/FastAPI gateway to the IPFS-backed document archival store. Upload, retrieve, verify, and archive legal documents with content-addressed immutability.

**Port:** `8082` (container: `bp-compliance-dsms-gateway`)
**Stack:** Python 3.11, FastAPI, IPFS (Kubo via `dsms-node`).

## Architecture (target — Phase 4)

`main.py` (467 LOC) will split into:

```
dsms_gateway/
├── main.py          # FastAPI app factory, <50 LOC
├── routers/         # /documents, /legal-documents, /verify, /node
├── ipfs/            # IPFS client wrapper
├── services/        # Business logic (archive, verify)
├── schemas/         # Pydantic models
└── config.py
```

See `../AGENTS.python.md`.

## Run locally

```bash
cd dsms-gateway
pip install -r requirements.txt
export IPFS_API_URL=http://localhost:5001
uvicorn main:app --reload --port 8082
```

## Tests

```bash
pytest test_main.py -v
```

Note: the existing test file is larger than the implementation — good coverage already. Phase 4 splits both into matching module pairs.

## Public API surface

```
GET    /health
GET    /api/v1/documents
POST   /api/v1/documents
GET    /api/v1/documents/{cid}
GET    /api/v1/documents/{cid}/metadata
DELETE /api/v1/documents/{cid}
POST   /api/v1/legal-documents/archive
GET    /api/v1/verify/{cid}
GET    /api/v1/node/info
```

Every path is a contract — updating requires synchronized updates in consumers.
