diff --git a/src/fr24sdk/models/__init__.py b/src/fr24sdk/models/__init__.py index 9130935..cf0def1 100644 --- a/src/fr24sdk/models/__init__.py +++ b/src/fr24sdk/models/__init__.py @@ -3,6 +3,7 @@ # SPDX-License-Identifier: MIT """Exposes data models for the Flightradar24 SDK.""" +from .flight_category import FlightCategory from .airline import AirlineLight from .airport import AirportFull, AirportLight, Country, Timezone from .flight import ( @@ -27,6 +28,7 @@ __all__ = [ "AirlineLight", + "FlightCategory", "AirportFull", "AirportLight", "Country", diff --git a/src/fr24sdk/models/flight_category.py b/src/fr24sdk/models/flight_category.py new file mode 100644 index 0000000..0879d60 --- /dev/null +++ b/src/fr24sdk/models/flight_category.py @@ -0,0 +1,30 @@ +# SPDX-FileCopyrightText: Copyright Flightradar24 +# +# SPDX-License-Identifier: MIT +"""Flight category enumeration for the Flightradar24 SDK.""" + +from enum import Enum + + +class FlightCategory(str, Enum): + """Enumeration of FlightRadar24 flight categories. + + Maps character literals used by the FR24 API to identify different + types of aircraft and flight operations. + """ + + PASSENGER = "P" + CARGO = "C" + MILITARY_AND_GOVERNMENT = "M" + BUSINESS_JETS = "J" + GENERAL_AVIATION = "T" + HELICOPTERS = "H" + LIGHTER_THAN_AIR = "B" + GLIDERS = "G" + DRONES = "D" + GROUND_VEHICLES = "V" + OTHER = "O" + NON_CATEGORIZED = "N" + + def __str__(self) -> str: + return self.value diff --git a/src/fr24sdk/resources/historic/positions.py b/src/fr24sdk/resources/historic/positions.py index 36d4f66..c648590 100644 --- a/src/fr24sdk/resources/historic/positions.py +++ b/src/fr24sdk/resources/historic/positions.py @@ -23,6 +23,7 @@ Boundary, AltitudeRange, ) +from ...models.flight_category import FlightCategory from ...models.regex_patterns import ( FLIGHT_NUMBER_PATTERN, CALLSIGN_PATTERN, @@ -73,7 +74,7 @@ class _HistoricPositionsParams(BaseModel): list[Annotated[str, StringConstraints(pattern=SQUAWK_PATTERN)]] ] = Field(default=None, max_length=15) categories: Optional[ - list[Annotated[str, StringConstraints(pattern=SERVICE_TYPES_PATTERN)]] + list[Union[FlightCategory, Annotated[str, StringConstraints(pattern=SERVICE_TYPES_PATTERN)]]] ] = Field(default=None, max_length=15) data_sources: Optional[ list[Annotated[str, StringConstraints(pattern=DATA_SOURCE_PATTERN)]] @@ -136,7 +137,7 @@ def get_light( aircraft: Optional[str] = None, altitude_ranges: Optional[list[Union[AltitudeRange, str]]] = None, squawks: Optional[list[str]] = None, - categories: Optional[list[str]] = None, + categories: Optional[list[Union[FlightCategory, str]]] = None, data_sources: Optional[list[str]] = None, gspeed: Optional[Union[int, str]] = None, limit: Optional[int] = None, @@ -183,7 +184,7 @@ def get_full( aircraft: Optional[str] = None, altitude_ranges: Optional[list[Union[AltitudeRange, str]]] = None, squawks: Optional[list[str]] = None, - categories: Optional[list[str]] = None, + categories: Optional[list[Union[FlightCategory, str]]] = None, data_sources: Optional[list[str]] = None, gspeed: Optional[Union[int, str]] = None, limit: Optional[int] = None, @@ -230,7 +231,7 @@ def count( aircraft: Optional[str] = None, altitude_ranges: Optional[list[Union[AltitudeRange, str]]] = None, squawks: Optional[list[str]] = None, - categories: Optional[list[str]] = None, + categories: Optional[list[Union[FlightCategory, str]]] = None, data_sources: Optional[list[str]] = None, gspeed: Optional[Union[int, str]] = None, ) -> CountResponse: diff --git a/src/fr24sdk/resources/live/positions.py b/src/fr24sdk/resources/live/positions.py index 9588316..b29e061 100644 --- a/src/fr24sdk/resources/live/positions.py +++ b/src/fr24sdk/resources/live/positions.py @@ -17,6 +17,7 @@ FlightPositionsFullResponse, CountResponse, ) +from ...models.flight_category import FlightCategory from ...models.geographic import ( Boundary, AltitudeRange, @@ -67,7 +68,7 @@ class _LivePositionsParams(BaseModel): list[Annotated[str, StringConstraints(pattern=SQUAWK_PATTERN)]] ] = Field(default=None, max_length=15) categories: Optional[ - list[Annotated[str, StringConstraints(pattern=SERVICE_TYPES_PATTERN)]] + list[Union[FlightCategory, Annotated[str, StringConstraints(pattern=SERVICE_TYPES_PATTERN)]]] ] = Field(default=None, max_length=15) data_sources: Optional[ list[Annotated[str, StringConstraints(pattern=DATA_SOURCE_PATTERN)]] @@ -111,7 +112,7 @@ def get_light( aircraft: Optional[str] = None, altitude_ranges: Optional[list[Union[AltitudeRange, str]]] = None, squawks: Optional[list[str]] = None, - categories: Optional[list[str]] = None, + categories: Optional[list[Union[FlightCategory, str]]] = None, data_sources: Optional[list[str]] = None, airspaces: Optional[list[str]] = None, gspeed: Optional[Union[int, str]] = None, @@ -156,7 +157,7 @@ def get_full( aircraft: Optional[str] = None, altitude_ranges: Optional[list[Union[AltitudeRange, str]]] = None, squawks: Optional[list[str]] = None, - categories: Optional[list[str]] = None, + categories: Optional[list[Union[FlightCategory, str]]] = None, data_sources: Optional[list[str]] = None, airspaces: Optional[list[str]] = None, gspeed: Optional[Union[int, str]] = None, @@ -201,7 +202,7 @@ def count( aircraft: Optional[str] = None, altitude_ranges: Optional[list[Union[AltitudeRange, str]]] = None, squawks: Optional[list[str]] = None, - categories: Optional[list[str]] = None, + categories: Optional[list[Union[FlightCategory, str]]] = None, data_sources: Optional[list[str]] = None, gspeed: Optional[Union[int, str]] = None, ) -> CountResponse: