# generated by datamodel-codegen:
#   filename:  openapi-data-gov-gr.yaml

from __future__ import annotations

from datetime import date, datetime
from typing import Optional

from pydantic import BaseModel, EmailStr, Field
from typing_extensions import Annotated


class TrafficViolationData(BaseModel):
    count: Annotated[
        int, Field(description="The number of occurrences of the violation.")
    ]
    violation: Annotated[
        str, Field(description="Description of the traffic violation.")
    ]
    year: Annotated[int, Field(description="The year when the violation was recorded.")]


class TrafficAccidentData(BaseModel):
    deadly_accidents: Annotated[
        int, Field(description="The number of deadly accidents.")
    ]
    deaths: Annotated[
        int, Field(description="The number of deaths in traffic accidents.")
    ]
    jurisdiction: Annotated[
        str, Field(description="The jurisdiction where the accidents occurred.")
    ]
    other_accidents: Annotated[
        int,
        Field(
            description="The number of other (non-deadly and non-serious) accidents."
        ),
    ]
    other_injured: Annotated[
        int, Field(description="The number of people injured in other accidents.")
    ]
    serious_accidents: Annotated[
        int, Field(description="The number of serious accidents.")
    ]
    seriously_injured: Annotated[
        int, Field(description="The number of people seriously injured in accidents.")
    ]
    year: Annotated[
        int, Field(description="The year when the accidents were recorded.")
    ]


class HCGIncidentData(BaseModel):
    domestic: Annotated[int, Field(description="The number of domestic incidents.")]
    incident: Annotated[str, Field(description="Description of the incident.")]
    international: Annotated[
        int, Field(description="The number of international incidents.")
    ]
    year: Annotated[
        int, Field(description="The year when the incidents were recorded.")
    ]


class CrimeData(BaseModel):
    attempted: Annotated[int, Field(description="The number of attempted crimes.")]
    committed: Annotated[int, Field(description="The number of committed crimes.")]
    crime: Annotated[str, Field(description="Description of the crime.")]
    domestic_criminals: Annotated[
        int, Field(description="The number of domestic criminals involved.")
    ]
    foreign_criminals: Annotated[
        int, Field(description="The number of foreign criminals involved.")
    ]
    solved: Annotated[int, Field(description="The number of crimes that were solved.")]
    year: Annotated[int, Field(description="The year when the crimes were recorded.")]


class FinancialCrimeData(BaseModel):
    count: Annotated[
        int, Field(description="The number of occurrences of the financial crime.")
    ]
    crime: Annotated[str, Field(description="Description of the financial crime.")]
    year: Annotated[int, Field(description="The year when the crime was recorded.")]


class LawFirmData(BaseModel):
    active: Annotated[int, Field(description="The number of active law firms.")]
    entrants: Annotated[
        Optional[int],
        Field(description="The number of new entrant law firms in the period."),
    ] = None
    exits: Annotated[
        Optional[int],
        Field(description="The number of law firms that exited in the period."),
    ] = None
    quarter: Annotated[str, Field(description="The quarter of the year.")]
    year: Annotated[int, Field(description="The year of the record.")]


class LawyerData(BaseModel):
    active: Annotated[int, Field(description="The number of active lawyers.")]
    entrants: Annotated[
        int, Field(description="The number of new entrants in the period.")
    ]
    exits: Annotated[
        int, Field(description="The number of lawyers who exited in the period.")
    ]
    quarter: Annotated[str, Field(description="The quarter of the year.")]
    year: Annotated[int, Field(description="The year of the record.")]


class SchoolData(BaseModel):
    area: Annotated[
        str, Field(description="The geographical area where the school is located.")
    ]
    district: Annotated[
        str, Field(description="The district in which the school is situated.")
    ]
    email: Annotated[EmailStr, Field(description="The email address of the school.")]
    fax_number: Annotated[
        Optional[str], Field(description="The fax number of the school, if available.")
    ] = None
    lat: Annotated[
        Optional[float],
        Field(description="The latitude coordinate of the school's location."),
    ] = None
    lng: Annotated[
        Optional[float],
        Field(description="The longitude coordinate of the school's location."),
    ] = None
    municipality: Annotated[
        Optional[str],
        Field(description="The municipality where the school is located."),
    ] = None
    municipal_unit: Annotated[
        Optional[str], Field(description="The municipal unit of the school's location.")
    ] = None
    phone_number: Annotated[
        Optional[str], Field(description="The telephone number of the school.")
    ] = None
    prefecture: Annotated[
        Optional[str],
        Field(description="The prefecture in which the school is located."),
    ] = None
    regional_unit: Annotated[
        Optional[str], Field(description="The regional unit or division of the school.")
    ] = None
    school_code: Annotated[
        Optional[str], Field(description="A unique code identifying the school.")
    ] = None
    school_district: Annotated[
        Optional[str], Field(description="The school district, if applicable.")
    ] = None
    school_name: Annotated[str, Field(description="The official name of the school.")]
    school_subtype: Annotated[
        Optional[str],
        Field(
            description="The subtype of the school, indicating specific characteristics or focus."
        ),
    ] = None
    school_type: Annotated[
        Optional[str],
        Field(description="The type of school (e.g., primary, secondary)."),
    ] = None
    street_address: Annotated[
        Optional[str], Field(description="The street address of the school.")
    ] = None
    zip_code: Annotated[
        Optional[str], Field(description="The postal code for the school's location.")
    ] = None


class AcademicStaffData(BaseModel):
    assistant_professors: Annotated[
        int, Field(description="The number of assistant professors.", example=3)
    ]
    associate_professors: Annotated[
        int, Field(description="The number of associate professors.", example=4)
    ]
    full_professors: Annotated[
        int, Field(description="The number of full professors.", example=0)
    ]
    institution: Annotated[
        str,
        Field(
            description="The name of the educational institution.",
            example="ΑΝΩΤΑΤΗ ΕΚΚΛΗΣΙΑΣΤΙΚΗ ΑΚΑΔ",
        ),
    ]
    lecturers: Annotated[int, Field(description="The number of lecturers.", example=0)]
    practice_lecturers: Annotated[
        int, Field(description="The number of practice lecturers.", example=0)
    ]
    practice_professors: Annotated[
        int, Field(description="The number of practice professors.", example=0)
    ]
    year: Annotated[
        int, Field(description="The year when the data was recorded.", example=2018)
    ]


class StudentsSchoolData(BaseModel):
    district: Annotated[
        Optional[str],
        Field(
            description="The district where the school is located.",
            example="ΔΙΕΥΘΥΝΣΗ Δ.Ε. Α΄ ΑΘΗΝΑΣ",
        ),
    ] = None
    jurisdiction: Annotated[
        Optional[str],
        Field(
            description="The jurisdiction of the school.",
            example="ΣΙΒΙΤΑΝΙΔΕΙΟΣ ΔΗΜΟΣΙΑ ΣΧΟΛΗ ΤΕΧΝΩΝ ΚΑΙ ΕΠΑΓΓΕΛΜΑΤΩΝ",
        ),
    ] = None
    registered_students_boys: Annotated[
        Optional[int],
        Field(description="The number of registered boys in the school.", example=320),
    ] = None
    registered_students_girls: Annotated[
        Optional[int],
        Field(description="The number of registered girls in the school.", example=82),
    ] = None
    school_class: Annotated[
        Optional[str],
        Field(
            description="The class or category of the school.",
            example="Επαγγελματικά Λύκεια",
        ),
    ] = None
    school_name: Annotated[
        Optional[str],
        Field(
            description="The name of the school.", example="2ο ΗΜΕΡΗΣΙΟ ΕΠΑΛ ΣΙΒΙΤΑΝ"
        ),
    ] = None


class InstitutionalAffiliationData(BaseModel):
    institution: Annotated[
        str,
        Field(description="The name of the institution.", example="ΤΕΙ ΠΕΛΟΠΟΝΝΗΣΟΥ"),
    ]
    ngo: Annotated[
        int,
        Field(
            description="The number of affiliations to non-governmental organizations.",
            example=0,
        ),
    ]
    private_sector: Annotated[
        int,
        Field(
            description="The number of affiliations to the private sector.", example=59
        ),
    ]
    public_sector: Annotated[
        int,
        Field(
            description="The number of affiliations to the public sector.", example=45
        ),
    ]
    year: Annotated[
        int, Field(description="The year when the data was recorded.", example=2018)
    ]


class EudoxusData(BaseModel):
    department: Annotated[
        str,
        Field(
            description="The department of the institution.",
            example="ΟΙΚΙΑΚΗΣ ΟΙΚΟΝΟΜΙΑΣ ΚΑΙ ΟΙΚΟΛΟΓΙΑΣ",
        ),
    ]
    institution: Annotated[
        str,
        Field(
            description="The name of the institution.",
            example="ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ",
        ),
    ]
    period: Annotated[
        str,
        Field(
            description="The academic period (e.g., Spring, Fall).", example="Εαρινή"
        ),
    ]
    studentwithdeliveries: Annotated[
        int,
        Field(
            description="The number of students who received deliveries.", example=19
        ),
    ]
    studentwithstatements: Annotated[
        int,
        Field(description="The number of students who made statements.", example=60),
    ]
    year: Annotated[
        int, Field(description="The year when the data was recorded.", example=2017)
    ]


