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