token optimization
This commit is contained in:
@@ -114,7 +114,7 @@ class AnayasaNormDenetimiSearchRequest(BaseModel):
|
|||||||
review_outcomes: Optional[List[AnayasaIncelemeSonucuEnum]] = Field(default_factory=list, description="List of review types and outcomes (IncelemeTuruKararSonuclar_id[]).")
|
review_outcomes: Optional[List[AnayasaIncelemeSonucuEnum]] = Field(default_factory=list, description="List of review types and outcomes (IncelemeTuruKararSonuclar_id[]).")
|
||||||
reason_for_final_outcome: Optional[AnayasaSonucGerekcesiEnum] = Field(default=AnayasaSonucGerekcesiEnum.TUMU, description="Main reason for the decision outcome (KararSonucununGerekcesi).")
|
reason_for_final_outcome: Optional[AnayasaSonucGerekcesiEnum] = Field(default=AnayasaSonucGerekcesiEnum.TUMU, description="Main reason for the decision outcome (KararSonucununGerekcesi).")
|
||||||
basis_constitution_article_numbers: Optional[List[str]] = Field(default_factory=list, description="List of supporting Constitution article numbers (DayanakHukmu[]).")
|
basis_constitution_article_numbers: Optional[List[str]] = Field(default_factory=list, description="List of supporting Constitution article numbers (DayanakHukmu[]).")
|
||||||
results_per_page: Optional[int] = Field(10, description="Number of results per page. Options: 10, 20, 30, 40, 50.")
|
results_per_page: Optional[int] = Field(10, ge=1, le=10, description="Results per page.")
|
||||||
page_to_fetch: Optional[int] = Field(1, ge=1, description="Page number to fetch for results list.")
|
page_to_fetch: Optional[int] = Field(1, ge=1, description="Page number to fetch for results list.")
|
||||||
sort_by_criteria: Optional[str] = Field("KararTarihi", description="Sort criteria. Options: 'KararTarihi', 'YayinTarihi', 'Toplam' (keyword count).")
|
sort_by_criteria: Optional[str] = Field("KararTarihi", description="Sort criteria. Options: 'KararTarihi', 'YayinTarihi', 'Toplam' (keyword count).")
|
||||||
|
|
||||||
|
|||||||
@@ -33,65 +33,15 @@ DanistayBirimEnum = Literal[
|
|||||||
|
|
||||||
# Search Request Models
|
# Search Request Models
|
||||||
class BedestenSearchData(BaseModel):
|
class BedestenSearchData(BaseModel):
|
||||||
pageSize: int = Field(..., description="""Number of results per page.
|
pageSize: int = Field(..., description="Results per page (1-10)")
|
||||||
Range: 1-100 results per page
|
pageNumber: int = Field(..., description="Page number (1-indexed)")
|
||||||
Recommended: 10-50 for balanced performance
|
itemTypeList: List[str] = Field(..., description="Court type filter (YARGITAYKARARI/DANISTAYKARAR/YERELHUKUK/ISTINAFHUKUK/KYB)")
|
||||||
Higher values for comprehensive analysis""")
|
phrase: str = Field(..., description="Search phrase (use \"exact phrase\" for precise matching)")
|
||||||
pageNumber: int = Field(..., description="""Page number to retrieve (1-indexed).
|
birimAdi: Optional[Union[YargitayBirimEnum, DanistayBirimEnum]] = Field(None, description="Chamber filter (optional)")
|
||||||
Start with 1 for first page
|
kararTarihiStart: Optional[str] = Field(None, description="Start date (ISO 8601 format)")
|
||||||
Calculate total pages from response.data.total / pageSize
|
kararTarihiEnd: Optional[str] = Field(None, description="End date (ISO 8601 format)")
|
||||||
Navigate: pageNumber=2 gets next set of results""")
|
sortFields: List[str] = Field(default=["KARAR_TARIHI"], description="Sort fields")
|
||||||
itemTypeList: List[str] = Field(..., description="""Court type filter - determines which court decisions to search:
|
sortDirection: str = Field(default="desc", description="Sort direction (asc/desc)")
|
||||||
• ["YARGITAYKARARI"]: Court of Cassation (Yargıtay) - supreme court civil/criminal decisions
|
|
||||||
• ["DANISTAYKARAR"]: Council of State (Danıştay) - administrative court decisions
|
|
||||||
• ["YERELHUKUK"]: Local Civil Courts (Yerel Hukuk Mahkemeleri) - first instance civil decisions
|
|
||||||
• ["ISTINAFHUKUK"]: Civil Courts of Appeals (İstinaf Hukuk Mahkemeleri) - appellate court decisions
|
|
||||||
• ["KYB"]: Extraordinary Appeal (Kanun Yararına Bozma) - extraordinary appeal decisions
|
|
||||||
Note: Use single-item list for specific court type targeting""")
|
|
||||||
phrase: str = Field(..., description="""Search phrase/keyword with advanced search support:
|
|
||||||
• Regular search: "mülkiyet kararı" - searches words separately
|
|
||||||
• Exact phrase: "\"mülkiyet kararı\"" - searches exact phrase (more precise)
|
|
||||||
• Legal concepts: "\"idari işlem\"", "\"sözleşme ihlali\"", "\"tazminat davası\""
|
|
||||||
• Empty string: searches all documents (use with filters)
|
|
||||||
Exact phrases significantly reduce false positives for precise legal research""")
|
|
||||||
birimAdi: Optional[Union[YargitayBirimEnum, DanistayBirimEnum]] = Field(None, description="""
|
|
||||||
Chamber/Department (Daire) filter (optional). Available options depend on itemTypeList:
|
|
||||||
|
|
||||||
For YARGITAYKARARI - Court of Cassation (52 options):
|
|
||||||
- None/null for ALL chambers
|
|
||||||
- 'Civil General Assembly (Hukuk Genel Kurulu)', '1st Civil Chamber (1. Hukuk Dairesi)' through '23rd Civil Chamber (23. Hukuk Dairesi)'
|
|
||||||
- 'Criminal General Assembly (Ceza Genel Kurulu)', '1st Criminal Chamber (1. Ceza Dairesi)' through '23rd Criminal Chamber (23. Ceza Dairesi)'
|
|
||||||
- 'Civil Chambers Presidents Board (Hukuk Daireleri Başkanlar Kurulu)', 'Criminal Chambers Presidents Board (Ceza Daireleri Başkanlar Kurulu)'
|
|
||||||
- 'Grand General Assembly (Büyük Genel Kurulu)'
|
|
||||||
|
|
||||||
For DANISTAYKARAR - Council of State (27 options):
|
|
||||||
- None/null for ALL chambers
|
|
||||||
- 'Grand General Assembly (Büyük Gen.Kur.)', 'Administrative Cases Chambers Council (İdare Dava Daireleri Kurulu)', 'Tax Cases Chambers Council (Vergi Dava Daireleri Kurulu)'
|
|
||||||
- '1st Chamber (1. Daire)' through '17th Chamber (17. Daire)'
|
|
||||||
- 'Precedents Unification Council (İçtihatları Birleştirme Kurulu)', 'Administrative Affairs Council (İdari İşler Kurulu)', 'Presidents Council (Başkanlar Kurulu)'
|
|
||||||
- Military courts: 'Military High Administrative Court (Askeri Yüksek İdare Mahkemesi)' variants
|
|
||||||
""")
|
|
||||||
kararTarihiStart: Optional[str] = Field(None, description="""Decision start date (Karar Tarihi Başlangıç) filter (optional).
|
|
||||||
Format: YYYY-MM-DDTHH:MM:SS.000Z (ISO 8601 with Z timezone)
|
|
||||||
Examples:
|
|
||||||
• "2024-01-01T00:00:00.000Z" - from beginning of 2024
|
|
||||||
• "2023-06-15T00:00:00.000Z" - from June 15, 2023
|
|
||||||
• "2024-03-01T00:00:00.000Z" - from March 1, 2024
|
|
||||||
Use with kararTarihiEnd for date range, or alone for "from date" filtering""")
|
|
||||||
kararTarihiEnd: Optional[str] = Field(None, description="""Decision end date (Karar Tarihi Bitiş) filter (optional).
|
|
||||||
Format: YYYY-MM-DDTHH:MM:SS.000Z (ISO 8601 with Z timezone)
|
|
||||||
Examples:
|
|
||||||
• "2024-12-31T23:59:59.999Z" - until end of 2024
|
|
||||||
• "2023-12-31T23:59:59.999Z" - until end of 2023
|
|
||||||
• "2024-06-30T23:59:59.999Z" - until end of June 2024
|
|
||||||
Use with kararTarihiStart for date range, or alone for "until date" filtering""")
|
|
||||||
sortFields: List[str] = Field(default=["KARAR_TARIHI"], description="""Sorting field (Sıralama Alanı) specification.
|
|
||||||
["KARAR_TARIHI"]: Sort by decision date (Karar Tarihi) [DEFAULT]
|
|
||||||
Most common use case for chronological ordering""")
|
|
||||||
sortDirection: str = Field(default="desc", description="""Sort direction (Sıralama Yönü) for results.
|
|
||||||
"desc": Descending order - newest decisions first [DEFAULT]
|
|
||||||
"asc": Ascending order - oldest decisions first
|
|
||||||
Recommended: "desc" for latest legal developments""")
|
|
||||||
|
|
||||||
class BedestenSearchRequest(BaseModel):
|
class BedestenSearchRequest(BaseModel):
|
||||||
data: BedestenSearchData
|
data: BedestenSearchData
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ from typing import List, Optional, Dict, Any
|
|||||||
|
|
||||||
class DanistayBaseSearchRequest(BaseModel):
|
class DanistayBaseSearchRequest(BaseModel):
|
||||||
"""Base model for common search parameters for Danistay."""
|
"""Base model for common search parameters for Danistay."""
|
||||||
pageSize: int = Field(default=10, ge=1, le=100)
|
pageSize: int = Field(default=10, ge=1, le=10)
|
||||||
pageNumber: int = Field(default=1, ge=1)
|
pageNumber: int = Field(default=1, ge=1)
|
||||||
# siralama and siralamaDirection are part of detailed search, not necessarily keyword search
|
# siralama and siralamaDirection are part of detailed search, not necessarily keyword search
|
||||||
# as per user's provided payloads.
|
# as per user's provided payloads.
|
||||||
@@ -21,11 +21,11 @@ class DanistayKeywordSearchRequestData(BaseModel):
|
|||||||
|
|
||||||
class DanistayKeywordSearchRequest(BaseModel): # This is the model the MCP tool will accept
|
class DanistayKeywordSearchRequest(BaseModel): # This is the model the MCP tool will accept
|
||||||
"""Model for keyword-based search request for Danistay."""
|
"""Model for keyword-based search request for Danistay."""
|
||||||
andKelimeler: List[str] = Field(default_factory=list, description="Keywords for AND logic (VE Mantığı), e.g., ['word1', 'word2']")
|
andKelimeler: List[str] = Field(default_factory=list, description="AND keywords")
|
||||||
orKelimeler: List[str] = Field(default_factory=list, description="Keywords for OR logic (VEYA Mantığı).")
|
orKelimeler: List[str] = Field(default_factory=list, description="OR keywords")
|
||||||
notAndKelimeler: List[str] = Field(default_factory=list, description="Keywords for NOT AND logic (VE DEĞİL Mantığı).")
|
notAndKelimeler: List[str] = Field(default_factory=list, description="NOT AND keywords")
|
||||||
notOrKelimeler: List[str] = Field(default_factory=list, description="Keywords for NOT OR logic (VEYA DEĞİL Mantığı).")
|
notOrKelimeler: List[str] = Field(default_factory=list, description="NOT OR keywords")
|
||||||
pageSize: int = Field(default=10, ge=1, le=100)
|
pageSize: int = Field(default=10, ge=1, le=10)
|
||||||
pageNumber: int = Field(default=1, ge=1)
|
pageNumber: int = Field(default=1, ge=1)
|
||||||
|
|
||||||
class DanistayDetailedSearchRequestData(BaseModel): # Internal data model for detailed search payload
|
class DanistayDetailedSearchRequestData(BaseModel): # Internal data model for detailed search payload
|
||||||
@@ -51,20 +51,20 @@ class DanistayDetailedSearchRequestData(BaseModel): # Internal data model for de
|
|||||||
|
|
||||||
class DanistayDetailedSearchRequest(DanistayBaseSearchRequest): # MCP tool will accept this
|
class DanistayDetailedSearchRequest(DanistayBaseSearchRequest): # MCP tool will accept this
|
||||||
"""Model for detailed search request for Danistay."""
|
"""Model for detailed search request for Danistay."""
|
||||||
daire: Optional[str] = Field(None, description="Chamber/Department name (e.g., '1. Daire').")
|
daire: Optional[str] = Field(None, description="Chamber")
|
||||||
esasYil: Optional[str] = Field(None, description="Case year for 'Esas No'.")
|
esasYil: Optional[str] = Field(None, description="Case year")
|
||||||
esasIlkSiraNo: Optional[str] = Field(None, description="Starting sequence for 'Esas No'.")
|
esasIlkSiraNo: Optional[str] = Field(None, description="Start case no")
|
||||||
esasSonSiraNo: Optional[str] = Field(None, description="Ending sequence for 'Esas No'.")
|
esasSonSiraNo: Optional[str] = Field(None, description="End case no")
|
||||||
kararYil: Optional[str] = Field(None, description="Decision year for 'Karar No'.")
|
kararYil: Optional[str] = Field(None, description="Decision year")
|
||||||
kararIlkSiraNo: Optional[str] = Field(None, description="Starting sequence for 'Karar No'.")
|
kararIlkSiraNo: Optional[str] = Field(None, description="Start decision no")
|
||||||
kararSonSiraNo: Optional[str] = Field(None, description="Ending sequence for 'Karar No'.")
|
kararSonSiraNo: Optional[str] = Field(None, description="End decision no")
|
||||||
baslangicTarihi: Optional[str] = Field(None, description="Start date for decision (DD.MM.YYYY).")
|
baslangicTarihi: Optional[str] = Field(None, description="Start date")
|
||||||
bitisTarihi: Optional[str] = Field(None, description="End date for decision (DD.MM.YYYY).")
|
bitisTarihi: Optional[str] = Field(None, description="End date")
|
||||||
mevzuatNumarasi: Optional[str] = Field(None, description="Legislation number.")
|
mevzuatNumarasi: Optional[str] = Field(None, description="Law number")
|
||||||
mevzuatAdi: Optional[str] = Field(None, description="Legislation name.")
|
mevzuatAdi: Optional[str] = Field(None, description="Law name")
|
||||||
madde: Optional[str] = Field(None, description="Article number.")
|
madde: Optional[str] = Field(None, description="Article")
|
||||||
siralama: str = Field("1", description="Sorting criteria (e.g., 1: Esas No, 3: Karar Tarihi).")
|
siralama: str = Field("1", description="Sort by")
|
||||||
siralamaDirection: str = Field("desc", description="Sorting direction ('asc' or 'desc').")
|
siralamaDirection: str = Field("desc", description="Direction")
|
||||||
# Add a general keyword field if detailed search also supports it
|
# Add a general keyword field if detailed search also supports it
|
||||||
# arananKelime: Optional[str] = Field(None, description="General keyword for detailed search.")
|
# arananKelime: Optional[str] = Field(None, description="General keyword for detailed search.")
|
||||||
|
|
||||||
@@ -76,15 +76,15 @@ class DanistayApiDecisionEntry(BaseModel):
|
|||||||
id: str
|
id: str
|
||||||
# The API response for keyword search uses "daireKurul", detailed search example uses "daire".
|
# The API response for keyword search uses "daireKurul", detailed search example uses "daire".
|
||||||
# We use an alias to handle both and map to a consistent field name "chamber".
|
# We use an alias to handle both and map to a consistent field name "chamber".
|
||||||
chamber: Optional[str] = Field(None, alias="daire", description="The chamber or board.")
|
chamber: Optional[str] = Field(None, alias="daire", description="Chamber")
|
||||||
esasNo: Optional[str] = Field(None)
|
esasNo: Optional[str] = Field(None)
|
||||||
kararNo: Optional[str] = Field(None)
|
kararNo: Optional[str] = Field(None)
|
||||||
kararTarihi: Optional[str] = Field(None)
|
kararTarihi: Optional[str] = Field(None)
|
||||||
arananKelime: Optional[str] = Field(None, description="Matched keyword (Aranan Kelime) if provided in response.")
|
arananKelime: Optional[str] = Field(None, description="Keyword")
|
||||||
# index: Optional[int] = None # Present in response, can be added if needed by MCP tool
|
# index: Optional[int] = None # Present in response, can be added if needed by MCP tool
|
||||||
# siraNo: Optional[int] = None # Present in detailed response, can be added
|
# siraNo: Optional[int] = None # Present in detailed response, can be added
|
||||||
|
|
||||||
document_url: Optional[HttpUrl] = Field(None, description="URL (Belge URL) to the full document, constructed by the client.")
|
document_url: Optional[HttpUrl] = Field(None, description="Document URL")
|
||||||
|
|
||||||
model_config = ConfigDict(populate_by_name=True, extra='ignore') # Important for alias to work and ignore extra fields
|
model_config = ConfigDict(populate_by_name=True, extra='ignore') # Important for alias to work and ignore extra fields
|
||||||
|
|
||||||
@@ -93,7 +93,7 @@ class DanistayApiResponseInnerData(BaseModel):
|
|||||||
data: List[DanistayApiDecisionEntry]
|
data: List[DanistayApiDecisionEntry]
|
||||||
recordsTotal: int
|
recordsTotal: int
|
||||||
recordsFiltered: int
|
recordsFiltered: int
|
||||||
draw: Optional[int] = Field(None, description="Draw counter (Çizim Sayıcısı) from API, usually for DataTables.")
|
draw: Optional[int] = Field(None, description="Draw counter")
|
||||||
|
|
||||||
class DanistayApiResponse(BaseModel):
|
class DanistayApiResponse(BaseModel):
|
||||||
"""Model for the complete search response from the Danistay API."""
|
"""Model for the complete search response from the Danistay API."""
|
||||||
|
|||||||
+20
-20
@@ -17,7 +17,7 @@ class EmsalDetailedSearchRequestData(BaseModel):
|
|||||||
# Add other specific court type fields from the form if they are separate keys in payload
|
# Add other specific court type fields from the form if they are separate keys in payload
|
||||||
# E.g., "Ceza Mahkemeleri", "İdari Mahkemeler" etc.
|
# E.g., "Ceza Mahkemeleri", "İdari Mahkemeler" etc.
|
||||||
|
|
||||||
birimHukukMah: Optional[str] = Field("", description="List of selected Regional Civil Chambers (Bölge Hukuk Mahkemeleri), '+' separated.")
|
birimHukukMah: Optional[str] = Field("", description="Regional chambers (+ separated)")
|
||||||
|
|
||||||
esasYil: Optional[str] = ""
|
esasYil: Optional[str] = ""
|
||||||
esasIlkSiraNo: Optional[str] = ""
|
esasIlkSiraNo: Optional[str] = ""
|
||||||
@@ -36,42 +36,42 @@ class EmsalDetailedSearchRequestData(BaseModel):
|
|||||||
|
|
||||||
class EmsalSearchRequest(BaseModel): # This is the model the MCP tool will accept
|
class EmsalSearchRequest(BaseModel): # This is the model the MCP tool will accept
|
||||||
"""Model for Emsal detailed search request, with user-friendly field names."""
|
"""Model for Emsal detailed search request, with user-friendly field names."""
|
||||||
keyword: Optional[str] = Field(None, description="Keyword (Anahtar Kelime) to search.")
|
keyword: Optional[str] = Field(None, description="Keyword")
|
||||||
|
|
||||||
selected_bam_civil_court: Optional[str] = Field(None, description="Selected BAM Civil Court (Seçilen BAM Hukuk Mahkemesi) (maps to 'Bam Hukuk Mahkemeleri' payload key).")
|
selected_bam_civil_court: Optional[str] = Field(None, description="BAM Civil Court")
|
||||||
selected_civil_court: Optional[str] = Field(None, description="Selected Civil Court (Seçilen Hukuk Mahkemesi) (maps to 'Hukuk Mahkemeleri' payload key).")
|
selected_civil_court: Optional[str] = Field(None, description="Civil Court")
|
||||||
selected_regional_civil_chambers: Optional[List[str]] = Field(default_factory=list, description="Selected Regional Civil Chambers (Seçilen Bölge Hukuk Daireleri) (for 'birimHukukMah', joined by '+').")
|
selected_regional_civil_chambers: Optional[List[str]] = Field(default_factory=list, description="Regional chambers")
|
||||||
|
|
||||||
case_year_esas: Optional[str] = Field(None, description="Case year (Dava Yılı) for 'Esas No'.")
|
case_year_esas: Optional[str] = Field(None, description="Case year")
|
||||||
case_start_seq_esas: Optional[str] = Field(None, description="Starting sequence (Başlangıç Sırası) for 'Esas No'.")
|
case_start_seq_esas: Optional[str] = Field(None, description="Start case no")
|
||||||
case_end_seq_esas: Optional[str] = Field(None, description="Ending sequence (Bitiş Sırası) for 'Esas No'.")
|
case_end_seq_esas: Optional[str] = Field(None, description="End case no")
|
||||||
|
|
||||||
decision_year_karar: Optional[str] = Field(None, description="Decision year (Karar Yılı) for 'Karar No'.")
|
decision_year_karar: Optional[str] = Field(None, description="Decision year")
|
||||||
decision_start_seq_karar: Optional[str] = Field(None, description="Starting sequence (Başlangıç Sırası) for 'Karar No'.")
|
decision_start_seq_karar: Optional[str] = Field(None, description="Start decision no")
|
||||||
decision_end_seq_karar: Optional[str] = Field(None, description="Ending sequence (Bitiş Sırası) for 'Karar No'.")
|
decision_end_seq_karar: Optional[str] = Field(None, description="End decision no")
|
||||||
|
|
||||||
start_date: Optional[str] = Field(None, description="Start date (Başlangıç Tarihi) for decision (DD.MM.YYYY).")
|
start_date: Optional[str] = Field(None, description="Start date (DD.MM.YYYY)")
|
||||||
end_date: Optional[str] = Field(None, description="End date (Bitiş Tarihi) for decision (DD.MM.YYYY).")
|
end_date: Optional[str] = Field(None, description="End date (DD.MM.YYYY)")
|
||||||
|
|
||||||
sort_criteria: str = Field("1", description="Sorting criteria (Sıralama Kriteri) (e.g., 1: Esas No).")
|
sort_criteria: str = Field("1", description="Sort by")
|
||||||
sort_direction: str = Field("desc", description="Sorting direction (Sıralama Yönü) ('asc' or 'desc').")
|
sort_direction: str = Field("desc", description="Direction")
|
||||||
|
|
||||||
page_number: int = Field(default=1, ge=1)
|
page_number: int = Field(default=1, ge=1)
|
||||||
page_size: int = Field(default=10, ge=1, le=100)
|
page_size: int = Field(default=10, ge=1, le=10)
|
||||||
|
|
||||||
|
|
||||||
class EmsalApiDecisionEntry(BaseModel):
|
class EmsalApiDecisionEntry(BaseModel):
|
||||||
"""Model for an individual decision entry from the Emsal API search response."""
|
"""Model for an individual decision entry from the Emsal API search response."""
|
||||||
id: str
|
id: str
|
||||||
daire: Optional[str] = Field(None, description="The chamber/court (Daire/Mahkeme) that made the decision.")
|
daire: Optional[str] = Field(None, description="Chamber")
|
||||||
esasNo: Optional[str] = Field(None)
|
esasNo: Optional[str] = Field(None)
|
||||||
kararNo: Optional[str] = Field(None)
|
kararNo: Optional[str] = Field(None)
|
||||||
kararTarihi: Optional[str] = Field(None)
|
kararTarihi: Optional[str] = Field(None)
|
||||||
arananKelime: Optional[str] = Field(None, description="Matched keyword (Aranan Kelime) from the search.")
|
arananKelime: Optional[str] = Field(None, description="Keyword")
|
||||||
durum: Optional[str] = Field(None, description="Status (Durum) of the decision (e.g., 'KESİNLEŞMEDİ').")
|
durum: Optional[str] = Field(None, description="Status")
|
||||||
# index: Optional[int] = None # Present in Emsal response, can be added if tool needs it
|
# index: Optional[int] = None # Present in Emsal response, can be added if tool needs it
|
||||||
|
|
||||||
document_url: Optional[HttpUrl] = Field(None, description="URL (Belge URL) to the full document, constructed by the client.")
|
document_url: Optional[HttpUrl] = Field(None, description="Document URL")
|
||||||
|
|
||||||
model_config = ConfigDict(extra='ignore')
|
model_config = ConfigDict(extra='ignore')
|
||||||
|
|
||||||
|
|||||||
+25
-26
@@ -13,28 +13,28 @@ class KikKararTipi(str, Enum):
|
|||||||
class KikSearchRequest(BaseModel):
|
class KikSearchRequest(BaseModel):
|
||||||
"""Model for KIK Decision search criteria."""
|
"""Model for KIK Decision search criteria."""
|
||||||
karar_tipi: KikKararTipi = Field(KikKararTipi.UYUSMAZLIK, description="Type")
|
karar_tipi: KikKararTipi = Field(KikKararTipi.UYUSMAZLIK, description="Type")
|
||||||
karar_no: Optional[str] = Field(None, description="Number")
|
karar_no: Optional[str] = Field(None, description="No")
|
||||||
karar_tarihi_baslangic: Optional[str] = Field(None, description="Start date", pattern=r"^\d{2}\.\d{2}\.\d{4}$")
|
karar_tarihi_baslangic: Optional[str] = Field(None, description="Start", pattern=r"^\d{2}\.\d{2}\.\d{4}$")
|
||||||
karar_tarihi_bitis: Optional[str] = Field(None, description="End date", pattern=r"^\d{2}\.\d{2}\.\d{4}$")
|
karar_tarihi_bitis: Optional[str] = Field(None, description="End", pattern=r"^\d{2}\.\d{2}\.\d{4}$")
|
||||||
resmi_gazete_sayisi: Optional[str] = Field(None, description="Gazette no")
|
resmi_gazete_sayisi: Optional[str] = Field(None, description="Gazette")
|
||||||
resmi_gazete_tarihi: Optional[str] = Field(None, description="Gazette date", pattern=r"^\d{2}\.\d{2}\.\d{4}$")
|
resmi_gazete_tarihi: Optional[str] = Field(None, description="Date", pattern=r"^\d{2}\.\d{2}\.\d{4}$")
|
||||||
basvuru_konusu_ihale: Optional[str] = Field(None, description="Tender subject")
|
basvuru_konusu_ihale: Optional[str] = Field(None, description="Subject")
|
||||||
basvuru_sahibi: Optional[str] = Field(None, description="Applicant")
|
basvuru_sahibi: Optional[str] = Field(None, description="Applicant")
|
||||||
ihaleyi_yapan_idare: Optional[str] = Field(None, description="Entity")
|
ihaleyi_yapan_idare: Optional[str] = Field(None, description="Entity")
|
||||||
yil: Optional[str] = Field(None, description="Year")
|
yil: Optional[str] = Field(None, description="Year")
|
||||||
karar_metni: Optional[str] = Field(None, description="Text search")
|
karar_metni: Optional[str] = Field(None, description="Text")
|
||||||
page: int = Field(1, ge=1, description="Page")
|
page: int = Field(1, ge=1, description="Page")
|
||||||
|
|
||||||
class KikDecisionEntry(BaseModel):
|
class KikDecisionEntry(BaseModel):
|
||||||
"""Represents a single decision entry from KIK search results."""
|
"""Represents a single decision entry from KIK search results."""
|
||||||
preview_event_target: str = Field(..., description="Internal event target for fetching details.")
|
preview_event_target: str = Field(..., description="Event target")
|
||||||
karar_no_str: str = Field(..., alias="kararNo", description="Raw decision number as extracted from KIK (e.g., '2024/UH.II-1766').")
|
karar_no_str: str = Field(..., alias="kararNo", description="Decision number")
|
||||||
karar_tipi: KikKararTipi = Field(..., description="The type of decision this entry belongs to.")
|
karar_tipi: KikKararTipi = Field(..., description="Decision type")
|
||||||
|
|
||||||
karar_tarihi_str: str = Field(..., alias="kararTarihi", description="Decision date.")
|
karar_tarihi_str: str = Field(..., alias="kararTarihi", description="Date")
|
||||||
idare_str: Optional[str] = Field(None, alias="idare", description="Procuring entity.")
|
idare_str: Optional[str] = Field(None, alias="idare", description="Entity")
|
||||||
basvuru_sahibi_str: Optional[str] = Field(None, alias="basvuruSahibi", description="Applicant.")
|
basvuru_sahibi_str: Optional[str] = Field(None, alias="basvuruSahibi", description="Applicant")
|
||||||
ihale_konusu_str: Optional[str] = Field(None, alias="ihaleKonusu", description="Tender subject.")
|
ihale_konusu_str: Optional[str] = Field(None, alias="ihaleKonusu", description="Subject")
|
||||||
|
|
||||||
@computed_field
|
@computed_field
|
||||||
@property
|
@property
|
||||||
@@ -58,18 +58,17 @@ class KikDocumentMarkdown(BaseModel):
|
|||||||
"""
|
"""
|
||||||
KIK decision document, with Markdown content potentially paginated.
|
KIK decision document, with Markdown content potentially paginated.
|
||||||
"""
|
"""
|
||||||
retrieved_with_karar_id: Optional[str] = Field(None, description="The Base64 encoded karar_id that was used to request this document.")
|
retrieved_with_karar_id: Optional[str] = Field(None, description="Request ID")
|
||||||
# Decode edilmiş karar no ve tipini de yanıt olarak ekleyelim, Claude için faydalı olabilir.
|
retrieved_karar_no: Optional[str] = Field(None, description="Decision number")
|
||||||
retrieved_karar_no: Optional[str] = Field(None, description="The raw KIK Decision Number (e.g., '2024/UH.II-1766') this document pertains to.")
|
retrieved_karar_tipi: Optional[KikKararTipi] = Field(None, description="Decision type")
|
||||||
retrieved_karar_tipi: Optional[KikKararTipi] = Field(None, description="The KIK Decision Type this document pertains to.")
|
|
||||||
|
|
||||||
karar_id_param_from_url: Optional[str] = Field(None, alias="kararIdParam", description="The KIK system's internal KararId parameter from the document's display URL (KurulKararGoster.aspx).")
|
karar_id_param_from_url: Optional[str] = Field(None, alias="kararIdParam", description="Internal ID")
|
||||||
markdown_chunk: Optional[str] = Field(None, description="The requested chunk of the decision content converted to Markdown.")
|
markdown_chunk: Optional[str] = Field(None, description="Content")
|
||||||
source_url: Optional[str] = Field(None, description="The source URL of the original document (KurulKararGoster.aspx).")
|
source_url: Optional[str] = Field(None, description="Source URL")
|
||||||
error_message: Optional[str] = Field(None, description="Error message if document retrieval or processing failed.")
|
error_message: Optional[str] = Field(None, description="Error")
|
||||||
current_page: int = Field(1, description="The current page number of the markdown chunk being returned.")
|
current_page: int = Field(1, description="Page")
|
||||||
total_pages: int = Field(1, description="The total number of pages the full markdown content is divided into.")
|
total_pages: int = Field(1, description="Total pages")
|
||||||
is_paginated: bool = Field(False, description="True if the full markdown content is split into multiple pages.")
|
is_paginated: bool = Field(False, description="Paginated")
|
||||||
full_content_char_count: Optional[int] = Field(None, description="Total character count of the full markdown content before chunking.")
|
full_content_char_count: Optional[int] = Field(None, description="Char count")
|
||||||
|
|
||||||
model_config = ConfigDict(populate_by_name=True)
|
model_config = ConfigDict(populate_by_name=True)
|
||||||
@@ -11,21 +11,21 @@ class KvkkSearchRequest(BaseModel):
|
|||||||
Examples: "açık rıza", "veri güvenliği", "kişisel veri işleme"
|
Examples: "açık rıza", "veri güvenliği", "kişisel veri işleme"
|
||||||
""")
|
""")
|
||||||
page: int = Field(1, ge=1, le=50, description="Page number for search results (1-50).")
|
page: int = Field(1, ge=1, le=50, description="Page number for search results (1-50).")
|
||||||
pageSize: int = Field(10, ge=1, le=20, description="Number of results per page (1-20).")
|
pageSize: int = Field(10, ge=1, le=10, description="Number of results per page (1-10).")
|
||||||
|
|
||||||
class KvkkDecisionSummary(BaseModel):
|
class KvkkDecisionSummary(BaseModel):
|
||||||
"""Model for a single KVKK decision summary from Brave search results."""
|
"""Model for a single KVKK decision summary from Brave search results."""
|
||||||
title: Optional[str] = Field(None, description="Decision title from search results.")
|
title: Optional[str] = Field(None, description="Decision title from search results.")
|
||||||
url: Optional[HttpUrl] = Field(None, description="URL to the KVKK decision page.")
|
url: Optional[HttpUrl] = Field(None, description="URL to the KVKK decision page.")
|
||||||
description: Optional[str] = Field(None, description="Brief description or snippet from search results.")
|
description: Optional[str] = Field(None, description="Brief description or snippet from search results.")
|
||||||
decision_id: Optional[str] = Field(None, description="Extracted decision ID from URL (e.g., Icerik/7288/2021-1303).")
|
decision_id: Optional[str] = Field(None, description="Value")
|
||||||
publication_date: Optional[str] = Field(None, description="Publication date if extractable from title or description.")
|
publication_date: Optional[str] = Field(None, description="Value")
|
||||||
decision_number: Optional[str] = Field(None, description="Decision number if extractable from title or description.")
|
decision_number: Optional[str] = Field(None, description="Value")
|
||||||
|
|
||||||
class KvkkSearchResult(BaseModel):
|
class KvkkSearchResult(BaseModel):
|
||||||
"""Model for the overall search result for KVKK decisions."""
|
"""Model for the overall search result for KVKK decisions."""
|
||||||
decisions: List[KvkkDecisionSummary] = Field(default_factory=list, description="List of KVKK decisions found.")
|
decisions: List[KvkkDecisionSummary] = Field(default_factory=list, description="List of KVKK decisions found.")
|
||||||
total_results: Optional[int] = Field(None, description="Total number of results available (if provided by Brave API).")
|
total_results: Optional[int] = Field(None, description="Value")
|
||||||
page: int = Field(1, description="Current page number of results.")
|
page: int = Field(1, description="Current page number of results.")
|
||||||
pageSize: int = Field(10, description="Number of results per page.")
|
pageSize: int = Field(10, description="Number of results per page.")
|
||||||
query: Optional[str] = Field(None, description="The actual search query sent to Brave API.")
|
query: Optional[str] = Field(None, description="The actual search query sent to Brave API.")
|
||||||
@@ -41,7 +41,7 @@ class KvkkDocumentMarkdown(BaseModel):
|
|||||||
current_page: int = Field(description="The current page number of the markdown chunk (1-indexed).")
|
current_page: int = Field(description="The current page number of the markdown chunk (1-indexed).")
|
||||||
total_pages: int = Field(description="Total number of pages for the full markdown content.")
|
total_pages: int = Field(description="Total number of pages for the full markdown content.")
|
||||||
is_paginated: bool = Field(description="True if the full markdown content is split into multiple pages.")
|
is_paginated: bool = Field(description="True if the full markdown content is split into multiple pages.")
|
||||||
error_message: Optional[str] = Field(None, description="Error message if document retrieval or conversion failed.")
|
error_message: Optional[str] = Field(None, description="Value")
|
||||||
|
|
||||||
class Config:
|
class Config:
|
||||||
json_encoders = {
|
json_encoders = {
|
||||||
|
|||||||
+9
-9
@@ -972,7 +972,7 @@ async def search_yargitay_detailed(
|
|||||||
bitisTarihi: str = Field("", description="End date for decision search (DD.MM.YYYY)."),
|
bitisTarihi: str = Field("", description="End date for decision search (DD.MM.YYYY)."),
|
||||||
siralama: str = Field("3", description="Sorting criteria (1: Esas No, 2: Karar No, 3: Karar Tarihi)."),
|
siralama: str = Field("3", description="Sorting criteria (1: Esas No, 2: Karar No, 3: Karar Tarihi)."),
|
||||||
siralamaDirection: str = Field("desc", description="Sorting direction ('asc' or 'desc')."),
|
siralamaDirection: str = Field("desc", description="Sorting direction ('asc' or 'desc')."),
|
||||||
pageSize: int = Field(10, ge=1, le=100, description="Number of results per page."),
|
pageSize: int = Field(10, ge=1, le=10, description="Number of results per page."),
|
||||||
pageNumber: int = Field(1, ge=1, description="Page number to retrieve.")
|
pageNumber: int = Field(1, ge=1, description="Page number to retrieve.")
|
||||||
) -> CompactYargitaySearchResult:
|
) -> CompactYargitaySearchResult:
|
||||||
"""Search Yargıtay decisions using primary API with 52 chamber filtering and advanced operators."""
|
"""Search Yargıtay decisions using primary API with 52 chamber filtering and advanced operators."""
|
||||||
@@ -1047,7 +1047,7 @@ async def search_danistay_by_keyword(
|
|||||||
notAndKelimeler: List[str] = Field(default_factory=list, description="Keywords for NOT AND logic."),
|
notAndKelimeler: List[str] = Field(default_factory=list, description="Keywords for NOT AND logic."),
|
||||||
notOrKelimeler: List[str] = Field(default_factory=list, description="Keywords for NOT OR logic."),
|
notOrKelimeler: List[str] = Field(default_factory=list, description="Keywords for NOT OR logic."),
|
||||||
pageNumber: int = Field(1, ge=1, description="Page number."),
|
pageNumber: int = Field(1, ge=1, description="Page number."),
|
||||||
pageSize: int = Field(10, ge=1, le=100, description="Results per page.")
|
pageSize: int = Field(10, ge=1, le=10, description="Results per page.")
|
||||||
) -> CompactDanistaySearchResult:
|
) -> CompactDanistaySearchResult:
|
||||||
"""Search Danıştay decisions with keyword logic."""
|
"""Search Danıştay decisions with keyword logic."""
|
||||||
|
|
||||||
@@ -1099,7 +1099,7 @@ async def search_danistay_detailed(
|
|||||||
siralama: str = Field("1", description="Sorting criteria (e.g., 1: Esas No, 3: Karar Tarihi)."),
|
siralama: str = Field("1", description="Sorting criteria (e.g., 1: Esas No, 3: Karar Tarihi)."),
|
||||||
siralamaDirection: str = Field("desc", description="Sorting direction ('asc' or 'desc')."),
|
siralamaDirection: str = Field("desc", description="Sorting direction ('asc' or 'desc')."),
|
||||||
pageNumber: int = Field(1, ge=1, description="Page number."),
|
pageNumber: int = Field(1, ge=1, description="Page number."),
|
||||||
pageSize: int = Field(10, ge=1, le=100, description="Results per page.")
|
pageSize: int = Field(10, ge=1, le=10, description="Results per page.")
|
||||||
) -> CompactDanistaySearchResult:
|
) -> CompactDanistaySearchResult:
|
||||||
"""Search Danıştay decisions with detailed filtering."""
|
"""Search Danıştay decisions with detailed filtering."""
|
||||||
|
|
||||||
@@ -1179,7 +1179,7 @@ async def search_emsal_detailed_decisions(
|
|||||||
sort_criteria: str = Field("1", description="Sorting criteria (e.g., 1: Esas No)."),
|
sort_criteria: str = Field("1", description="Sorting criteria (e.g., 1: Esas No)."),
|
||||||
sort_direction: str = Field("desc", description="Sorting direction ('asc' or 'desc')."),
|
sort_direction: str = Field("desc", description="Sorting direction ('asc' or 'desc')."),
|
||||||
page_number: int = Field(1, ge=1, description="Page number (accepts int)."),
|
page_number: int = Field(1, ge=1, description="Page number (accepts int)."),
|
||||||
page_size: int = Field(10, ge=1, le=100, description="Results per page.")
|
page_size: int = Field(10, ge=1, le=10, description="Results per page.")
|
||||||
) -> CompactEmsalSearchResult:
|
) -> CompactEmsalSearchResult:
|
||||||
"""Search Emsal precedent decisions with detailed criteria."""
|
"""Search Emsal precedent decisions with detailed criteria."""
|
||||||
|
|
||||||
@@ -1690,7 +1690,7 @@ async def get_rekabet_kurumu_document(
|
|||||||
)
|
)
|
||||||
async def search_yargitay_bedesten(
|
async def search_yargitay_bedesten(
|
||||||
phrase: str = Field(..., description="Search phrase with advanced operators"),
|
phrase: str = Field(..., description="Search phrase with advanced operators"),
|
||||||
pageSize: int = Field(10, ge=1, le=100, description="Sayfa başına sonuç sayısı"),
|
pageSize: int = Field(10, ge=1, le=10, description="Sayfa başına sonuç sayısı"),
|
||||||
pageNumber: int = Field(1, ge=1, description="Sayfa numarası"),
|
pageNumber: int = Field(1, ge=1, description="Sayfa numarası"),
|
||||||
birimAdi: Optional[YargitayBirimEnum] = Field(None, description="See docs for details"),
|
birimAdi: Optional[YargitayBirimEnum] = Field(None, description="See docs for details"),
|
||||||
kararTarihiStart: Optional[str] = Field(None, description="Start date for filtering (ISO 8601 format)"),
|
kararTarihiStart: Optional[str] = Field(None, description="Start date for filtering (ISO 8601 format)"),
|
||||||
@@ -1769,7 +1769,7 @@ async def get_yargitay_bedesten_document_markdown(
|
|||||||
)
|
)
|
||||||
async def search_danistay_bedesten(
|
async def search_danistay_bedesten(
|
||||||
phrase: str = Field(..., description="Search phrase with advanced operators"),
|
phrase: str = Field(..., description="Search phrase with advanced operators"),
|
||||||
pageSize: int = Field(10, ge=1, le=100, description="Sayfa başına sonuç sayısı"),
|
pageSize: int = Field(10, ge=1, le=10, description="Sayfa başına sonuç sayısı"),
|
||||||
pageNumber: int = Field(1, ge=1, description="Sayfa numarası"),
|
pageNumber: int = Field(1, ge=1, description="Sayfa numarası"),
|
||||||
birimAdi: Optional[DanistayBirimEnum] = Field(None, description="See docs for details"),
|
birimAdi: Optional[DanistayBirimEnum] = Field(None, description="See docs for details"),
|
||||||
kararTarihiStart: Optional[str] = Field(None, description="Start date for filtering (ISO 8601 format)"),
|
kararTarihiStart: Optional[str] = Field(None, description="Start date for filtering (ISO 8601 format)"),
|
||||||
@@ -1848,7 +1848,7 @@ async def get_danistay_bedesten_document_markdown(
|
|||||||
)
|
)
|
||||||
async def search_yerel_hukuk_bedesten(
|
async def search_yerel_hukuk_bedesten(
|
||||||
phrase: str = Field(..., description="Search phrase with advanced operators"),
|
phrase: str = Field(..., description="Search phrase with advanced operators"),
|
||||||
pageSize: int = Field(10, ge=1, le=100, description="Sayfa başına sonuç sayısı"),
|
pageSize: int = Field(10, ge=1, le=10, description="Sayfa başına sonuç sayısı"),
|
||||||
pageNumber: int = Field(1, ge=1, description="Sayfa numarası"),
|
pageNumber: int = Field(1, ge=1, description="Sayfa numarası"),
|
||||||
kararTarihiStart: Optional[str] = Field(None, description="Start date for filtering (ISO 8601 format)"),
|
kararTarihiStart: Optional[str] = Field(None, description="Start date for filtering (ISO 8601 format)"),
|
||||||
kararTarihiEnd: Optional[str] = Field(None, description="End date for filtering (ISO 8601 format)")
|
kararTarihiEnd: Optional[str] = Field(None, description="End date for filtering (ISO 8601 format)")
|
||||||
@@ -1925,7 +1925,7 @@ async def get_yerel_hukuk_bedesten_document_markdown(
|
|||||||
)
|
)
|
||||||
async def search_istinaf_hukuk_bedesten(
|
async def search_istinaf_hukuk_bedesten(
|
||||||
phrase: str = Field(..., description="Search phrase with advanced operators"),
|
phrase: str = Field(..., description="Search phrase with advanced operators"),
|
||||||
pageSize: int = Field(10, ge=1, le=100, description="Sayfa başına sonuç sayısı"),
|
pageSize: int = Field(10, ge=1, le=10, description="Sayfa başına sonuç sayısı"),
|
||||||
pageNumber: int = Field(1, ge=1, description="Sayfa numarası"),
|
pageNumber: int = Field(1, ge=1, description="Sayfa numarası"),
|
||||||
kararTarihiStart: Optional[str] = Field(None, description="Start date for filtering (ISO 8601 format)"),
|
kararTarihiStart: Optional[str] = Field(None, description="Start date for filtering (ISO 8601 format)"),
|
||||||
kararTarihiEnd: Optional[str] = Field(None, description="End date for filtering (ISO 8601 format)")
|
kararTarihiEnd: Optional[str] = Field(None, description="End date for filtering (ISO 8601 format)")
|
||||||
@@ -2001,7 +2001,7 @@ async def get_istinaf_hukuk_bedesten_document_markdown(
|
|||||||
)
|
)
|
||||||
async def search_kyb_bedesten(
|
async def search_kyb_bedesten(
|
||||||
phrase: str = Field(..., description="Search phrase with advanced operators"),
|
phrase: str = Field(..., description="Search phrase with advanced operators"),
|
||||||
pageSize: int = Field(10, ge=1, le=100, description="Sayfa başına sonuç sayısı"),
|
pageSize: int = Field(10, ge=1, le=10, description="Sayfa başına sonuç sayısı"),
|
||||||
pageNumber: int = Field(1, ge=1, description="Sayfa numarası"),
|
pageNumber: int = Field(1, ge=1, description="Sayfa numarası"),
|
||||||
kararTarihiStart: Optional[str] = Field(None, description="Start date for filtering (ISO 8601 format)"),
|
kararTarihiStart: Optional[str] = Field(None, description="Start date for filtering (ISO 8601 format)"),
|
||||||
kararTarihiEnd: Optional[str] = Field(None, description="End date for filtering (ISO 8601 format)")
|
kararTarihiEnd: Optional[str] = Field(None, description="End date for filtering (ISO 8601 format)")
|
||||||
|
|||||||
@@ -26,31 +26,30 @@ class RekabetKararTuruAdiEnum(str, Enum):
|
|||||||
class RekabetKurumuSearchRequest(BaseModel):
|
class RekabetKurumuSearchRequest(BaseModel):
|
||||||
"""Model for Rekabet Kurumu (Turkish Competition Authority) search request."""
|
"""Model for Rekabet Kurumu (Turkish Competition Authority) search request."""
|
||||||
sayfaAdi: Optional[str] = Field(None, description="Title")
|
sayfaAdi: Optional[str] = Field(None, description="Title")
|
||||||
YayinlanmaTarihi: Optional[str] = Field(None, description="Pub date")
|
YayinlanmaTarihi: Optional[str] = Field(None, description="Date")
|
||||||
PdfText: Optional[str] = Field(None, description="Search text")
|
PdfText: Optional[str] = Field(None, description="Text")
|
||||||
# This field uses the GUID enum as it's used by the client to make the actual web request.
|
|
||||||
KararTuruID: Optional[RekabetKararTuruGuidEnum] = Field(RekabetKararTuruGuidEnum.TUMU, description="Type")
|
KararTuruID: Optional[RekabetKararTuruGuidEnum] = Field(RekabetKararTuruGuidEnum.TUMU, description="Type")
|
||||||
KararSayisi: Optional[str] = Field(None, description="Number")
|
KararSayisi: Optional[str] = Field(None, description="No")
|
||||||
KararTarihi: Optional[str] = Field(None, description="Date")
|
KararTarihi: Optional[str] = Field(None, description="Date")
|
||||||
page: int = Field(1, ge=1, description="Page")
|
page: int = Field(1, ge=1, description="Page")
|
||||||
|
|
||||||
class RekabetDecisionSummary(BaseModel):
|
class RekabetDecisionSummary(BaseModel):
|
||||||
"""Model for a single Rekabet Kurumu decision summary from search results."""
|
"""Model for a single Rekabet Kurumu decision summary from search results."""
|
||||||
publication_date: Optional[str] = Field(None, description="Publication Date (Yayımlanma Tarihi).")
|
publication_date: Optional[str] = Field(None, description="Pub date")
|
||||||
decision_number: Optional[str] = Field(None, description="Decision Number (Karar Sayısı).")
|
decision_number: Optional[str] = Field(None, description="Number")
|
||||||
decision_date: Optional[str] = Field(None, description="Decision Date (Karar Tarihi).")
|
decision_date: Optional[str] = Field(None, description="Date")
|
||||||
decision_type_text: Optional[str] = Field(None, description="Decision Type as text (Karar Türü - metin olarak).")
|
decision_type_text: Optional[str] = Field(None, description="Type")
|
||||||
title: Optional[str] = Field(None, description="Decision title or summary text.")
|
title: Optional[str] = Field(None, description="Title")
|
||||||
decision_url: Optional[HttpUrl] = Field(None, description="URL to the decision's landing page (e.g., /Karar?kararId=...).")
|
decision_url: Optional[HttpUrl] = Field(None, description="URL")
|
||||||
karar_id: Optional[str] = Field(None, description="GUID of the decision, extracted from its URL.")
|
karar_id: Optional[str] = Field(None, description="ID")
|
||||||
related_cases_url: Optional[HttpUrl] = Field(None, description="URL to related court cases page, if available.")
|
related_cases_url: Optional[HttpUrl] = Field(None, description="Cases URL")
|
||||||
|
|
||||||
class RekabetSearchResult(BaseModel):
|
class RekabetSearchResult(BaseModel):
|
||||||
"""Model for the overall search result for Rekabet Kurumu decisions."""
|
"""Model for the overall search result for Rekabet Kurumu decisions."""
|
||||||
decisions: List[RekabetDecisionSummary]
|
decisions: List[RekabetDecisionSummary]
|
||||||
total_records_found: Optional[int] = Field(None, description="Total number of records found matching the query.")
|
total_records_found: Optional[int] = Field(None, description="Total")
|
||||||
retrieved_page_number: int = Field(description="The page number of the results that were retrieved.")
|
retrieved_page_number: int = Field(description="Page")
|
||||||
total_pages: Optional[int] = Field(None, description="Total number of pages available for the query.")
|
total_pages: Optional[int] = Field(None, description="Pages")
|
||||||
|
|
||||||
class RekabetDocument(BaseModel):
|
class RekabetDocument(BaseModel):
|
||||||
"""
|
"""
|
||||||
@@ -58,16 +57,15 @@ class RekabetDocument(BaseModel):
|
|||||||
Contains metadata from the landing page, a link to the PDF,
|
Contains metadata from the landing page, a link to the PDF,
|
||||||
and the PDF's content converted to paginated Markdown.
|
and the PDF's content converted to paginated Markdown.
|
||||||
"""
|
"""
|
||||||
source_landing_page_url: HttpUrl = Field(description="The URL of the decision's landing page from which the PDF was identified.")
|
source_landing_page_url: HttpUrl = Field(description="Source URL")
|
||||||
karar_id: str = Field(description="GUID of the decision.")
|
karar_id: str = Field(description="ID")
|
||||||
|
|
||||||
title_on_landing_page: Optional[str] = Field(None, description="Title as found on the landing page (e.g., from <title> tag or a main heading). Could be a generic title if direct PDF.")
|
title_on_landing_page: Optional[str] = Field(None, description="Title")
|
||||||
pdf_url: Optional[HttpUrl] = Field(None, description="Direct URL to the decision PDF document, if successfully found and resolved.")
|
pdf_url: Optional[HttpUrl] = Field(None, description="PDF URL")
|
||||||
|
|
||||||
# Fields for Markdown content derived from the PDF
|
markdown_chunk: Optional[str] = Field(None, description="Content")
|
||||||
markdown_chunk: Optional[str] = Field(None, description="A 5,000 character chunk of the Markdown content derived from the decision PDF.")
|
current_page: int = Field(1, description="Page")
|
||||||
current_page: int = Field(1, description="The current page number of the PDF-derived markdown chunk (1-indexed).")
|
total_pages: int = Field(1, description="Total pages")
|
||||||
total_pages: int = Field(1, description="Total number of pages for the full PDF-derived markdown content. Will be 0 if content could not be processed.")
|
is_paginated: bool = Field(False, description="Paginated")
|
||||||
is_paginated: bool = Field(False, description="True if the full PDF-derived markdown content is split into multiple pages.")
|
|
||||||
|
|
||||||
error_message: Optional[str] = Field(None, description="Contains an error message if the document retrieval or processing failed at any stage.")
|
error_message: Optional[str] = Field(None, description="Error")
|
||||||
+23
-105
@@ -16,30 +16,18 @@ class GenelKurulSearchRequest(BaseModel):
|
|||||||
of the Turkish Court of Accounts, typically addressing interpretation of
|
of the Turkish Court of Accounts, typically addressing interpretation of
|
||||||
audit and accountability regulations.
|
audit and accountability regulations.
|
||||||
"""
|
"""
|
||||||
karar_no: Optional[str] = Field(None, description="Decision number (e.g., '5415')")
|
karar_no: Optional[str] = Field(None, description="Decision no")
|
||||||
karar_ek: Optional[str] = Field(None, description="Decision appendix number (max 99)")
|
karar_ek: Optional[str] = Field(None, description="Appendix no")
|
||||||
|
|
||||||
karar_tarih_baslangic: Optional[str] = Field(None, description="""
|
karar_tarih_baslangic: Optional[str] = Field(None, description="Start year (YYYY)")
|
||||||
Decision start year for date range filtering.
|
|
||||||
Available years: 2006-2024. Format: 'YYYY' (e.g., '2020')
|
|
||||||
Use with karar_tarih_bitis for date range filtering.
|
|
||||||
""")
|
|
||||||
|
|
||||||
karar_tarih_bitis: Optional[str] = Field(None, description="""
|
karar_tarih_bitis: Optional[str] = Field(None, description="End year")
|
||||||
Decision end year for date range filtering.
|
|
||||||
Available years: 2006-2024. Format: 'YYYY' (e.g., '2024')
|
|
||||||
Use with karar_tarih_baslangic for date range filtering.
|
|
||||||
""")
|
|
||||||
|
|
||||||
karar_tamami: Optional[str] = Field(None, description="""
|
karar_tamami: Optional[str] = Field(None, description="Value")
|
||||||
Content/text search within decision summaries (max 400 characters).
|
|
||||||
Searches in decision abstracts and main content.
|
|
||||||
Example: 'belediye taşınmaz tahsis'
|
|
||||||
""")
|
|
||||||
|
|
||||||
# DataTables pagination
|
# DataTables pagination
|
||||||
start: int = Field(0, description="Starting record for pagination (0-based)")
|
start: int = Field(0, description="Starting record for pagination (0-based)")
|
||||||
length: int = Field(10, description="Number of records per page (1-100)")
|
length: int = Field(10, description="Number of records per page (1-10)")
|
||||||
|
|
||||||
class GenelKurulDecision(BaseModel):
|
class GenelKurulDecision(BaseModel):
|
||||||
"""Single Genel Kurul decision entry from search results."""
|
"""Single Genel Kurul decision entry from search results."""
|
||||||
@@ -66,62 +54,27 @@ class TemyizKuruluSearchRequest(BaseModel):
|
|||||||
Temyiz Kurulu reviews appeals against audit chamber decisions,
|
Temyiz Kurulu reviews appeals against audit chamber decisions,
|
||||||
providing higher-level review of audit findings and sanctions.
|
providing higher-level review of audit findings and sanctions.
|
||||||
"""
|
"""
|
||||||
ilam_dairesi: DaireEnum = Field("ALL", description="""
|
ilam_dairesi: DaireEnum = Field("ALL", description="Value")
|
||||||
Chamber/Department filter for appeals board decisions.
|
|
||||||
• ALL: All chambers (default)
|
|
||||||
• 1-8: Specific chamber number (1. Daire through 8. Daire)
|
|
||||||
Each chamber specializes in different types of public institutions.
|
|
||||||
""")
|
|
||||||
|
|
||||||
yili: Optional[str] = Field(None, description="""
|
yili: Optional[str] = Field(None, description="Value")
|
||||||
Account year filter (Hesap Yılı).
|
|
||||||
Available years: 1993-2022. Format: 'YYYY' (e.g., '2020')
|
|
||||||
Refers to the fiscal year being audited, not decision date.
|
|
||||||
""")
|
|
||||||
|
|
||||||
karar_tarih_baslangic: Optional[str] = Field(None, description="""
|
karar_tarih_baslangic: Optional[str] = Field(None, description="Value")
|
||||||
Decision start year for date range filtering.
|
|
||||||
Available years: 2000, 2006-2024. Format: 'YYYY' (e.g., '2020')
|
|
||||||
Use with karar_tarih_bitis for date range filtering.
|
|
||||||
""")
|
|
||||||
|
|
||||||
karar_tarih_bitis: Optional[str] = Field(None, description="""
|
karar_tarih_bitis: Optional[str] = Field(None, description="End year")
|
||||||
Decision end year for date range filtering.
|
|
||||||
Available years: 2000, 2006-2024. Format: 'YYYY' (e.g., '2024')
|
|
||||||
Use with karar_tarih_baslangic for date range filtering.
|
|
||||||
""")
|
|
||||||
|
|
||||||
kamu_idaresi_turu: KamuIdaresiTuruEnum = Field("ALL", description="""
|
kamu_idaresi_turu: KamuIdaresiTuruEnum = Field("ALL", description="Value")
|
||||||
Public administration type filter:
|
|
||||||
• ALL: All institutions (default)
|
|
||||||
• Genel Bütçe Kapsamındaki İdareler: General budget administrations
|
|
||||||
• Yüksek Öğretim Kurumları: Higher education institutions
|
|
||||||
• Belediyeler ve Bağlı İdareler: Municipalities and affiliates
|
|
||||||
• Other specific institution types
|
|
||||||
""")
|
|
||||||
|
|
||||||
ilam_no: Optional[str] = Field(None, description="Audit report number (İlam No, max 50 chars)")
|
ilam_no: Optional[str] = Field(None, description="Audit report number (İlam No, max 50 chars)")
|
||||||
dosya_no: Optional[str] = Field(None, description="File number for the case")
|
dosya_no: Optional[str] = Field(None, description="File number for the case")
|
||||||
temyiz_tutanak_no: Optional[str] = Field(None, description="Appeals board meeting minutes number")
|
temyiz_tutanak_no: Optional[str] = Field(None, description="Appeals board meeting minutes number")
|
||||||
|
|
||||||
temyiz_karar: Optional[str] = Field(None, description="""
|
temyiz_karar: Optional[str] = Field(None, description="Value")
|
||||||
Content search within appeals decisions.
|
|
||||||
Searches decision text and reasoning.
|
|
||||||
Example: 'araç kiralama kasko'
|
|
||||||
""")
|
|
||||||
|
|
||||||
web_karar_konusu: WebKararKonusuEnum = Field("ALL", description="""
|
web_karar_konusu: WebKararKonusuEnum = Field("ALL", description="Value")
|
||||||
Decision subject category filter:
|
|
||||||
• ALL: All subjects (default)
|
|
||||||
• İhale Mevzuatı ile İlgili Kararlar: Procurement legislation
|
|
||||||
• Personel Mevzuatı ile İlgili Kararlar: Personnel legislation
|
|
||||||
• Harcırah Mevzuatı ile İlgili Kararlar: Travel allowance legislation
|
|
||||||
• Other specialized legal areas
|
|
||||||
""")
|
|
||||||
|
|
||||||
# DataTables pagination
|
# DataTables pagination
|
||||||
start: int = Field(0, description="Starting record for pagination (0-based)")
|
start: int = Field(0, description="Starting record for pagination (0-based)")
|
||||||
length: int = Field(10, description="Number of records per page (1-100)")
|
length: int = Field(10, description="Number of records per page (1-10)")
|
||||||
|
|
||||||
class TemyizKuruluDecision(BaseModel):
|
class TemyizKuruluDecision(BaseModel):
|
||||||
"""Single Temyiz Kurulu decision entry from search results."""
|
"""Single Temyiz Kurulu decision entry from search results."""
|
||||||
@@ -148,60 +101,25 @@ class DaireSearchRequest(BaseModel):
|
|||||||
Daire decisions are first-instance audit findings and sanctions
|
Daire decisions are first-instance audit findings and sanctions
|
||||||
issued by individual audit chambers before potential appeals.
|
issued by individual audit chambers before potential appeals.
|
||||||
"""
|
"""
|
||||||
yargilama_dairesi: DaireEnum = Field("ALL", description="""
|
yargilama_dairesi: DaireEnum = Field("ALL", description="Value")
|
||||||
Audit chamber filter:
|
|
||||||
• ALL: All chambers (default)
|
|
||||||
• 1-8: Specific chamber number (1. Daire through 8. Daire)
|
|
||||||
Each chamber audits different types of public institutions.
|
|
||||||
""")
|
|
||||||
|
|
||||||
karar_tarih_baslangic: Optional[str] = Field(None, description="""
|
karar_tarih_baslangic: Optional[str] = Field(None, description="Value")
|
||||||
Decision start year for date range filtering.
|
|
||||||
Available years: 2012-2025. Format: 'YYYY' (e.g., '2020')
|
|
||||||
Use with karar_tarih_bitis for date range filtering.
|
|
||||||
""")
|
|
||||||
|
|
||||||
karar_tarih_bitis: Optional[str] = Field(None, description="""
|
karar_tarih_bitis: Optional[str] = Field(None, description="End year")
|
||||||
Decision end year for date range filtering.
|
|
||||||
Available years: 2012-2025. Format: 'YYYY' (e.g., '2024')
|
|
||||||
Use with karar_tarih_baslangic for date range filtering.
|
|
||||||
""")
|
|
||||||
|
|
||||||
ilam_no: Optional[str] = Field(None, description="Audit report number (İlam No, max 50 chars)")
|
ilam_no: Optional[str] = Field(None, description="Audit report number (İlam No, max 50 chars)")
|
||||||
|
|
||||||
kamu_idaresi_turu: KamuIdaresiTuruEnum = Field("ALL", description="""
|
kamu_idaresi_turu: KamuIdaresiTuruEnum = Field("ALL", description="Value")
|
||||||
Public administration type filter:
|
|
||||||
• ALL: All institutions (default)
|
|
||||||
• Genel Bütçe Kapsamındaki İdareler: General budget administrations
|
|
||||||
• Yüksek Öğretim Kurumları: Higher education institutions
|
|
||||||
• Belediyeler ve Bağlı İdareler: Municipalities and affiliates
|
|
||||||
• Other specific institution types
|
|
||||||
""")
|
|
||||||
|
|
||||||
hesap_yili: Optional[str] = Field(None, description="""
|
hesap_yili: Optional[str] = Field(None, description="Value")
|
||||||
Account year filter (Hesap Yılı).
|
|
||||||
Available years: 2005, 2008-2023. Format: 'YYYY' (e.g., '2020')
|
|
||||||
Refers to the fiscal year being audited, not decision date.
|
|
||||||
""")
|
|
||||||
|
|
||||||
web_karar_konusu: WebKararKonusuEnum = Field("ALL", description="""
|
web_karar_konusu: WebKararKonusuEnum = Field("ALL", description="Value")
|
||||||
Decision subject category filter:
|
|
||||||
• ALL: All subjects (default)
|
|
||||||
• İhale Mevzuatı ile İlgili Kararlar: Procurement legislation
|
|
||||||
• Personel Mevzuatı ile İlgili Kararlar: Personnel legislation
|
|
||||||
• Vergi Resmi Harç ve Diğer Gelirlerle İlgili Kararlar: Tax and fee legislation
|
|
||||||
• Other specialized legal areas
|
|
||||||
""")
|
|
||||||
|
|
||||||
web_karar_metni: Optional[str] = Field(None, description="""
|
web_karar_metni: Optional[str] = Field(None, description="Value")
|
||||||
Content search within chamber decisions.
|
|
||||||
Searches decision text and audit findings.
|
|
||||||
Example: 'birim fiyat revize edilmemesi'
|
|
||||||
""")
|
|
||||||
|
|
||||||
# DataTables pagination
|
# DataTables pagination
|
||||||
start: int = Field(0, description="Starting record for pagination (0-based)")
|
start: int = Field(0, description="Starting record for pagination (0-based)")
|
||||||
length: int = Field(10, description="Number of records per page (1-100)")
|
length: int = Field(10, description="Number of records per page (1-10)")
|
||||||
|
|
||||||
class DaireDecision(BaseModel):
|
class DaireDecision(BaseModel):
|
||||||
"""Single Daire decision entry from search results."""
|
"""Single Daire decision entry from search results."""
|
||||||
@@ -235,7 +153,7 @@ class SayistayDocumentMarkdown(BaseModel):
|
|||||||
decision types (Genel Kurul, Temyiz Kurulu, Daire).
|
decision types (Genel Kurul, Temyiz Kurulu, Daire).
|
||||||
"""
|
"""
|
||||||
decision_id: str = Field(..., description="Unique decision identifier")
|
decision_id: str = Field(..., description="Unique decision identifier")
|
||||||
decision_type: str = Field(..., description="Type of decision: 'genel_kurul', 'temyiz_kurulu', or 'daire'")
|
decision_type: str = Field(..., description="Value")
|
||||||
source_url: str = Field(..., description="Original URL where the document was retrieved")
|
source_url: str = Field(..., description="Original URL where the document was retrieved")
|
||||||
markdown_content: Optional[str] = Field(None, description="Full decision text converted to Markdown format")
|
markdown_content: Optional[str] = Field(None, description="Full decision text converted to Markdown format")
|
||||||
retrieval_date: Optional[str] = Field(None, description="Date when document was retrieved (ISO format)")
|
retrieval_date: Optional[str] = Field(None, description="Date when document was retrieved (ISO format)")
|
||||||
|
|||||||
@@ -28,41 +28,41 @@ class UyusmazlikKararSonucuEnum(str, Enum): # Based on checkbox text in the form
|
|||||||
|
|
||||||
class UyusmazlikSearchRequest(BaseModel): # This is the model the MCP tool will accept
|
class UyusmazlikSearchRequest(BaseModel): # This is the model the MCP tool will accept
|
||||||
"""Model for Uyuşmazlık Mahkemesi search request using user-friendly terms."""
|
"""Model for Uyuşmazlık Mahkemesi search request using user-friendly terms."""
|
||||||
icerik: Optional[str] = Field("", description="Keyword or content for main text search (Icerik).")
|
icerik: Optional[str] = Field("", description="Search text")
|
||||||
|
|
||||||
bolum: Optional[UyusmazlikBolumEnum] = Field(
|
bolum: Optional[UyusmazlikBolumEnum] = Field(
|
||||||
UyusmazlikBolumEnum.TUMU,
|
UyusmazlikBolumEnum.TUMU,
|
||||||
description="Select the department (Bölüm)."
|
description="Department"
|
||||||
)
|
)
|
||||||
uyusmazlik_turu: Optional[UyusmazlikTuruEnum] = Field(
|
uyusmazlik_turu: Optional[UyusmazlikTuruEnum] = Field(
|
||||||
UyusmazlikTuruEnum.TUMU,
|
UyusmazlikTuruEnum.TUMU,
|
||||||
description="Select the type of dispute (Uyuşmazlık)."
|
description="Dispute type"
|
||||||
)
|
)
|
||||||
|
|
||||||
# User provides a list of user-friendly names for Karar Sonucu
|
# User provides a list of user-friendly names for Karar Sonucu
|
||||||
karar_sonuclari: Optional[List[UyusmazlikKararSonucuEnum]] = Field( # Changed to list of Enums
|
karar_sonuclari: Optional[List[UyusmazlikKararSonucuEnum]] = Field( # Changed to list of Enums
|
||||||
default_factory=list,
|
default_factory=list,
|
||||||
description="List of desired 'Karar Sonucu' types."
|
description="Decision types"
|
||||||
)
|
)
|
||||||
|
|
||||||
esas_yil: Optional[str] = Field("", description="Case year ('Esas Yılı').")
|
esas_yil: Optional[str] = Field("", description="Case year")
|
||||||
esas_sayisi: Optional[str] = Field("", description="Case number ('Esas Sayısı').")
|
esas_sayisi: Optional[str] = Field("", description="Case no")
|
||||||
karar_yil: Optional[str] = Field("", description="Decision year ('Karar Yılı').")
|
karar_yil: Optional[str] = Field("", description="Decision year")
|
||||||
karar_sayisi: Optional[str] = Field("", description="Decision number ('Karar Sayısı').")
|
karar_sayisi: Optional[str] = Field("", description="Decision no")
|
||||||
kanun_no: Optional[str] = Field("", description="Relevant Law Number ('KanunNo').")
|
kanun_no: Optional[str] = Field("", description="Law no")
|
||||||
|
|
||||||
karar_date_begin: Optional[str] = Field("", description="Decision start date (DD.MM.YYYY) ('KararDateBegin').")
|
karar_date_begin: Optional[str] = Field("", description="Start date (DD.MM.YYYY)")
|
||||||
karar_date_end: Optional[str] = Field("", description="Decision end date (DD.MM.YYYY) ('KararDateEnd').")
|
karar_date_end: Optional[str] = Field("", description="End date (DD.MM.YYYY)")
|
||||||
|
|
||||||
resmi_gazete_sayi: Optional[str] = Field("", description="Official Gazette number ('ResmiGazeteSayi').")
|
resmi_gazete_sayi: Optional[str] = Field("", description="Gazette no")
|
||||||
resmi_gazete_date: Optional[str] = Field("", description="Official Gazette date (DD.MM.YYYY) ('ResmiGazeteDate').")
|
resmi_gazete_date: Optional[str] = Field("", description="Gazette date (DD.MM.YYYY)")
|
||||||
|
|
||||||
# Detailed text search fields from the "icerikDetail" section of the form
|
# Detailed text search fields from the "icerikDetail" section of the form
|
||||||
tumce: Optional[str] = Field("", description="Exact phrase search ('Tumce').")
|
tumce: Optional[str] = Field("", description="Exact phrase")
|
||||||
wild_card: Optional[str] = Field("", description="Search for phrase and its inflections ('WildCard').") # Changed from WildCard for Pythonic name
|
wild_card: Optional[str] = Field("", description="Wildcard search")
|
||||||
hepsi: Optional[str] = Field("", description="Search for texts containing all specified words ('Hepsi').")
|
hepsi: Optional[str] = Field("", description="All words")
|
||||||
herhangi_birisi: Optional[str] = Field("", description="Search for texts containing any of the specified words ('Herhangibirisi').")
|
herhangi_birisi: Optional[str] = Field("", description="Any word")
|
||||||
not_hepsi: Optional[str] = Field("", description="Exclude texts containing these specified words ('NotHepsi').")
|
not_hepsi: Optional[str] = Field("", description="Exclude words")
|
||||||
|
|
||||||
class UyusmazlikApiDecisionEntry(BaseModel):
|
class UyusmazlikApiDecisionEntry(BaseModel):
|
||||||
"""Model for an individual decision entry parsed from Uyuşmazlık API's HTML search response."""
|
"""Model for an individual decision entry parsed from Uyuşmazlık API's HTML search response."""
|
||||||
@@ -71,9 +71,9 @@ class UyusmazlikApiDecisionEntry(BaseModel):
|
|||||||
bolum: Optional[str] = Field(None)
|
bolum: Optional[str] = Field(None)
|
||||||
uyusmazlik_konusu: Optional[str] = Field(None)
|
uyusmazlik_konusu: Optional[str] = Field(None)
|
||||||
karar_sonucu: Optional[str] = Field(None)
|
karar_sonucu: Optional[str] = Field(None)
|
||||||
popover_content: Optional[str] = Field(None, description="Summary/description from popover.")
|
popover_content: Optional[str] = Field(None, description="Summary")
|
||||||
document_url: HttpUrl # Full URL to the decision document HTML page
|
document_url: HttpUrl # Full URL to the decision document HTML page
|
||||||
pdf_url: Optional[HttpUrl] = Field(None, description="Direct URL to PDF if available.")
|
pdf_url: Optional[HttpUrl] = Field(None, description="PDF URL")
|
||||||
|
|
||||||
class UyusmazlikSearchResponse(BaseModel): # This is what the MCP tool will return
|
class UyusmazlikSearchResponse(BaseModel): # This is what the MCP tool will return
|
||||||
"""Response model for Uyuşmazlık Mahkemesi search results for the MCP tool."""
|
"""Response model for Uyuşmazlık Mahkemesi search results for the MCP tool."""
|
||||||
|
|||||||
@@ -34,86 +34,41 @@ class YargitayDetailedSearchRequest(BaseModel):
|
|||||||
to Yargitay's detailed search endpoint (e.g., /aramadetaylist).
|
to Yargitay's detailed search endpoint (e.g., /aramadetaylist).
|
||||||
Based on the payload provided by the user.
|
Based on the payload provided by the user.
|
||||||
"""
|
"""
|
||||||
arananKelime: Optional[str] = Field("", description="""Keyword to search for with advanced operators support:
|
arananKelime: Optional[str] = Field("", description="Turkish keywords (supports +word -word \"phrase\" operators)")
|
||||||
• Simple words: 'arsa payı' (OR logic - finds documents with ANY word)
|
|
||||||
• Exact phrases: '"arsa payı"' (finds exact phrase)
|
|
||||||
• AND logic: 'arsa+payı' (both words required)
|
|
||||||
• Wildcards: 'bozma*' (matches bozma, bozması, bozmanın, etc.)
|
|
||||||
• Multiple required: '+"arsa payı" +"bozma sebebi"'
|
|
||||||
• Exclusion: '+"arsa payı" -"inşaat sözleşmesi"'
|
|
||||||
Examples: arsa payı | "arsa payı" | +"mülkiyet hakkı" +"bozma sebebi" | hukuk*""")
|
|
||||||
# Department/Board selection - Complete Court of Cassation chamber hierarchy
|
# Department/Board selection - Complete Court of Cassation chamber hierarchy
|
||||||
birimYrgKurulDaire: Optional[str] = Field("ALL", description="""
|
birimYrgKurulDaire: Optional[str] = Field("ALL", description="Chamber (ALL or specific chamber name)")
|
||||||
Court of Cassation (Yargıtay) chamber/board selection. Options include:
|
birimYrgHukukDaire: Optional[str] = Field("", description="Legacy field")
|
||||||
- 'ALL' for all chambers
|
birimYrgCezaDaire: Optional[str] = Field("", description="Legacy field")
|
||||||
- Civil: 'Civil General Assembly (Hukuk Genel Kurulu)', '1st Civil Chamber (1. Hukuk Dairesi)' through '23rd Civil Chamber (23. Hukuk Dairesi)', 'Civil Chambers Presidents Board (Hukuk Daireleri Başkanlar Kurulu)'
|
|
||||||
- Criminal: 'Criminal General Assembly (Ceza Genel Kurulu)', '1st Criminal Chamber (1. Ceza Dairesi)' through '23rd Criminal Chamber (23. Ceza Dairesi)', 'Criminal Chambers Presidents Board (Ceza Daireleri Başkanlar Kurulu)'
|
|
||||||
- General: 'Grand General Assembly (Büyük Genel Kurulu)'
|
|
||||||
Total: 52 possible values (including 'ALL' for all chambers)
|
|
||||||
""")
|
|
||||||
birimYrgHukukDaire: Optional[str] = Field("", description="Legacy field - use birimYrgKurulDaire instead for chamber selection")
|
|
||||||
birimYrgCezaDaire: Optional[str] = Field("", description="Legacy field - use birimYrgKurulDaire instead for chamber selection")
|
|
||||||
|
|
||||||
esasYil: Optional[str] = Field("", description="""Case year for 'Esas No' filtering.
|
esasYil: Optional[str] = Field("", description="Case year (YYYY)")
|
||||||
Format: YYYY (e.g., '2024')
|
esasIlkSiraNo: Optional[str] = Field("", description="Start case no")
|
||||||
Use with sequence numbers for precise case targeting""")
|
esasSonSiraNo: Optional[str] = Field("", description="End case no")
|
||||||
esasIlkSiraNo: Optional[str] = Field("", description="""Starting sequence number for 'Esas No' range filtering.
|
|
||||||
Format: numeric string (e.g., '1', '100')
|
|
||||||
Use with esasSonSiraNo for range: cases 100-200 in specified year""")
|
|
||||||
esasSonSiraNo: Optional[str] = Field("", description="""Ending sequence number for 'Esas No' range filtering.
|
|
||||||
Format: numeric string (e.g., '500', '1000')
|
|
||||||
Creates range from esasIlkSiraNo to this number""")
|
|
||||||
|
|
||||||
kararYil: Optional[str] = Field("", description="""Decision year for 'Karar No' filtering.
|
kararYil: Optional[str] = Field("", description="Decision year (YYYY)")
|
||||||
Format: YYYY (e.g., '2024')
|
kararIlkSiraNo: Optional[str] = Field("", description="Start decision no")
|
||||||
Filters decisions by the year they were issued""")
|
kararSonSiraNo: Optional[str] = Field("", description="End decision no")
|
||||||
kararIlkSiraNo: Optional[str] = Field("", description="""Starting sequence number for 'Karar No' range filtering.
|
|
||||||
Format: numeric string (e.g., '1', '50')
|
|
||||||
Use with kararSonSiraNo for decision number ranges""")
|
|
||||||
kararSonSiraNo: Optional[str] = Field("", description="""Ending sequence number for 'Karar No' range filtering.
|
|
||||||
Format: numeric string (e.g., '100', '500')
|
|
||||||
Creates range from kararIlkSiraNo to this number""")
|
|
||||||
|
|
||||||
baslangicTarihi: Optional[str] = Field("", description="""Start date for decision search.
|
baslangicTarihi: Optional[str] = Field("", description="Start date (DD.MM.YYYY)")
|
||||||
Format: DD.MM.YYYY (e.g., '01.01.2024')
|
bitisTarihi: Optional[str] = Field("", description="End date (DD.MM.YYYY)")
|
||||||
Use with bitisTarihi for date range filtering
|
|
||||||
Examples: '01.01.2024', '15.06.2023'""")
|
|
||||||
bitisTarihi: Optional[str] = Field("", description="""End date for decision search.
|
|
||||||
Format: DD.MM.YYYY (e.g., '31.12.2024')
|
|
||||||
Creates date range from baslangicTarihi to this date
|
|
||||||
Examples: '31.12.2024', '30.06.2023'""")
|
|
||||||
|
|
||||||
siralama: Optional[str] = Field("3", description="""Sorting criteria for search results:
|
siralama: Optional[str] = Field("3", description="Sort by (1=case, 2=decision, 3=date)")
|
||||||
• '1': Esas No (Case Number) - sorts by case registration order
|
siralamaDirection: Optional[str] = Field("desc", description="Direction (asc/desc)")
|
||||||
• '2': Karar No (Decision Number) - sorts by decision issuance order
|
|
||||||
• '3': Karar Tarihi (Decision Date) - sorts by chronological order [DEFAULT]
|
|
||||||
Recommended: Use '3' for most recent decisions first""")
|
|
||||||
siralamaDirection: Optional[str] = Field("desc", description="""Sorting direction for results:
|
|
||||||
• 'desc': Descending order (newest/highest first) [DEFAULT]
|
|
||||||
• 'asc': Ascending order (oldest/lowest first)
|
|
||||||
Most common: 'desc' for latest decisions first""")
|
|
||||||
|
|
||||||
pageSize: int = Field(10, ge=1, le=100, description="""Number of results per page.
|
pageSize: int = Field(10, ge=1, le=10, description="Results per page (1-100)")
|
||||||
Range: 1-100 results per page
|
pageNumber: int = Field(1, ge=1, description="Page number (1-indexed)")
|
||||||
Recommended: 10-50 for balanced performance and coverage
|
|
||||||
Large values (50-100) for comprehensive analysis""")
|
|
||||||
pageNumber: int = Field(1, ge=1, description="""Page number to retrieve (1-indexed).
|
|
||||||
Start with 1 for first page
|
|
||||||
Use with pageSize to navigate through large result sets
|
|
||||||
Example: pageSize=50, pageNumber=3 gets results 101-150""")
|
|
||||||
|
|
||||||
class YargitayApiDecisionEntry(BaseModel):
|
class YargitayApiDecisionEntry(BaseModel):
|
||||||
"""Model for an individual decision entry from the Yargitay API search response."""
|
"""Model for an individual decision entry from the Yargitay API search response."""
|
||||||
id: str # Unique system ID of the decision
|
id: str # Unique system ID of the decision
|
||||||
daire: Optional[str] = Field(None, description="The chamber (Daire) that made the decision.")
|
daire: Optional[str] = Field(None, description="Chamber")
|
||||||
esasNo: Optional[str] = Field(None, alias="esasNo", description="Case registry number (Esas No).")
|
esasNo: Optional[str] = Field(None, alias="esasNo", description="Case no")
|
||||||
kararNo: Optional[str] = Field(None, alias="kararNo", description="Decision number (Karar No).")
|
kararNo: Optional[str] = Field(None, alias="kararNo", description="Decision no")
|
||||||
kararTarihi: Optional[str] = Field(None, alias="kararTarihi", description="Date of the decision (Karar Tarihi).")
|
kararTarihi: Optional[str] = Field(None, alias="kararTarihi", description="Date")
|
||||||
arananKelime: Optional[str] = Field(None, alias="arananKelime", description="Matched keyword (Aranan Kelime) in the search result item.")
|
arananKelime: Optional[str] = Field(None, alias="arananKelime", description="Keyword")
|
||||||
# 'index' and 'siraNo' from API response are not critical for MCP tool, so omitted for brevity
|
# 'index' and 'siraNo' from API response are not critical for MCP tool, so omitted for brevity
|
||||||
|
|
||||||
# This field will be populated by the client after fetching the search list
|
# This field will be populated by the client after fetching the search list
|
||||||
document_url: Optional[HttpUrl] = Field(None, description="Direct URL (Belge URL) to the decision document.")
|
document_url: Optional[HttpUrl] = Field(None, description="Document URL")
|
||||||
|
|
||||||
model_config = ConfigDict(populate_by_name=True) # To allow populating by alias from API response
|
model_config = ConfigDict(populate_by_name=True) # To allow populating by alias from API response
|
||||||
|
|
||||||
@@ -132,9 +87,9 @@ class YargitayApiSearchResponse(BaseModel):
|
|||||||
|
|
||||||
class YargitayDocumentMarkdown(BaseModel):
|
class YargitayDocumentMarkdown(BaseModel):
|
||||||
"""Model for a Yargitay decision document, containing only Markdown content."""
|
"""Model for a Yargitay decision document, containing only Markdown content."""
|
||||||
id: str = Field(..., description="The unique ID (Belge Kimliği) of the document.")
|
id: str = Field(..., description="Document ID")
|
||||||
markdown_content: Optional[str] = Field(None, description="The decision content (Karar İçeriği) converted to Markdown.")
|
markdown_content: Optional[str] = Field(None, description="Content")
|
||||||
source_url: HttpUrl = Field(..., description="The source URL (Kaynak URL) of the original document.")
|
source_url: HttpUrl = Field(..., description="Source URL")
|
||||||
|
|
||||||
class CompactYargitaySearchResult(BaseModel):
|
class CompactYargitaySearchResult(BaseModel):
|
||||||
"""A more compact search result model for the MCP tool to return."""
|
"""A more compact search result model for the MCP tool to return."""
|
||||||
|
|||||||
Reference in New Issue
Block a user