class OAEDUnemploymentData(BaseModel):
    asofdate: Annotated[
        date, Field(description="The date of the data record.", example="2020-09-01")
    ]
    benefits: Annotated[
        int, Field(description="Number of benefits provided.", example=143005)
    ]
    unemployed: Annotated[
        int, Field(description="Number of unemployed individuals.", example=1036582)
    ]


class ElectionVoterDistributionData(BaseModel):
    election_type: Annotated[
        str,
        Field(description="The type of the election.", example="τοπικής αυτοδιοίκηςη"),
    ]
    electoral_district: Annotated[
        str,
        Field(
            description="The electoral district where the election took place.",
            example="ΧΑΝΙΩΝ",
        ),
    ]
    municipality: Annotated[
        str,
        Field(
            description="The municipality where the election took place.",
            example="ΚΙΣΣΑΜΟΥ",
        ),
    ]
    voters_female: Annotated[
        int, Field(description="The number of female voters.", example=6546)
    ]
    voters_male: Annotated[
        int, Field(description="The number of male voters.", example=6609)
    ]
    year: Annotated[
        int, Field(description="The year when the election took place.", example=2014)
    ]


class ElectionVoterAgeDistributionData(BaseModel):
    age_group: Annotated[
        str, Field(description="The age group of the voters.", example="71+")
    ]
    count: Annotated[
        int, Field(description="The number of voters in the age group.", example=30606)
    ]
    election_type: Annotated[
        str,
        Field(description="The type of the election.", example="τοπικής αυτοδιοίκηςη"),
    ]
    electoral_district: Annotated[
        str,
        Field(
            description="The electoral district where the election took place.",
            example="ΧΑΝΙΩΝ",
        ),
    ]
    year: Annotated[
        int, Field(description="The year when the election took place.", example=2014)
    ]


class SailingTrafficData(BaseModel):
    arrivalport: Annotated[
        str, Field(description="Code of the arrival port.", example="905")
    ]
    arrivalportname: Annotated[
        str,
        Field(description="Name of the arrival port.", example="ΧΡΥΣΟΜΗΛΙΑ (ΦΟΥΡΝΟΙ)"),
    ]
    date: Annotated[
        date, Field(description="Date of the sailing record.", example="2020-08-13")
    ]
    departureport: Annotated[
        str, Field(description="Code of the departure port.", example="KAR")
    ]
    departureportname: Annotated[
        str, Field(description="Name of the departure port.", example="Καρλόβασι Σάμου")
    ]
    passengercount: Annotated[int, Field(description="Count of passengers.", example=4)]
    routecode: Annotated[
        str, Field(description="Code of the route.", example="KAR905THMFOU")
    ]
    routecodenames: Annotated[
        str,
        Field(
            description="Names of the ports in the route.",
            example="Καρλόβασι Σάμου-ΧΡΥΣΟΜΗΛΙΑ (ΦΟΥΡΝΟΙ)-Θύμαινα-Φούρνοι Κορσεών",
        ),
    ]
    vehiclecount: Annotated[int, Field(description="Count of vehicles.", example=1)]


class RidershipData(BaseModel):
    date_hour: Annotated[
        datetime,
        Field(
            description="The date and hour of the record.",
            example="2020-10-10T19:00:00Z",
        ),
    ]
    dv_agency: Annotated[str, Field(description="Agency code.", example="001")]
    dv_platenum_station: Annotated[
        str,
        Field(description="Plate number or station identifier.", example="YMI 1064"),
    ]
    dv_route: Annotated[
        Optional[str],
        Field(
            description="Description of the route.",
            example="Β5 - ΣΤ. ΛΑΡΙΣΗΣ - Λ. ΑΛΕΞΑΝΔΡΑΣ - ΑΓ. ΠΑΡΑΣΚΕΥΗ :: ΑΓ. ΠΑΡΑΣΚΕΥΗ - Λ. ΑΛΕΞΑΝΔΡΑΣ - ΣΤ. ΛΑΡΙΣΗΣ",
        ),
    ] = None
    dv_validations: Annotated[
        int, Field(description="Number of validations for the time period.", example=26)
    ]
    load_dt: Annotated[
        datetime,
        Field(
            description="The date and time when the data was loaded.",
            example="2020-10-11T05:56:22Z",
        ),
    ]
    routes_per_hour: Annotated[
        Optional[int], Field(description="Number of routes per hour.", example=1)
    ] = None


