feat(api): standardize REST contracts and auth

This commit is contained in:
2026-07-30 20:38:51 +08:00
parent ae1a657554
commit ba947b616b
86 changed files with 54193 additions and 990 deletions
+17 -17
View File
@@ -151,14 +151,14 @@ async def _upsert_and_audit_metadata_user(
return MetadataUserResponse.model_validate(user)
@router.get("/me", response_model=MetadataUserResponse)
@router.get("/admin/users/me", response_model=MetadataUserResponse)
async def get_metadata_admin_me(
current_user=Depends(get_current_metadata_admin),
) -> MetadataUserResponse:
return MetadataUserResponse.model_validate(current_user)
@router.post("/users/sync", response_model=MetadataUserResponse)
@router.post("/admin/user-syncs", response_model=MetadataUserResponse)
async def sync_metadata_user(
payload: MetadataUserSyncRequest,
current_user=Depends(get_current_metadata_admin),
@@ -184,7 +184,7 @@ async def sync_metadata_user(
@router.post("/users/sync/batch", response_model=List[MetadataUserSyncResult])
@router.post("/admin/user-syncs/batches", response_model=List[MetadataUserSyncResult])
async def sync_metadata_users_batch(
payload: MetadataUsersBatchSyncRequest,
current_user=Depends(get_current_metadata_admin),
@@ -228,7 +228,7 @@ async def sync_metadata_users_batch(
return results
@router.get("/users", response_model=List[MetadataUserResponse])
@router.get("/admin/users", response_model=List[MetadataUserResponse])
async def list_metadata_users(
skip: int = Query(0, ge=0),
limit: int = Query(100, ge=1, le=1000),
@@ -239,7 +239,7 @@ async def list_metadata_users(
return [MetadataUserResponse.model_validate(user) for user in users]
@router.get("/projects", response_model=List[AdminProjectResponse])
@router.get("/admin/projects", response_model=List[AdminProjectResponse])
async def list_admin_projects(
current_user=Depends(get_current_metadata_admin),
metadata_repo: MetadataRepository = Depends(get_metadata_repository),
@@ -249,7 +249,7 @@ async def list_admin_projects(
@router.post(
"/projects",
"/admin/projects",
response_model=AdminProjectResponse,
status_code=status.HTTP_201_CREATED,
)
@@ -293,7 +293,7 @@ async def create_admin_project(
@router.patch(
"/projects/{project_id}",
"/admin/projects/{project_id}",
response_model=AdminProjectResponse,
)
async def update_admin_project(
@@ -332,7 +332,7 @@ async def update_admin_project(
@router.get(
"/projects/{project_id}/databases",
"/admin/projects/{project_id}/databases",
response_model=List[ProjectDatabaseResponse],
)
async def list_project_databases(
@@ -348,7 +348,7 @@ async def list_project_databases(
@router.put(
"/projects/{project_id}/databases",
"/admin/projects/{project_id}/databases",
response_model=ProjectDatabaseResponse,
)
async def upsert_project_database(
@@ -421,7 +421,7 @@ async def upsert_project_database(
@router.delete(
"/projects/{project_id}/databases/{db_role}",
"/admin/projects/{project_id}/databases/{db_role}",
status_code=status.HTTP_204_NO_CONTENT,
)
async def delete_project_database(
@@ -449,7 +449,7 @@ async def delete_project_database(
@router.post(
"/projects/{project_id}/databases/{db_role}/health",
"/admin/projects/{project_id}/databases/{db_role}/health-checks",
response_model=ProjectDatabaseHealthResponse,
)
async def check_project_database_health(
@@ -504,7 +504,7 @@ async def check_project_database_health(
)
@router.get("/users/{user_id}", response_model=MetadataUserResponse)
@router.get("/admin/users/{user_id}", response_model=MetadataUserResponse)
async def get_metadata_user(
user_id: UUID = Path(...),
current_user=Depends(get_current_metadata_admin),
@@ -516,7 +516,7 @@ async def get_metadata_user(
return MetadataUserResponse.model_validate(user)
@router.patch("/users/{user_id}", response_model=MetadataUserResponse)
@router.patch("/admin/users/{user_id}", response_model=MetadataUserResponse)
async def update_metadata_user(
payload: MetadataUserUpdateRequest,
user_id: UUID = Path(...),
@@ -549,7 +549,7 @@ async def update_metadata_user(
@router.get(
"/projects/{project_id}/members",
"/admin/projects/{project_id}/members",
response_model=List[ProjectMemberResponse],
)
async def list_project_members(
@@ -567,7 +567,7 @@ async def list_project_members(
@router.post(
"/projects/{project_id}/members",
"/admin/projects/{project_id}/members",
response_model=ProjectMemberResponse,
status_code=status.HTTP_201_CREATED,
)
@@ -622,7 +622,7 @@ async def add_project_member(
@router.patch(
"/projects/{project_id}/members/{user_id}",
"/admin/projects/{project_id}/members/{user_id}",
response_model=ProjectMemberResponse,
)
async def update_project_member(
@@ -668,7 +668,7 @@ async def update_project_member(
)
@router.delete("/projects/{project_id}/members/{user_id}", status_code=status.HTTP_204_NO_CONTENT)
@router.delete("/admin/projects/{project_id}/members/{user_id}", status_code=status.HTTP_204_NO_CONTENT)
async def remove_project_member(
project_id: UUID = Path(...),
user_id: UUID = Path(...),