from ...engine import R2REngine
from ..requests import (
R2RAnalyticsRequest,
R2RDeleteRequest,
R2RDocumentChunksRequest,
R2RDocumentsOverviewRequest,
R2RLogsRequest,
R2RPrintRelationshipsRequest,
R2RUpdatePromptRequest,
R2RUsersOverviewRequest,
)
from .base_router import BaseRouter
class ManagementRouter(BaseRouter):
def __init__(self, engine: R2REngine):
super().__init__(engine)
self.setup_routes()
def setup_routes(self):
@self.router.get("/health")
async def health_check():
return {"response": "ok"}
@self.router.post("/update_prompt")
@self.base_endpoint
async def update_prompt_app(request: R2RUpdatePromptRequest):
return await self.engine.aupdate_prompt(
request.name, request.template, request.input_types
)
@self.router.post("/logs")
@self.router.get("/logs")
@self.base_endpoint
async def get_logs_app(request: R2RLogsRequest):
return await self.engine.alogs(
log_type_filter=request.log_type_filter,
max_runs_requested=request.max_runs_requested,
)
@self.router.post("/analytics")
@self.router.get("/analytics")
@self.base_endpoint
async def get_analytics_app(request: R2RAnalyticsRequest):
return await self.engine.aanalytics(
filter_criteria=request.filter_criteria,
analysis_types=request.analysis_types,
)
@self.router.post("/users_overview")
@self.router.get("/users_overview")
@self.base_endpoint
async def get_users_overview_app(request: R2RUsersOverviewRequest):
return await self.engine.ausers_overview(user_ids=request.user_ids)
@self.router.delete("/delete")
@self.base_endpoint
async def delete_app(request: R2RDeleteRequest):
return await self.engine.adelete(
keys=request.keys, values=request.values
)
@self.router.post("/documents_overview")
@self.router.get("/documents_overview")
@self.base_endpoint
async def get_documents_overview_app(
request: R2RDocumentsOverviewRequest,
):
return await self.engine.adocuments_overview(
document_ids=request.document_ids, user_ids=request.user_ids
)
@self.router.post("/document_chunks")
@self.router.get("/document_chunks")
@self.base_endpoint
async def get_document_chunks_app(request: R2RDocumentChunksRequest):
return await self.engine.adocument_chunks(request.document_id)
@self.router.post("/inspect_knowledge_graph")
@self.router.get("/inspect_knowledge_graph")
@self.base_endpoint
async def inspect_knowledge_graph(
request: R2RPrintRelationshipsRequest,
):
return await self.engine.inspect_knowledge_graph(
limit=request.limit
)
@self.router.get("/app_settings")
@self.base_endpoint
async def get_app_settings_app():
return await self.engine.aapp_settings()
@self.router.get("/openapi_spec")
@self.base_endpoint
def get_openapi_spec_app():
return self.engine.openapi_spec()
def create_management_router(engine: R2REngine):
return ManagementRouter(engine).router