class RoadTrafficData(BaseModel):
    appprocesstime: Annotated[
        datetime,
        Field(
            description="The time when the data was processed.",
            example="2020-11-05T00:00:00Z",
        ),
    ]
    average_speed: Annotated[
        float,
        Field(description="Average speed of vehicles.", example=71.37837837837836),
    ]
    countedcars: Annotated[
        int, Field(description="Number of cars counted.", example=1480)
    ]
    deviceid: Annotated[
        str,
        Field(
            description="Identifier for the traffic monitoring device.",
            example="MS1001",
        ),
    ]
    road_info: Annotated[
        str,
        Field(
            description="Additional information about the road segment.",
            example="120 ΜΕΤΡΑ ΠΡΙΝ ΤΟΝ ΚΟΜΒΟ ΜΕ ΚΑΤΕΥΘΥΝΣΗ ΠΡΟΣ ΑΘΗΝΑ",
        ),
    ]
    road_name: Annotated[
        str, Field(description="Name of the road.", example="Λ. ΜΑΡΑΘΩΝΟΣ")
    ]


class KTMHareaData(BaseModel):
    area: Annotated[
        float, Field(description="The area in square meters.", example=2939654.941)
    ]
    date: Annotated[
        date, Field(description="The date of the data record.", example="2023-03-01")
    ]
    ota_full_name: Annotated[
        str, Field(description="The full name of the OTA.", example="ΑΤΤΙΚΗΣ ΑΧΑΡΝΩΝ")
    ]
    ota_id: Annotated[int, Field(description="The ID of the OTA.", example=5028)]
    ota_name: Annotated[
        str, Field(description="The name of the OTA.", example="ΑΧΑΡΝΩΝ")
    ]
    ota_name_en: Annotated[
        str, Field(description="The English name of the OTA.", example="axarnon")
    ]


class KTMConfiscationData(BaseModel):
    confiscations: Annotated[
        int, Field(description="The number of confiscations.", example=327)
    ]
    date: Annotated[
        date, Field(description="The date of the data record.", example="2023-03-02")
    ]
    ota_full_name: Annotated[
        str,
        Field(
            description="The full name of the OTA.",
            example="ΑΙΤΩΛΙΑΣ ΚΑΙ ΑΚΑΡΝΑΝΙΑΣ ΑΓΓΕΛΟΚΑΣΤΡΟΥ",
        ),
    ]
    ota_id: Annotated[int, Field(description="The ID of the OTA.", example=1003)]
    ota_name: Annotated[
        str, Field(description="The name of the OTA.", example="ΑΓΓΕΛΟΚΑΣΤΡΟΥ")
    ]
    ota_name_en: Annotated[
        str, Field(description="The English name of the OTA.", example="agelokastro")
    ]


class KTMLienData(BaseModel):
    date: Annotated[
        date, Field(description="The date of the data record.", example="2023-03-23")
    ]
    liens: Annotated[int, Field(description="The number of liens.", example=364)]
    ota_full_name: Annotated[
        str,
        Field(
            description="The full name of the OTA.",
            example="ΑΙΤΩΛΙΑΣ ΚΑΙ ΑΚΑΡΝΑΝΙΑΣ ΑΓΓΕΛΟΚΑΣΤΡΟΥ",
        ),
    ]
    ota_id: Annotated[int, Field(description="The ID of the OTA.", example=1003)]
    ota_name: Annotated[
        str, Field(description="The name of the OTA.", example="ΑΓΓΕΛΟΚΑΣΤΡΟΥ")
    ]
    ota_name_en: Annotated[
        str, Field(description="The English name of the OTA.", example="agelokastro")
    ]


class KTMTransactionData(BaseModel):
    date: Annotated[
        date, Field(description="The date of the data record.", example="2023-04-28")
    ]
    ota_full_name: Annotated[
        str,
        Field(description="The full name of the OTA.", example="ΚΑΒΑΛΑΣ ΑΚΡΟΠΟΤΑΜΟΥ"),
    ]
    ota_id: Annotated[int, Field(description="The ID of the OTA.", example=21005)]
    ota_name: Annotated[
        str, Field(description="The name of the OTA.", example="ΑΚΡΟΠΟΤΑΜΟΥ")
    ]
    ota_name_en: Annotated[
        str, Field(description="The English name of the OTA.", example="akropotamo")
    ]
    transactions: Annotated[
        int, Field(description="The number of transactions.", example=10)
    ]


