# 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

Phase 4 refactor is complete. `main.py` is now a thin 41-LOC entry point:

```
dsms-gateway/
├── main.py              # FastAPI app factory, 41 LOC
├── routers/
│   ├── documents.py     # /documents, /legal-documents, /verify routes
│   └── node.py          # /node routes
├── models.py            # Pydantic models
├── dependencies.py      # Shared FastAPI dependencies
└── config.py            # Settings
```

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
```

27/27 tests pass. Test coverage matches the current module structure.

## 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.
