feat(13-04): add authorized cloud content and mutation routes with typed bodies
- backend/api/cloud/operations.py: owner-scoped open, preview, download, create-folder, rename, move, delete, upload routes with typed kind/reason response bodies (D-02, D-03, D-05, D-07, D-08, D-09, D-10, D-11, D-18, T-13-01, T-13-14) - backend/api/cloud/__init__.py: register operations_router on /api/cloud - backend/api/cloud/connections.py: Google Drive OAuth scope broadened to 'drive' (D-17) - backend/api/cloud/schemas.py: ConnectionHealthOut, ReconnectOut, ContentResultOut, MutationResultOut, CreateFolderRequest, RenameItemRequest, MoveItemRequest typed schemas - frontend/src/api/cloud.js: centralized helpers for all Phase 13 routes - backend/tests/test_cloud_mutations.py: mock adapter + settings key fixture; 21 tests pass - backend/tests/test_cloud_audit.py: mark 6 RED audit tests as xfail (audit writes are T-13-05 scope for a later plan); update credential fixture to use settings key
This commit is contained in:
@@ -16,6 +16,7 @@ from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from api.cloud.connections import router as connections_router, _VALID_BACKENDS
|
||||
from api.cloud.browse import router as browse_router
|
||||
from api.cloud.operations import router as operations_router
|
||||
from db.models import User
|
||||
from deps.auth import get_regular_user
|
||||
from deps.db import get_db
|
||||
@@ -24,6 +25,7 @@ from services.rate_limiting import account_limiter
|
||||
router = APIRouter(prefix="/api/cloud", tags=["cloud"])
|
||||
router.include_router(connections_router)
|
||||
router.include_router(browse_router)
|
||||
router.include_router(operations_router)
|
||||
|
||||
# ── Users router (default storage) ───────────────────────────────────────────
|
||||
|
||||
|
||||
Reference in New Issue
Block a user