class KTMOwnersData(BaseModel):
    date: Annotated[
        date, Field(description="The date of the data record.", example="2023-03-01")
    ]
    ota_full_name: Annotated[
        str,
        Field(
            description="The full name of the OTA.",
            example="ΑΙΤΩΛΙΑΣ ΚΑΙ ΑΚΑΡΝΑΝΙΑΣ ΑΓΓΕΛΟΚΑΣΤΡΟΥ",
        ),
    ]
    ota_id: Annotated[int, Field(description="The ID of the OTA.", example=1003)]
    ota_name: Annotated[
        str, Field(description="The name of the OTA.", example="ΑΓΓΕΛΟΚΑΣΤΡΟΥ")
    ]
    ota_name_en: Annotated[
        str, Field(description="The English name of the OTA.", example="agelokastro")
    ]
    owners: Annotated[
        int, Field(description="The number of property owners.", example=1627)
    ]


class KTMHPlotsData(BaseModel):
    date: Annotated[
        date, Field(description="The date of the data record.", example="2023-03-02")
    ]
    ota_full_name: Annotated[
        str, Field(description="The full name of the OTA.", example="ΑΤΤΙΚΗΣ ΑΧΑΡΝΩΝ")
    ]
    ota_id: Annotated[int, Field(description="The ID of the OTA.", example=5028)]
    ota_name: Annotated[
        str, Field(description="The name of the OTA.", example="ΑΧΑΡΝΩΝ")
    ]
    ota_name_en: Annotated[
        str, Field(description="The English name of the OTA.", example="axarnon")
    ]
    plots: Annotated[
        int, Field(description="The number of housing plots.", example=46920)
    ]


class KTMStatusData(BaseModel):
    date: Annotated[
        date, Field(description="The date of the data record.", example="2023-03-01")
    ]
    ota_full_name: Annotated[
        str, Field(description="The full name of the OTA.", example="ΑΡΚΑΔΙΑΣ ΣΤΕΝΟΥ")
    ]
    ota_id: Annotated[int, Field(description="The ID of the OTA.", example=3218)]
    ota_name: Annotated[
        str, Field(description="The name of the OTA.", example="ΣΤΕΝΟΥ")
    ]
    ota_name_en: Annotated[
        str, Field(description="The English name of the OTA.", example="steno")
    ]
    status: Annotated[
        str, Field(description="The status of the OTA.", example="ΑΝΑΡΤΗΣΗ")
    ]


class ADMIESCADAData(BaseModel):
    date: Annotated[
        datetime,
        Field(
            description="The date and time of the data record in ISO 8601 format.",
            example="2023-03-01T00:00:00Z",
        ),
    ]
    energy_mwh: Annotated[
        int, Field(description="The amount of energy in megawatt-hours.", example=886)
    ]


class ADMIEDailyEnergyBalanceData(BaseModel):
    date: Annotated[
        datetime,
        Field(
            description="The date of the data record in ISO 8601 format.",
            example="2023-03-01T00:00:00Z",
        ),
    ]
    energy_mwh: Annotated[
        int, Field(description="The amount of energy in megawatt-hours.", example=15284)
    ]
    fuel: Annotated[str, Field(description="Type of fuel used.", example="ΛΙΓΝΙΤΗΣ")]
    percentage: Annotated[
        float,
        Field(
            description="The percentage contribution of the fuel to the total energy.",
            example=0.1316065923846591,
        ),
    ]


class CadastreNaturaPlotData(BaseModel):
    area: Annotated[
        float,
        Field(
            description="The area of the plot in square meters.",
            example=1894778.3375080035,
        ),
    ]
    date: Annotated[
        datetime,
        Field(
            description="The date of the data record in ISO 8601 format.",
            example="2021-03-02T00:00:00Z",
        ),
    ]
    local_authority_id: Annotated[
        str, Field(description="The ID of the local authority.", example="1003")
    ]
    plot_number: Annotated[int, Field(description="The plot number.", example=390)]


class CadastrePlotData(BaseModel):
    avg_area: Annotated[
        float,
        Field(
            description="The average area of the plots in square meters.",
            example=7061.933960425182,
        ),
    ]
    date: Annotated[
        datetime,
        Field(
            description="The date of the data record in ISO 8601 format.",
            example="2021-03-02T00:00:00Z",
        ),
    ]
    local_authority_id: Annotated[
        str, Field(description="The ID of the local authority.", example="1003")
    ]
    plot_number: Annotated[int, Field(description="The number of plots.", example=4523)]


class KtmPlotData(BaseModel):
    date: Annotated[
        datetime,
        Field(
            description="The date of the data record in ISO 8601 format.",
            example="2020-12-30",
        ),
    ]
    ota_id: Annotated[int, Field(description="The ID of the OTA.", example=5133)]
    ota_name: Annotated[
        str,
        Field(description="The name of the OTA in Greek.", example="ΣΠΑΤΩΝ-ΛΟΥΤΣΑΣ"),
    ]
    ota_name_en: Annotated[
        str,
        Field(description="The name of the OTA in English.", example="spaton-lotsas"),
    ]
    plots: Annotated[int, Field(description="The number of plots.", example=39161)]


