from pydantic import BaseModel, Field, conint from typing import Optional, List, Literal # ================================================================================================================= # COURT SCHEMAS # ================================================================================================================= class Court(BaseModel): query: Optional[str] = Field(None, description="Search term or phrase") typSuduFacetFilter: Optional[List[str]] = Field(None, description="Court type (facet filter)") krajFacetFilter: Optional[List[str]] = Field(None, description="Region (facet filter)") okresFacetFilter: Optional[List[str]] = Field(None, description="District (facet filter)") zahrnutZaniknuteSudy: Optional[bool] = Field(None, description="Flag to filter defunct/inactive courts") 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)") 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)") class CourtID(BaseModel): id: str = Field(..., description="Court identifier (e. g., sud_175)") class CourtAutocomplete(BaseModel): query: Optional[str] = Field(None, description="Search term or phrase") limit: Optional[conint(ge=1)] = Field(None, description="Limits the number of returned results (pagination)") # ================================================================================================================= # JUDGE SCHEMAS # ================================================================================================================= class Judge(BaseModel): query: Optional[str] = Field(None, description="Search term or phrase") funkciaFacetFilter: Optional[List[str]] = Field(None, description="Judge function (facet filter)") typSuduFacetFilter: Optional[List[str]] = Field(None, description="Court type (facet filter)") krajFacetFilter: Optional[List[str]] = Field(None, description="Region (facet filter)") okresFacetFilter: Optional[List[str]] = Field(None, description="District (facet filter)") stavZapisuFacetFilter: Optional[List[str]] = Field(None, description="Record status (facet filter)") 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)") 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: Optional[str] = Field(None, description="Search term or phrase") 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: Optional[str] = Field(None, description="Search term or phrase") typDokumentuFacetFilter: Optional[List[str]] = Field(None, description="Contract's type (facet filter)") odberatelFacetFilter: Optional[List[str]] = Field(None, description="Subscriber filter") dodavatelFacetFilter: Optional[List[str]] = Field(None, description="Supplier filter") hodnotaZmluvyFacetFilter: Optional[List[str]] = Field(None, description="Contract value in EUR filter") 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)") 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 ContractID(BaseModel): idZmluvy: str = Field(..., description="Contract identifier (e. g., 2156252)") class ContractAutocomplete(BaseModel): query: Optional[str] = Field(None, description="Search term or phrase") 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: Optional[str] = Field(None, description="Search term or phrase") typSuduFacetFilter: Optional[List[str]] = Field(None, description="Court type (facet filter)") krajFacetFilter: Optional[List[str]] = Field(None, description="Region (facet filter)") okresFacetFilter: Optional[List[str]] = Field(None, description="District (facet filter)") odkazovanePredpisy: Optional[str] = Field(None, description="Referenced regulations") oblastPravnejUpravyFacetFilter: Optional[List[str]] = Field(None, description="Area of legal regulation (facet filter)") podOblastPravnejUpravyFacetFilter: Optional[List[str]] = Field(None, description="Sub-area of legal regulation (facet filter)") formaRozhodnutiaFacetFilter: Optional[List[str]] = Field(None, description="Form of decision (facet filter)") povahaRozhodnutiaFacetFilter: Optional[str] = Field(None, description="Nature of decision") vydaniaOd: Optional[str] = Field(None, description="Issue date from") vydaniaDo: Optional[str] = Field(None, description="Issue date to") ecli: Optional[str] = Field(None, description="ECLI identifier") spisovaZnacka: Optional[str] = Field(None, description="Case reference number") cisloSpisu: Optional[str] = Field(None, description="File identification number") 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: Optional[str] = Field(None, description="Search term or phrase") 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: Optional[str] = Field(None, description="Search term or phrase") typSuduFacetFilter: Optional[List[str]] = Field(None, description="Court type (facet filter)") krajFacetFilter: Optional[List[str]] = Field(None, description="Region (facet filter)") okresFacetFilter: Optional[List[str]] = Field(None, description="District (facet filter)") usekFacetFilter: Optional[List[str]] = Field(None, description="List of sections (facet filter)") formaUkonuFacetFilter: Optional[List[str]] = Field(None, description="List of action types (facet filter)") 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") 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: Optional[str] = Field(None, description="Search term or phrase") 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: Optional[str] = Field(None, description="Search term or phrase") druhFacetFilter: Optional[List[str]] = Field(None, description="List of types (faceted filter)") 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: Optional[str] = Field(None, description="Search term or phrase") limit: Optional[conint(ge=1)] = Field(None, description="Limits the number of returned results (pagination)")