docs: tag API endpoints for better organization
This commit is contained in:
BIN
decnet.db-shm
Normal file
BIN
decnet.db-shm
Normal file
Binary file not shown.
BIN
decnet.db-wal
Normal file
BIN
decnet.db-wal
Normal file
Binary file not shown.
@@ -145,7 +145,7 @@ class BountyResponse(BaseModel):
|
|||||||
data: list[dict[str, Any]]
|
data: list[dict[str, Any]]
|
||||||
|
|
||||||
|
|
||||||
@app.post("/api/v1/auth/login", response_model=Token)
|
@app.post("/api/v1/auth/login", response_model=Token, tags=["Authentication"])
|
||||||
async def login(request: LoginRequest) -> dict[str, Any]:
|
async def login(request: LoginRequest) -> dict[str, Any]:
|
||||||
_user: Optional[dict[str, Any]] = await repo.get_user_by_username(request.username)
|
_user: Optional[dict[str, Any]] = await repo.get_user_by_username(request.username)
|
||||||
if not _user or not verify_password(request.password, _user["password_hash"]):
|
if not _user or not verify_password(request.password, _user["password_hash"]):
|
||||||
@@ -167,7 +167,7 @@ async def login(request: LoginRequest) -> dict[str, Any]:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@app.post("/api/v1/auth/change-password")
|
@app.post("/api/v1/auth/change-password", tags=["Authentication"])
|
||||||
async def change_password(request: ChangePasswordRequest, current_user: str = Depends(get_current_user)) -> dict[str, str]:
|
async def change_password(request: ChangePasswordRequest, current_user: str = Depends(get_current_user)) -> dict[str, str]:
|
||||||
_user: Optional[dict[str, Any]] = await repo.get_user_by_uuid(current_user)
|
_user: Optional[dict[str, Any]] = await repo.get_user_by_uuid(current_user)
|
||||||
if not _user or not verify_password(request.old_password, _user["password_hash"]):
|
if not _user or not verify_password(request.old_password, _user["password_hash"]):
|
||||||
@@ -181,7 +181,7 @@ async def change_password(request: ChangePasswordRequest, current_user: str = De
|
|||||||
return {"message": "Password updated successfully"}
|
return {"message": "Password updated successfully"}
|
||||||
|
|
||||||
|
|
||||||
@app.get("/api/v1/logs", response_model=LogsResponse)
|
@app.get("/api/v1/logs", response_model=LogsResponse, tags=["Logs"])
|
||||||
async def get_logs(
|
async def get_logs(
|
||||||
limit: int = Query(50, ge=1, le=1000),
|
limit: int = Query(50, ge=1, le=1000),
|
||||||
offset: int = Query(0, ge=0),
|
offset: int = Query(0, ge=0),
|
||||||
@@ -200,7 +200,7 @@ async def get_logs(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@app.get("/api/v1/bounty", response_model=BountyResponse)
|
@app.get("/api/v1/bounty", response_model=BountyResponse, tags=["Bounty Vault"])
|
||||||
async def get_bounties(
|
async def get_bounties(
|
||||||
limit: int = Query(50, ge=1, le=1000),
|
limit: int = Query(50, ge=1, le=1000),
|
||||||
offset: int = Query(0, ge=0),
|
offset: int = Query(0, ge=0),
|
||||||
@@ -219,7 +219,7 @@ async def get_bounties(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@app.get("/api/v1/logs/histogram")
|
@app.get("/api/v1/logs/histogram", tags=["Logs"])
|
||||||
async def get_logs_histogram(
|
async def get_logs_histogram(
|
||||||
search: Optional[str] = None,
|
search: Optional[str] = None,
|
||||||
start_time: Optional[str] = None,
|
start_time: Optional[str] = None,
|
||||||
@@ -237,12 +237,12 @@ class StatsResponse(BaseModel):
|
|||||||
deployed_deckies: int
|
deployed_deckies: int
|
||||||
|
|
||||||
|
|
||||||
@app.get("/api/v1/stats", response_model=StatsResponse)
|
@app.get("/api/v1/stats", response_model=StatsResponse, tags=["Observability"])
|
||||||
async def get_stats(current_user: str = Depends(get_current_user)) -> dict[str, Any]:
|
async def get_stats(current_user: str = Depends(get_current_user)) -> dict[str, Any]:
|
||||||
return await repo.get_stats_summary()
|
return await repo.get_stats_summary()
|
||||||
|
|
||||||
|
|
||||||
@app.get("/api/v1/deckies")
|
@app.get("/api/v1/deckies", tags=["Fleet Management"])
|
||||||
async def get_deckies(current_user: str = Depends(get_current_user)) -> list[dict[str, Any]]:
|
async def get_deckies(current_user: str = Depends(get_current_user)) -> list[dict[str, Any]]:
|
||||||
return await repo.get_deckies()
|
return await repo.get_deckies()
|
||||||
|
|
||||||
@@ -251,7 +251,7 @@ class MutateIntervalRequest(BaseModel):
|
|||||||
mutate_interval: int | None
|
mutate_interval: int | None
|
||||||
|
|
||||||
|
|
||||||
@app.post("/api/v1/deckies/{decky_name}/mutate")
|
@app.post("/api/v1/deckies/{decky_name}/mutate", tags=["Fleet Management"])
|
||||||
async def api_mutate_decky(decky_name: str, current_user: str = Depends(get_current_user)) -> dict[str, str]:
|
async def api_mutate_decky(decky_name: str, current_user: str = Depends(get_current_user)) -> dict[str, str]:
|
||||||
from decnet.mutator import mutate_decky
|
from decnet.mutator import mutate_decky
|
||||||
success = mutate_decky(decky_name)
|
success = mutate_decky(decky_name)
|
||||||
@@ -260,7 +260,7 @@ async def api_mutate_decky(decky_name: str, current_user: str = Depends(get_curr
|
|||||||
raise HTTPException(status_code=404, detail=f"Decky {decky_name} not found or failed to mutate")
|
raise HTTPException(status_code=404, detail=f"Decky {decky_name} not found or failed to mutate")
|
||||||
|
|
||||||
|
|
||||||
@app.put("/api/v1/deckies/{decky_name}/mutate-interval")
|
@app.put("/api/v1/deckies/{decky_name}/mutate-interval", tags=["Fleet Management"])
|
||||||
async def api_update_mutate_interval(decky_name: str, req: MutateIntervalRequest, current_user: str = Depends(get_current_user)) -> dict[str, str]:
|
async def api_update_mutate_interval(decky_name: str, req: MutateIntervalRequest, current_user: str = Depends(get_current_user)) -> dict[str, str]:
|
||||||
from decnet.config import load_state, save_state
|
from decnet.config import load_state, save_state
|
||||||
state = load_state()
|
state = load_state()
|
||||||
@@ -275,7 +275,7 @@ async def api_update_mutate_interval(decky_name: str, req: MutateIntervalRequest
|
|||||||
return {"message": "Mutation interval updated"}
|
return {"message": "Mutation interval updated"}
|
||||||
|
|
||||||
|
|
||||||
@app.get("/api/v1/stream")
|
@app.get("/api/v1/stream", tags=["Observability"])
|
||||||
async def stream_events(
|
async def stream_events(
|
||||||
request: Request,
|
request: Request,
|
||||||
last_event_id: int = Query(0, alias="lastEventId"),
|
last_event_id: int = Query(0, alias="lastEventId"),
|
||||||
@@ -333,7 +333,7 @@ async def stream_events(
|
|||||||
class DeployIniRequest(BaseModel):
|
class DeployIniRequest(BaseModel):
|
||||||
ini_content: str = Field(..., min_length=5, max_length=512 * 1024)
|
ini_content: str = Field(..., min_length=5, max_length=512 * 1024)
|
||||||
|
|
||||||
@app.post("/api/v1/deckies/deploy")
|
@app.post("/api/v1/deckies/deploy", tags=["Fleet Management"])
|
||||||
async def api_deploy_deckies(req: DeployIniRequest, current_user: str = Depends(get_current_user)) -> dict[str, str]:
|
async def api_deploy_deckies(req: DeployIniRequest, current_user: str = Depends(get_current_user)) -> dict[str, str]:
|
||||||
from decnet.ini_loader import load_ini_from_string
|
from decnet.ini_loader import load_ini_from_string
|
||||||
from decnet.cli import _build_deckies_from_ini
|
from decnet.cli import _build_deckies_from_ini
|
||||||
|
|||||||
Reference in New Issue
Block a user