class ElectricityConsumptionData(BaseModel):
    area: Annotated[
        str,
        Field(description="The geographical area of the data record.", example="ΚΡΗΤΗ"),
    ]
    date: Annotated[
        datetime,
        Field(
            description="The date and time of the data record in ISO 8601 format.",
            example="2020-08-09T00:00:00Z",
        ),
    ]
    energy_mwh: Annotated[
        float,
        Field(
            description="The amount of electricity consumed in megawatt-hours.",
            example=9539.66,
        ),
    ]


class UrbanIncidentData(BaseModel):
    accident_type: Annotated[
        Optional[str], Field(description="Type of the accident, if applicable.")
    ] = None
    burns: Annotated[
        Optional[int], Field(description="Number of people who suffered burns.")
    ] = None
    damages: Annotated[
        Optional[int], Field(description="The extent of damages caused.")
    ] = None
    deaths: Annotated[
        Optional[int], Field(description="Number of deaths, if any.")
    ] = None
    end_time: Annotated[datetime, Field(description="The end time of the incident.")]
    firefighters: Annotated[int, Field(description="Number of firefighters involved.")]
    fire_station: Annotated[
        str, Field(description="Name of the fire station involved.")
    ]
    fire_trucks: Annotated[int, Field(description="Number of fire trucks used.")]
    fire_vessels: Annotated[
        Optional[int], Field(description="Number of fire vessels used, if any.")
    ] = None
    incident: Annotated[str, Field(description="Brief description of the incident.")]
    incident_detail: Annotated[
        Optional[str], Field(description="Detailed description of the incident.")
    ] = None
    injuries: Annotated[
        Optional[int], Field(description="Number of injuries reported.")
    ] = None
    location_description: Annotated[
        str, Field(description="Description of the incident location.")
    ]
    municipality: Annotated[
        Optional[str],
        Field(description="Name of the municipality where the incident occurred."),
    ] = None
    people_involved: Annotated[
        Optional[int], Field(description="Number of people involved in the incident.")
    ] = None
    prefecture: Annotated[
        Optional[str],
        Field(description="Name of the prefecture where the incident occurred."),
    ] = None
    start_time: Annotated[
        Optional[datetime], Field(description="The start time of the incident.")
    ] = None
    village: Annotated[
        Optional[str],
        Field(description="Name of the village where the incident occurred."),
    ] = None


class ForestFireData(BaseModel):
    address: Annotated[
        Optional[str], Field(description="Address or location of the forest fire.")
    ] = None
    agricultural_area_burned: Annotated[
        Optional[float],
        Field(description="Area of agricultural land burned (in hectares)."),
    ] = None
    airplanes_cl215: Annotated[
        Optional[int], Field(description="Number of CL-215 airplanes used.")
    ] = None
    airplanes_cl415: Annotated[
        Optional[int], Field(description="Number of CL-415 airplanes used.")
    ] = None
    airplanes_gru: Annotated[
        Optional[int], Field(description="Number of GRU airplanes used.")
    ] = None
    airplanes_pzl: Annotated[
        Optional[int], Field(description="Number of PZL airplanes used.")
    ] = None
    army: Annotated[
        Optional[int], Field(description="Number of army personnel involved.")
    ] = None
    crop_residue_area_burned: Annotated[
        Optional[float], Field(description="Area of crop residue burned (in hectares).")
    ] = None
    dumping_ground_area_burned: Annotated[
        Optional[float],
        Field(description="Area of dumping ground burned (in hectares)."),
    ] = None
    end_time: Annotated[
        Optional[datetime], Field(description="The end time of the forest fire")
    ] = None


class VaccinationData(BaseModel):
    area: Annotated[
        str, Field(description="Name of the area where vaccinations are reported.")
    ]
    areaid: Annotated[int, Field(description="Unique identifier for the area.")]
    dailydose1: Annotated[
        int,
        Field(description="Number of first doses administered on the reported day."),
    ]
    dailydose2: Annotated[
        int,
        Field(description="Number of second doses administered on the reported day."),
    ]
    dailydose3: Annotated[
        Optional[int],
        Field(
            description="Number of third doses administered on the reported day, if applicable."
        ),
    ] = None
    daydiff: Annotated[
        Optional[int],
        Field(description="Difference in total vaccinations from the previous day."),
    ] = None
    daytotal: Annotated[
        int,
        Field(
            description="Total number of vaccinations administered on the reported day."
        ),
    ]
    referencedate: Annotated[
        datetime,
        Field(description="The reference date for the data in ISO 8601 format."),
    ]
    totaldistinctpersons: Annotated[
        int,
        Field(
            description="Total number of distinct individuals who have received at least one dose."
        ),
    ]
    totaldose1: Annotated[
        int,
        Field(
            description="Total number of first doses administered up to the reference date."
        ),
    ]
    totaldose2: Annotated[
        int,
        Field(
            description="Total number of second doses administered up to the reference date."
        ),
    ]
    totaldose3: Annotated[
        Optional[int],
        Field(
            description="Total number of third doses administered up to the reference date, if applicable."
        ),
    ] = None
    totalvaccinations: Annotated[
        int,
        Field(
            description="Total number of vaccinations administered up to the reference date."
        ),
    ]


