ai-lawyer-agent/api/schemas.py
2025-12-19 02:44:43 +01:00

179 lines
16 KiB
Python

from pydantic import BaseModel, Field, conint
from typing import Optional, List, Literal
# =================================================================================================================
# COURT SCHEMAS
# =================================================================================================================
class Court(BaseModel):
query: str = Field(None, description="Search term or phrase to help find information")
typSuduFacetFilter: Optional[List[str]] = Field(None, description="Court types (facet filter), e.g., Okresný súd, Krajský súd, Najvyšší súd SR, Špecializovaný trestný súd, etc.")
krajFacetFilter: Optional[List[str]] = Field(None, description="Regions (facet filter), e.g., Bratislavský kraj, Košický kraj, Prešovský kraj, etc.")
okresFacetFilter: Optional[List[str]] = Field(None, description="Districts (facet filter), e.g., Okres Banská Bystrica, Okres Bratislava I, Okres Košice I, etc.")
zahrnutZaniknuteSudy: Optional[bool] = Field(None, description="Include defunct/inactive courts (True) or only currently active courts (False)")
page: Optional[conint(ge=1)] = Field(None, description="Requested page number (starting from 1)")
size: Optional[conint(ge=1)] = Field(None, description="Number of results per page")
indexDatumOd: Optional[str] = Field(None, description="Index date from (format YYYY.MM.DD or DD.MM.YYYY)")
indexDatumDo: Optional[str] = Field(None, description="Index date to (format YYYY.MM.DD or DD.MM.YYYY)")
sortProperty: Optional[str] = Field(None, description="Field to sort the output by")
sortDirection: Literal["ASC", "DESC"] = Field("ASC", description="Sort direction (ASC or DESC)")
class CourtID(BaseModel):
id: str = Field(..., description="Court identifier (e.g., sud_175)")
class CourtAutocomplete(BaseModel):
query: str = Field(None, description="Search term or phrase to help find information")
limit: Optional[conint(ge=1)] = Field(None, description="Limits the number of returned results (pagination)")
# =================================================================================================================
# JUDGE SCHEMAS
# =================================================================================================================
class Judge(BaseModel):
query: str = Field(None, description="Search term or phrase to help find information")
funkciaFacetFilter: Optional[List[str]] = Field(None, description="Judge function, role or position related to a judge (facet filter) e.g., Sudca, Podpredseda, Predseda, Hosťujúci sudca")
typSuduFacetFilter: Optional[List[str]] = Field(None, description="Court types (facet filter), e.g., Okresný súd, Krajský súd, Najvyšší súd SR, Špecializovaný trestný súd, etc.")
krajFacetFilter: Optional[List[str]] = Field(None, description="Regions (facet filter), e.g., Bratislavský kraj, Košický kraj, Prešovský kraj, etc.")
okresFacetFilter: Optional[List[str]] = Field(None, description="Districts (facet filter), e.g., Okres Banská Bystrica, Okres Bratislava I, Okres Košice I, etc.")
stavZapisuFacetFilter: Optional[List[str]] = Field(None, description="Record status filter (facet filter) to specify which court records to include. Options (do not translate): label.sudca.aktivny, label.sudca.odvolany, label.sudca.vymazany, label.sudca.prerusenie vykonu - poberatel, label.sudca.prerusenie vykonu - ina funkce")
guidSud: Optional[str] = Field(None, description="Court identifier (e.g., sud_100)")
indexDatumOd: Optional[str] = Field(None, description="Index date from (format YYYY.MM.DD or DD.MM.YYYY)")
indexDatumDo: Optional[str] = Field(None, description="Index date to (format YYYY.MM.DD or DD.MM.YYYY)")
page: Optional[conint(ge=1)] = Field(None, description="Requested page number (starting from 1)")
size: Optional[conint(ge=1)] = Field(None, description="Number of results per page")
sortProperty: Optional[str] = Field(None, description="Field to sort the output by")
sortDirection: Literal["ASC", "DESC"] = Field("ASC", description="Sort direction (ASC or DESC)")
class JudgeID(BaseModel):
id: str = Field(..., description="Judge identifier (e. g., sudca_1)")
class JudgeAutocomplete(BaseModel):
query: str = Field(None, description="Search term or phrase to help find information")
guidSud: Optional[str] = Field(None, description="Court identifier (e.g., sud_100)")
limit: Optional[conint(ge=1)] = Field(None, description="Limits the number of returned results (pagination)")
# =================================================================================================================
# CONTRACTS SCHEMAS
# =================================================================================================================
class Contracts(BaseModel):
query: str = Field(None, description="Search term or phrase to help find information")
typDokumentuFacetFilter: Optional[List[str]] = Field(None, description="Contract's type (facet filter), e.g., FAKTURA, OBJEDNAVKA, ZMLUVA, DODATOK")
odberatelFacetFilter: Optional[List[str]] = Field(None, description="Subscriber filter. Examples: 'Krajský súd v Bratislave', 'Okresný súd Banská Bystrica', 'Špecializovaný trestný súd', Krajský súd v Košiciach, etc.")
dodavatelFacetFilter: Optional[List[str]] = Field(None, description="Supplier filter. Examples: Slovak Telekom, a.s., Wolters Kluwer s.r.o., Tibor Varga TSV Papier")
hodnotaZmluvyFacetFilter: Optional[List[str]] = Field(None, description="Contract value range filter. Options: '0-1000', '1000-20000', '20000-100000', '100000-500000', 'Viac ako 500000'")
datumZverejeneniaOd: Optional[str] = Field(None, description="Index date from (format YYYY-MM-DD)")
datumZverejeneniaDo: Optional[str] = Field(None, description="Index date to (format YYYY-MM-DD)")
guidSud: Optional[str] = Field(None, description="Court identifier (e.g., sud_100)")
indexDatumOd: Optional[str] = Field(None, description="Index date from (format YYYY-MM-DD or DD-MM-YYYY)")
indexDatumDo: Optional[str] = Field(None, description="Index date to (format YYYY-MM-DD or DD-MM-YYYY)")
sortProperty: Optional[str] = Field(None, description="Field to sort the output by")
sortDirection: Literal["ASC", "DESC"] = Field("ASC", description="Sort direction (ASC or DESC)")
page: Optional[conint(ge=1)] = Field(None, description="Requested page number (starting from 1)")
size: Optional[conint(ge=1)] = Field(None, description="Number of results per page")
class ContractID(BaseModel):
idZmluvy: str = Field(..., description="Contract identifier (e. g., 2156252)")
class ContractAutocomplete(BaseModel):
query: str = Field(None, description="Search term or phrase to help find information")
guidSud: Optional[str] = Field(None, description="Court identifier (e.g., sud_100)")
limit: Optional[conint(ge=1)] = Field(None, description="Limits the number of returned results (pagination)")
# =================================================================================================================
# DECISION SCHEMAS
# =================================================================================================================
class Decision(BaseModel):
query: str = Field(None, description="Search term or phrase to help find information")
typSuduFacetFilter: Optional[List[str]] = Field(None, description="Court types (facet filter), e.g., Okresný súd, Krajský súd, Najvyšší súd SR, Špecializovaný trestný súd, etc.")
krajFacetFilter: Optional[List[str]] = Field(None, description="Regions (facet filter), e.g., Bratislavský kraj, Košický kraj, Prešovský kraj, etc.")
okresFacetFilter: Optional[List[str]] = Field(None, description="Districts (facet filter), e.g., Okres Banská Bystrica, Okres Bratislava I, Okres Košice I, etc.")
odkazovanePredpisy: Optional[str] = Field(None, description="Referenced regulations")
oblastPravnejUpravyFacetFilter: Optional[List[str]] = Field(None, description="Area of legal regulation (facet filter), e.g., Občianske právo, Rodinné právo, Obchodné právo, Trestné právo, Správne právo")
podOblastPravnejUpravyFacetFilter: Optional[List[str]] = Field(None, description="Sub-area of legal regulation (facet filter), e.g., Ostatné, Spotrebiteľské zmluvy, Spätvzatie, Zmluvy, Rozvod, Konkurz, etc.")
formaRozhodnutiaFacetFilter: Optional[List[str]] = Field(None, description="Form of decision (facet filter), e.g., Uznesenie, Rozsudok, Platobný rozkaz, Rozhodnutie, Rozsudok pre zmeškanie, Opatrenie, Príkaz, etc.")
povahaRozhodnutiaFacetFilter: Optional[str] = Field(None, description="Nature of decision, (e.g., Prvostupňové nenapadnuté opravnými prostriedkami, Potvrdzujúce, Potvrdené, Zmenené, Odmietajúce podanie, etc.)")
vydaniaOd: Optional[str] = Field(None, description="Issue date from (format DD.MM.YYYY)")
vydaniaDo: Optional[str] = Field(None, description="Issue date to (format DD.MM.YYYY)")
ecli: Optional[str] = Field(None, description="ECLI identifier (e.g., ECLI:SK:OSPO:1965:8114010264.1)")
spisovaZnacka: Optional[str] = Field(None, description="Case reference number (e.g., 7C/221/1991, 0Er/1966/1998)")
cisloSpisu: Optional[str] = Field(None, description="File identification number (e.g., 'identifikacneCislo': '8114010264')")
guidSudca: Optional[str] = Field(None, description="Judge identifier (e.g., sudca_1)")
guidSud: Optional[str] = Field(None, description="Court identifier (e.g., sud_100)")
indexDatumOd: Optional[str] = Field(None, description="Index date from (format YYYY-MM-DD)")
indexDatumDo: Optional[str] = Field(None, description="Index date to (format YYYY-MM-DD)")
sortProperty: Optional[str] = Field(None, description="Field to sort the output by")
sortDirection: Literal["ASC", "DESC"] = Field("ASC", description="Sort direction (ASC or DESC)")
page: Optional[conint(ge=1)] = Field(None, description="Requested page number (starting from 1)")
size: Optional[conint(ge=1)] = Field(None, description="Number of results per page")
class DecisionID(BaseModel):
id: str = Field(..., description="Decision identifier (e.g., a3310194-e9ac-4e6b-bfbd-25c40f26938b:1097de02-3389-405b-98a4-df7abea3f9ec)")
class DecisionAutocomplete(BaseModel):
query: str = Field(None, description="Search term or phrase to help find information")
guidSud: Optional[str] = Field(None, description="Court identifier (e.g., sud_100)")
limit: Optional[conint(ge=1)] = Field(None, description="Limits the number of returned results (pagination)")
# =================================================================================================================
# CIVIL PROCEEDINGS SCHEMAS
# =================================================================================================================
class CivilProceedings(BaseModel):
query: str = Field(None, description="Search term or phrase to help find information")
typSuduFacetFilter: Optional[List[str]] = Field(None, description="Court types (facet filter), e.g., Okresný súd, Krajský súd, Najvyšší súd SR, Špecializovaný trestný súd, etc.")
krajFacetFilter: Optional[List[str]] = Field(None, description="Regions (facet filter), e.g., Bratislavský kraj, Košický kraj, Prešovský kraj, etc.")
okresFacetFilter: Optional[List[str]] = Field(None, description="Districts (facet filter), e.g., Okres Banská Bystrica, Okres Bratislava I, Okres Košice I, etc.")
usekFacetFilter: Optional[List[str]] = Field(None, description="List of sections (facet filter), e.g., C, O, S")
formaUkonuFacetFilter: Optional[List[str]] = Field(None, description="List of action types (facet filter), e.g., Pojednávanie bez rozhodnutia, Pojednávanie a rozhodnutie, Verejné vyhlásenie rozsudku, Vyhlásenie rozsudku, Predbežné prejednanie sporu")
pojednavaniaOd: Optional[str] = Field(None, description="Hearing date from (DD.MM.YYYY)")
pojednavaniaDo: Optional[str] = Field(None, description="Hearing date to (DD.MM.YYYY)")
guidSudca: Optional[str] = Field(None, description="Judge identifier (e.g., sudca_1)")
guidSud: Optional[str] = Field(None, description="Court identifier (e.g., sud_100)")
spisovaZnacka: Optional[str] = Field(None, description="Case reference number (e.g., 7C/221/1991, 0Er/1966/1998)")
verejneVyhlasenie: Optional[bool] = Field(None,description="Flag indicating whether the announcement is public")
indexDatumOd: Optional[str] = Field(None, description="Index date from (format YYYY-MM-DD)")
indexDatumDo: Optional[str] = Field(None, description="Index date to (format YYYY-MM-DD)")
sortProperty: Optional[str] = Field(None, description="Field to sort the output by")
sortDirection: Literal["ASC", "DESC"] = Field("ASC", description="Sort direction (ASC or DESC)")
page: Optional[conint(ge=1)] = Field(None, description="Requested page number (starting from 1)")
size: Optional[conint(ge=1)] = Field(None, description="Number of results per page")
class CivilProceedingsID(BaseModel):
id: str = Field(..., description="Identifier (e.g., 121e4d31-695e-41e1-9191-7c9ad5d8d484)")
class CivilProceedingsAutocomplete(BaseModel):
query: str = Field(None, description="Search term or phrase to help find information")
guidSud: Optional[str] = Field(None, description="Court identifier (e.g., sud_100)")
guidSudca: Optional[str] = Field(None, description="Judge identifier (e.g., sudca_1)")
verejneVyhlasenie: Optional[bool] = Field(None,description="Flag indicating whether the announcement is public")
limit: Optional[conint(ge=1)] = Field(None, description="Limits the number of returned results (pagination)")
# =================================================================================================================
# ADMINISTRATIVE PROCEEDINGS SCHEMAS
# =================================================================================================================
class AdministrativeProceedings(BaseModel):
query: str = Field(None, description="Search term or phrase to help find information")
druhFacetFilter: Optional[List[str]] = Field(None, description="List of types (faceted filter), e.g., Konanie o inom správnom delikte podľa § 27 ods. 1 písm. b) ZZTP, onanie o inom správnom delikte podľa § 26 ods. 1 písm. a) ZZTP v znení účinnom od 1. júla 2018, etc.")
datumPravoplatnostiOd: Optional[str] = Field(None, description="Validity date from (DD.MM.YYYY)")
datumPravoplatnostiDo: Optional[str] = Field(None, description="Validity date to (DD.MM.YYYY)")
page: Optional[conint(ge=1)] = Field(None, description="Requested page number (starting from 1)")
size: Optional[conint(ge=1)] = Field(None, description="Number of results per page")
sortProperty: Optional[str] = Field(None, description="Field to sort the output by")
sortDirection: Literal["ASC", "DESC"] = Field("ASC", description="Sort direction (ASC or DESC)")
class AdministrativeProceedingsID(BaseModel):
id: str = Field(..., description="Identifier of administrative proceedings (e.g., spravneKonanie_103)")
class AdministrativeProceedingsAutocomplete(BaseModel):
query: str = Field(None, description="Search term or phrase to help find information")
limit: Optional[conint(ge=1)] = Field(None, description="Limits the number of returned results (pagination)")