241713083b
- New Setting ORM model (key-value store with category, value_type, audit fields)
- Alembic migration to create the settings table
- Settings API endpoints: GET/PUT /api/v1/settings/{key}, GET /api/v1/settings (list+filter), POST /api/v1/settings/bulk
- Default seeding (17 sensible defaults across general/dmarc/dns/cloudflare/notifications categories)
- Secret redaction for cloudflare.api_token and notifications.smtp_password
- Updated settings.html: General, DMARC Policy Defaults, DNS Resolver, Cloudflare Integration, Email Notifications sections
- All forms wired to the API via Alpine.js with flash feedback
- 12 new tests for the settings model and endpoints
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/19dbc6cd-07cb-406e-b3b6-411f7721f737
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
25 lines
840 B
Python
25 lines
840 B
Python
from fastapi import APIRouter
|
|
|
|
from app.api.api_v1.endpoints import (
|
|
domains,
|
|
health,
|
|
imap,
|
|
mail_sources,
|
|
reports,
|
|
settings,
|
|
setup,
|
|
stats,
|
|
)
|
|
|
|
api_router = APIRouter()
|
|
|
|
# Include all endpoint routers
|
|
api_router.include_router(health.router, tags=["health"])
|
|
api_router.include_router(domains.router, prefix="/domains", tags=["domains"])
|
|
api_router.include_router(reports.router, prefix="/reports", tags=["reports"])
|
|
api_router.include_router(setup.router, prefix="/setup", tags=["setup"])
|
|
api_router.include_router(imap.router, prefix="/imap", tags=["imap"])
|
|
api_router.include_router(stats.router, prefix="/stats", tags=["stats"])
|
|
api_router.include_router(mail_sources.router, prefix="/mail-sources", tags=["mail-sources"])
|
|
api_router.include_router(settings.router, prefix="/settings", tags=["settings"])
|