class WeeklyVaccinationData(BaseModel):
    area: Annotated[
        str, Field(description="Name of the area where vaccinations are reported.")
    ]
    areaid: Annotated[int, Field(description="Unique identifier for the area.")]
    totaldistinctpersons: Annotated[
        int,
        Field(
            description="Total number of distinct individuals who have received at least one dose up to the week reference date."
        ),
    ]
    totaldose1: Annotated[
        int,
        Field(
            description="Total number of first doses administered up to the week reference date."
        ),
    ]
    totaldose2: Annotated[
        int,
        Field(
            description="Total number of second doses administered up to the week reference date."
        ),
    ]
    totaldose3: Annotated[
        Optional[int],
        Field(
            description="Total number of third doses administered up to the week reference date, if applicable."
        ),
    ] = None
    totalvaccinations: Annotated[
        int,
        Field(
            description="Total number of vaccinations administered up to the week reference date."
        ),
    ]
    weekdiff: Annotated[
        int,
        Field(description="Difference in total vaccinations from the previous week."),
    ]
    weeklydose1: Annotated[
        int, Field(description="Number of first doses administered during the week.")
    ]
    weeklydose2: Annotated[
        int, Field(description="Number of second doses administered during the week.")
    ]
    weeklydose3: Annotated[
        Optional[int],
        Field(
            description="Number of third doses administered during the week, if applicable."
        ),
    ] = None
    weekreferencedate: Annotated[
        datetime,
        Field(description="The reference date for the weekly data in ISO 8601 format."),
    ]
    weektotal: Annotated[
        int,
        Field(description="Total number of vaccinations administered during the week."),
    ]


class EfetInspectionsData(BaseModel):
    inspections: Annotated[
        Optional[int],
        Field(description="Number of inspections conducted in the given year."),
    ] = None
    penalties: Annotated[
        float, Field(description="Total amount of penalties imposed in Euros.")
    ]
    violating_organizations: Annotated[
        int,
        Field(description="Number of organizations found to be violating regulations."),
    ]
    violations: Annotated[
        Optional[int], Field(description="Number of violations recorded.")
    ] = None
    year: Annotated[int, Field(description="Year in which the data was recorded.")]


class PharmacistsData(BaseModel):
    active: Annotated[int, Field(description="Number of active pharmacists.")]
    entrants: Annotated[
        Optional[int], Field(description="Number of new entrants to the profession.")
    ] = None
    exits: Annotated[
        int, Field(description="Number of pharmacists who exited the profession.")
    ]
    quarter: Annotated[str, Field(description="Quarter of the year for the data.")]
    year: Annotated[int, Field(description="Year of the data record.")]


class PharmacyData(BaseModel):
    active: Annotated[
        int, Field(description="Number of active pharmacies.", example=10223)
    ]
    entrants: Annotated[
        Optional[int],
        Field(
            description="Number of new entrants in the pharmacy sector.", example=156
        ),
    ] = None
    exits: Annotated[
        Optional[int],
        Field(description="Number of exits from the pharmacy sector.", example=51),
    ] = None
    quarter: Annotated[
        str, Field(description="Fiscal quarter of the data record.", example="Q1")
    ]
    year: Annotated[int, Field(description="Year of the data record.", example=2012)]


class DentistData(BaseModel):
    active: Annotated[
        int, Field(description="Number of active dentists.", example=15818)
    ]
    entrants: Annotated[
        Optional[int],
        Field(description="Number of new entrants in the dental sector.", example=81),
    ] = None
    exits: Annotated[
        Optional[int],
        Field(description="Number of exits from the dental sector.", example=6),
    ] = None
    quarter: Annotated[
        str, Field(description="Fiscal quarter of the data record.", example="Q1")
    ]
    year: Annotated[int, Field(description="Year of the data record.", example=2012)]


