schiphol/models.py
2025-12-28 16:09:27 +01:00

184 lines
4.9 KiB
Python

from __future__ import annotations
from datetime import date, datetime
from enum import Enum
from pydantic import BaseModel, Field
class BaggageClaimType(BaseModel):
belts: list[str] | None = None
class RemarksType(BaseModel):
remarks: list[str] | None = None
class CodesharesType(BaseModel):
codeshares: list[str] | None = None
class PublicName(BaseModel):
dutch: str | None = None
english: str | None = None
class Destination(BaseModel):
city: str | None = None
country: str | None = None
iata: str | None = None
publicName: PublicName | None = None
class Airline(BaseModel):
iata: str | None = None
icao: str | None = None
nvls: int | None = None
publicName: str | None = None
class AirlineList(BaseModel):
airlines: list[Airline] | None = None
class AircraftType(BaseModel):
iataMain: str | None = None
iataSub: str | None = None
longDescription: str | None = None
shortDescription: str | None = None
class AircraftTypeList(BaseModel):
aircraftTypes: list[AircraftType] | None = None
class FlightDirection(Enum):
A = "A"
D = "D"
class RouteType(BaseModel):
destinations: list[str] | None = None
eu: str | None = Field(
None, description="S (Schengen), E (Europe) or N (non-Europe)"
)
visa: bool | None = Field(
None, description="Indicates if a visum is required for destination"
)
class AircraftTypeType(BaseModel):
iataMain: str | None = None
iataSub: str | None = None
class CheckinClassType(BaseModel):
code: str | None = None
description: str | None = None
class TransferPositionsType(BaseModel):
transferPositions: list[int] | None = None
class PublicFlightStateType(BaseModel):
flightStates: list[str] | None = None
class DestinationList(BaseModel):
destinations: list[Destination] | None = None
class DeskType(BaseModel):
checkinClass: CheckinClassType | None = None
position: int | None = None
class DesksType(BaseModel):
desks: list[DeskType] | None = None
class RowType(BaseModel):
position: str | None = None
desks: DesksType | None = None
class RowsType(BaseModel):
rows: list[RowType] | None = None
class CheckinAllocationType(BaseModel):
endTime: datetime | None = None
rows: RowsType | None = None
startTime: datetime | None = None
class CheckinAllocationsType(BaseModel):
checkinAllocations: list[CheckinAllocationType] | None = None
remarks: RemarksType | None = None
class Flight(BaseModel):
lastUpdatedAt: datetime | None = None
actualLandingTime: datetime | None = Field(
None, description="yyyy-MM-dd'T'HH:mm:ss.SSSZ"
)
actualOffBlockTime: datetime | None = Field(
None, description="yyyy-MM-dd'T'HH:mm:ss.SSSZ"
)
aircraftRegistration: str | None = None
aircraftType: AircraftTypeType | None = None
baggageClaim: BaggageClaimType | None = None
checkinAllocations: CheckinAllocationsType | None = None
codeshares: CodesharesType | None = None
estimatedLandingTime: datetime | None = Field(
None, description="yyyy-MM-dd'T'HH:mm:ss.SSSZ"
)
expectedTimeBoarding: datetime | None = Field(
None, description="yyyy-MM-dd'T'HH:mm:ss.SSSZ"
)
expectedTimeGateClosing: datetime | None = Field(
None, description="yyyy-MM-dd'T'HH:mm:ss.SSSZ"
)
expectedTimeGateOpen: datetime | None = Field(
None, description="yyyy-MM-dd'T'HH:mm:ss.SSSZ"
)
expectedTimeOnBelt: datetime | None = Field(
None, description="yyyy-MM-dd'T'HH:mm:ss.SSSZ"
)
expectedSecurityFilter: str | None = Field(
None, description="expected security filter"
)
flightDirection: FlightDirection | None = None
flightName: str | None = None
flightNumber: int | None = None
gate: str | None = None
pier: str | None = None
id: str | None = None
isOperationalFlight: bool | None = None
mainFlight: str | None = None
prefixIATA: str | None = None
prefixICAO: str | None = None
airlineCode: int | None = None
publicEstimatedOffBlockTime: datetime | None = Field(
None, description="yyyy-MM-dd'T'HH:mm:ss.SSSZ"
)
publicFlightState: PublicFlightStateType | None = None
route: RouteType | None = None
scheduleDateTime: datetime | None = Field(
None, description="yyyy-MM-dd'T'HH:mm:ss.SSSZ"
)
scheduleDate: date | None = Field(None, description="yyyy-MM-dd")
scheduleTime: str | None = Field(None, description="hh:mm:ss")
serviceType: str | None = Field(
None,
description="The service type category of the commercial flight. For example: J = Passenger Line, C=Passenger Charter, F = Freight Line and H = Freight Charter etc.",
)
terminal: int | None = None
transferPositions: TransferPositionsType | None = None
schemaVersion: str | None = None
class FlightList(BaseModel):
flights: list[Flight] | None = None