Files
asf/services/asf-core/app/api/v1/audit.py
T
2026-09-08 07:21:34 -04:00

28 lines
825 B
Python

"""Audit trail API (read-only in bootstrap — append-only via services)."""
from __future__ import annotations
from typing import Optional
from uuid import UUID
from fastapi import APIRouter, Depends, Query
from asf_domain import AuditEvent
from .deps import audit_service
from ...services import AuditService
router = APIRouter()
@router.get("", response_model=list[AuditEvent], summary="List audit events (tenant scoped, newest first)")
async def list_audit(
actor_id: Optional[UUID] = Query(None),
resource_type: Optional[str] = Query(None),
limit: int = Query(100, ge=1, le=500),
offset: int = Query(0, ge=0),
svc: AuditService = Depends(audit_service),
) -> list[AuditEvent]:
return await svc.list(
limit=limit, offset=offset, actor_id=actor_id, resource_type=resource_type
)