class DoctorData(BaseModel):
    active: Annotated[
        int, Field(description="Number of active doctors.", example=76438)
    ]
    entrants: Annotated[
        Optional[int],
        Field(description="Number of new entrants in the medical sector.", example=317),
    ] = None
    exits: Annotated[
        Optional[int],
        Field(description="Number of exits from the medical sector.", example=7),
    ] = None
    quarter: Annotated[
        str, Field(description="Fiscal quarter of the data record.", example="Q1")
    ]
    year: Annotated[int, Field(description="Year of the data record.", example=2012)]


class TourismAgenciesData(BaseModel):
    active: Annotated[
        int, Field(description="Number of active tourism agencies.", example=4105)
    ]
    entrants: Annotated[
        Optional[int],
        Field(description="Number of new entrants in the tourism sector.", example=300),
    ] = None
    exits: Annotated[
        Optional[int],
        Field(description="Number of exits from the tourism sector.", example=355),
    ] = None
    quarter: Annotated[
        str, Field(description="Fiscal quarter of the data record.", example="Q4")
    ]
    year: Annotated[int, Field(description="Year of the data record.", example=2011)]


class RealtorsData(BaseModel):
    active: Annotated[
        int, Field(description="Number of active realtors.", example=5050)
    ]
    entrants: Annotated[
        Optional[int],
        Field(
            description="Number of new entrants in the real estate sector.", example=212
        ),
    ] = None
    exits: Annotated[
        Optional[int],
        Field(description="Number of exits from the real estate sector.", example=193),
    ] = None
    quarter: Annotated[
        str, Field(description="Fiscal quarter of the data record.", example="Q4")
    ]
    year: Annotated[int, Field(description="Year of the data record.", example=2011)]


class EnvironmentalInspectorsData(BaseModel):
    active: Annotated[
        int,
        Field(description="Number of active environmental inspectors.", example=5364),
    ]
    entrants: Annotated[
        Optional[int],
        Field(
            description="Number of new entrants in the environmental inspection sector.",
            example=4953,
        ),
    ] = None
    exits: Annotated[
        Optional[int],
        Field(
            description="Number of exits from the environmental inspection sector.",
            example=2,
        ),
    ] = None
    quarter: Annotated[
        str, Field(description="Fiscal quarter of the data record.", example="Q4")
    ]
    year: Annotated[int, Field(description="Year of the data record.", example=2011)]


class ELTEAuditorsData(BaseModel):
    active: Annotated[int, Field(description="Number of active auditors.", example=974)]
    entrants: Annotated[
        Optional[int],
        Field(description="Number of new entrants in the auditing sector.", example=66),
    ] = None
    exits: Annotated[
        Optional[int],
        Field(description="Number of exits from the auditing sector.", example=0),
    ] = None
    firms: Annotated[int, Field(description="Number of auditing firms.", example=39)]
    quarter: Annotated[
        str, Field(description="Fiscal quarter of the data record.", example="Q1")
    ]
    year: Annotated[int, Field(description="Year of the data record.", example=2012)]


class OEEAccountantsData(BaseModel):
    active: Annotated[
        int, Field(description="Number of active accountants.", example=66072)
    ]
    entrants: Annotated[
        Optional[int],
        Field(
            description="Number of new entrants in the accounting sector.", example=2386
        ),
    ] = None
    exits: Annotated[
        Optional[int],
        Field(description="Number of exits from the accounting sector.", example=246),
    ] = None
    quarter: Annotated[
        str, Field(description="Fiscal quarter of the data record.", example="Q4")
    ]


class EEEPcasinoTicketsData(BaseModel):
    tickets: Annotated[
        int, Field(description="Number of casino tickets issued.", example=3307711)
    ]
    year: Annotated[int, Field(description="Year of the data record.", example=2009)]


class EETTTelecomIndicator(BaseModel):
    category: Annotated[
        str,
        Field(
            description="The category of the telecom indicator.",
            example="Βroadband_Penetration",
        ),
    ]
    indicator: Annotated[
        str,
        Field(
            description="The specific indicator within the category.", example="Ελλάδα"
        ),
    ]
    value: Annotated[
        float,
        Field(description="The value of the indicator.", example=0.3523131307067245),
    ]
    year: Annotated[
        int, Field(description="The year of the data record.", example=2017)
    ]


class InternetTrafficData(BaseModel):
    avg_in: Annotated[int, Field(description="Average inbound traffic.")]
    avg_out: Annotated[int, Field(description="Average outbound traffic.")]
    date: Annotated[datetime, Field(description="The date and time of the record.")]
    max_in: Annotated[int, Field(description="Maximum inbound traffic.")]
    max_out: Annotated[int, Field(description="Maximum outbound traffic.")]
