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