from __future__ import annotations
from typing import Any
from ._base import BaseClient, RequestConfig
class AdminService:
def __init__(self, client: BaseClient) -> None:
self._client = client
async def get_system_stats(self) -> dict[str, Any]:
return await self._client.make_request("GET", "/admin/stats")
async def get_user_sessions(self, user_id: str) -> dict[str, Any]:
return await self._client.make_request(
"GET", f"/admin/users/{user_id}/sessions"
)
async def revoke_user_sessions(
self,
user_id: str,
session_id: str | None = None,
) -> dict[str, Any]:
endpoint = f"/admin/users/{user_id}/sessions"
if session_id:
endpoint += f"/{session_id}"
return await self._client.make_request("DELETE", endpoint)
async def get_audit_logs(
self,
limit: int = 100,
offset: int = 0,
user_id: str | None = None,
action: str | None = None,
start_date: str | None = None,
end_date: str | None = None,
) -> dict[str, Any]:
params: dict[str, Any] = {"limit": limit, "offset": offset}
if user_id:
params["user_id"] = user_id
if action:
params["action"] = action
if start_date:
params["start_date"] = start_date
if end_date:
params["end_date"] = end_date
config = RequestConfig(params=params)
return await self._client.make_request(
"GET", "/admin/audit-logs", config=config
)
async def create_role(self, role_data: dict[str, Any]) -> dict[str, Any]:
config = RequestConfig(json_data=role_data)
return await self._client.make_request("POST", "/admin/roles", config=config)
async def get_roles(self) -> dict[str, Any]:
return await self._client.make_request("GET", "/admin/roles")
async def update_role(
self,
role_id: str,
role_data: dict[str, Any],
) -> dict[str, Any]:
config = RequestConfig(json_data=role_data)
return await self._client.make_request(
"PUT", f"/admin/roles/{role_id}", config=config
)
async def delete_role(self, role_id: str) -> dict[str, Any]:
return await self._client.make_request("DELETE", f"/admin/roles/{role_id}")
async def assign_role(self, user_id: str, role_id: str) -> dict[str, Any]:
data = {"role_id": role_id}
config = RequestConfig(json_data=data)
return await self._client.make_request(
"POST", f"/admin/users/{user_id}/roles", config=config
)
async def revoke_role(self, user_id: str, role_id: str) -> dict[str, Any]:
return await self._client.make_request(
"DELETE", f"/admin/users/{user_id}/roles/{role_id}"
)
async def get_permissions(self) -> dict[str, Any]:
return await self._client.make_request("GET", "/admin/permissions")
async def create_permission(
self, permission_data: dict[str, Any]
) -> dict[str, Any]:
config = RequestConfig(json_data=permission_data)
return await self._client.make_request(
"POST", "/admin/permissions", config=config
)