ai-lawyer-agent/api/tools/contracts.py
2026-03-15 22:45:33 +01:00

58 lines
1.9 KiB
Python

from api.fetch_api_data import fetch_api_data, docstring_from_model
from api.schemas import Contracts, ContractID, ContractAutocomplete
from agents import function_tool
from api.config import JUSTICE_API_BASE
class ContractsAPI:
@function_tool
@docstring_from_model(Contracts)
async def contract(self, params: Contracts) -> dict:
"""
Fetch a list of contracts from the Justice API with optional filtering.
Args:
params (Contracts): Filtering and pagination parameters.
{params}
Returns:
dict: A dictionary containing a list of contracts and related metadata.
"""
url = f"{JUSTICE_API_BASE}/v1/zmluvy"
return await fetch_api_data(icon="📃", url=url, params=params.model_dump(exclude_none=True))
@function_tool
@docstring_from_model(ContractID)
async def contract_id(self, params: ContractID) -> dict:
"""
Fetch detailed information about a specific contract by its identifier.
Args:
params (ContractID): Unique identifier of the contract.
{params}
Returns:
dict: Details of the specified contract.
"""
url = f"{JUSTICE_API_BASE}/v1/zmluvy/{params.idZmluvy}"
return await fetch_api_data(icon="📃", url=url, params={})
@function_tool
@docstring_from_model(ContractAutocomplete)
async def contract_autocomplete(self, params: ContractAutocomplete) -> dict:
"""
Fetch autocomplete suggestions for contract-related search terms.
Args:
params (ContractAutocomplete): Parameters for autocomplete query (e.g., partial text).
{params}
Returns:
dict: Suggested values matching the input query.
"""
url = f"{JUSTICE_API_BASE}/v1/zmluvy/autocomplete"
return await fetch_api_data(icon="📃", url=url, params=params.model_dump(exclude_none=True))