from __future__ import annotations
import json
from datetime import datetime
from dataclasses import dataclass, field
from tubeulator.utils.string_conv import to_camel_case
from pydantic import AliasGenerator, BaseModel, ConfigDict, PrivateAttr
from ..utils.paths import DtoEnum

class Mode(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.Mode
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    IsTflService: bool = None
    IsFarePaying: bool = None
    IsScheduledService: bool = None
    ModeName: str = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl')


ModeModel = Mode


class PathAttribute(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.PathAttribute
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    Name: str = None
    Value: str = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-2')


PathAttributeModel = PathAttribute


class InstructionStep(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.InstructionStep
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    Description: str = None
    TurnDirection: str = None
    StreetName: str = None
    Distance: int = None
    CumulativeDistance: int = None
    SkyDirection: int = None
    SkyDirectionDescription: str = None
    CumulativeTravelTime: int = None
    Latitude: float = None
    Longitude: float = None
    PathAttribute: PathAttributeModel = None
    DescriptionHeading: str = None
    TrackType: str = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-3')


InstructionStepModel = InstructionStep


class Instruction(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.Instruction
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    Summary: str = None
    Detailed: str = None
    Steps: list["InstructionStepModel"]
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-4')


InstructionModel = Instruction


class Obstacle(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.JourneyPlanner.Obstacle
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    Type: str = None
    Incline: str = None
    StopId: int = None
    Position: str = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-5')


ObstacleModel = Obstacle


class Point(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.Point
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    Lat: float = None
    Lon: float = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-6')


PointModel = Point


class PassengerFlow(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.PassengerFlow
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    TimeSlice: str = None
    Value: int = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-7')


PassengerFlowModel = PassengerFlow


class TrainLoading(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.TrainLoading
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    Line: str = None
    LineDirection: str = None
    PlatformDirection: str = None
    Direction: str = None
    NaptanTo: str = None
    TimeSlice: str = None
    Value: int = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-8')


TrainLoadingModel = TrainLoading


class Crowding(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.Crowding
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    PassengerFlows: list["PassengerFlowModel"]
    TrainLoadings: list["TrainLoadingModel"]
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-9')


CrowdingModel = Crowding


class Identifier(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.Identifier
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    Id: str = None
    Name: str = None
    Uri: str = None
    FullName: str = None
    Type: str = None
    Crowding: CrowdingModel = None
    RouteType: str = None
    Status: str = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-10')


IdentifierModel = Identifier


class JpElevation(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Common.JourneyPlanner.JpElevation
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    Distance: int = None
    StartLat: float = None
    StartLon: float = None
    EndLat: float = None
    EndLon: float = None
    HeightFromPreviousPoint: int = None
    Gradient: float = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-11')


JpElevationModel = JpElevation


class Path(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.JourneyPlanner.Path
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    LineString: str = None
    StopPoints: list["IdentifierModel"]
    Elevation: list["JpElevationModel"]
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-12')


PathModel = Path


class RouteOption(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.JourneyPlanner.RouteOption
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    Id: str = None
    Name: str = None
    Directions: list[str]
    LineIdentifier: IdentifierModel = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-13')


RouteOptionModel = RouteOption


class LineGroup(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.LineGroup
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    NaptanIdReference: str = None
    StationAtcoCode: str = None
    LineIdentifier: list[str]
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-14')


LineGroupModel = LineGroup


class LineModeGroup(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.LineModeGroup
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    ModeName: str = None
    LineIdentifier: list[str]
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-15')


LineModeGroupModel = LineModeGroup


class AdditionalProperties(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.AdditionalProperties
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    Category: str = None
    Key: str = None
    SourceSystemKey: str = None
    Value: str = None
    Modified: datetime = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-16')


AdditionalPropertiesModel = AdditionalProperties


class Place(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.Place
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    Id: str = None
    Url: str = None
    CommonName: str = None
    Distance: float = None
    PlaceType: str = None
    AdditionalProperties: list["AdditionalPropertiesModel"]
    Children: list["PlaceModel"]
    ChildrenUrls: list[str]
    Lat: float = None
    Lon: float = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-17')


PlaceModel = Place


class StopPoint(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.StopPoint
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    NaptanId: str = None
    PlatformName: str = None
    Indicator: str = None
    StopLetter: str = None
    Modes: list[str]
    IcsCode: str = None
    SmsCode: str = None
    StopType: str = None
    StationNaptan: str = None
    AccessibilitySummary: str = None
    HubNaptanCode: str = None
    Lines: list["IdentifierModel"]
    LineGroup: list["LineGroupModel"]
    LineModeGroups: list["LineModeGroupModel"]
    FullName: str = None
    NaptanMode: str = None
    Status: bool = None
    Id: str = None
    Url: str = None
    CommonName: str = None
    Distance: float = None
    PlaceType: str = None
    AdditionalProperties: list["AdditionalPropertiesModel"]
    Children: list["PlaceModel"]
    ChildrenUrls: list[str]
    Lat: float = None
    Lon: float = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-18')


StopPointModel = StopPoint


class RouteSectionNaptanEntrySequence(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.RouteSectionNaptanEntrySequence
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    Ordinal: int = None
    StopPoint: StopPointModel = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-19')


RouteSectionNaptanEntrySequenceModel = RouteSectionNaptanEntrySequence


class RouteSection(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.RouteSection
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    Id: str = None
    LineId: str = None
    RouteCode: str = None
    Name: str = None
    LineString: str = None
    Direction: str = None
    OriginationName: str = None
    DestinationName: str = None
    ValidTo: datetime = None
    ValidFrom: datetime = None
    RouteSectionNaptanEntrySequence: list["RouteSectionNaptanEntrySequenceModel"]
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-20')


RouteSectionModel = RouteSection


class Disruption(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.Disruption
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    Category: str = None
    Type: str = None
    CategoryDescription: str = None
    Description: str = None
    Summary: str = None
    AdditionalInfo: str = None
    Created: datetime = None
    LastUpdate: datetime = None
    AffectedRoutes: list["RouteSectionModel"]
    AffectedStops: list["StopPointModel"]
    ClosureText: str = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-21')


DisruptionModel = Disruption


class PlannedWork(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.JourneyPlanner.PlannedWork
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    Id: str = None
    Description: str = None
    CreatedDateTime: datetime = None
    LastUpdateDateTime: datetime = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-22')


PlannedWorkModel = PlannedWork


class Leg(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.JourneyPlanner.Leg
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    Duration: int = None
    Speed: str = None
    Instruction: InstructionModel = None
    Obstacles: list["ObstacleModel"]
    DepartureTime: datetime = None
    ArrivalTime: datetime = None
    DeparturePoint: PointModel = None
    ArrivalPoint: PointModel = None
    Path: PathModel = None
    RouteOptions: list["RouteOptionModel"]
    Mode: IdentifierModel = None
    Disruptions: list["DisruptionModel"]
    PlannedWorks: list["PlannedWorkModel"]
    Distance: float = None
    IsDisrupted: bool = None
    HasFixedLocations: bool = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-23')


LegModel = Leg


class FareTapDetails(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.JourneyPlanner.FareTapDetails
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    ModeType: str = None
    ValidationType: str = None
    HostDeviceType: str = None
    BusRouteId: str = None
    NationalLocationCode: int = None
    TapTimestamp: datetime = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-24')


FareTapDetailsModel = FareTapDetails


class FareTap(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.JourneyPlanner.FareTap
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    AtcoCode: str = None
    TapDetails: FareTapDetailsModel = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-25')


FareTapModel = FareTap


class Fare(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.JourneyPlanner.Fare
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    LowZone: int = None
    HighZone: int = None
    Cost: int = None
    ChargeProfileName: str = None
    IsHopperFare: bool = None
    ChargeLevel: str = None
    Peak: int = None
    OffPeak: int = None
    Taps: list["FareTapModel"]
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-26')


FareModel = Fare


class FareCaveat(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.JourneyPlanner.FareCaveat
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    Text: str = None
    Type: str = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-27')


FareCaveatModel = FareCaveat


class JourneyFare(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.JourneyPlanner.JourneyFare
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    TotalCost: int = None
    Fares: list["FareModel"]
    Caveats: list["FareCaveatModel"]
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-28')


JourneyFareModel = JourneyFare


class Journey(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.JourneyPlanner.Journey
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    StartDateTime: datetime = None
    Duration: int = None
    ArrivalDateTime: datetime = None
    Legs: list["LegModel"]
    Fare: JourneyFareModel = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-29')


JourneyModel = Journey


class ValidityPeriod(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.ValidityPeriod
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    FromDate: datetime = None
    ToDate: datetime = None
    IsNow: bool = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-30')


ValidityPeriodModel = ValidityPeriod


class LineStatus(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.LineStatus
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    Id: int = None
    LineId: str = None
    StatusSeverity: int = None
    StatusSeverityDescription: str = None
    Reason: str = None
    Created: datetime = None
    Modified: datetime = None
    ValidityPeriods: list["ValidityPeriodModel"]
    Disruption: DisruptionModel = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-31')


LineStatusModel = LineStatus


class MatchedRoute(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.MatchedRoute
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    RouteCode: str = None
    Name: str = None
    Direction: str = None
    OriginationName: str = None
    DestinationName: str = None
    Originator: str = None
    Destination: str = None
    ServiceType: str = None
    ValidTo: datetime = None
    ValidFrom: datetime = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-32')


MatchedRouteModel = MatchedRoute


class LineServiceTypeInfo(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.LineServiceTypeInfo
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    Name: str = None
    Uri: str = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-33')


LineServiceTypeInfoModel = LineServiceTypeInfo


class Line(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.Line
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    Id: str = None
    Name: str = None
    ModeName: str = None
    Disruptions: list["DisruptionModel"]
    Created: datetime = None
    Modified: datetime = None
    LineStatuses: list["LineStatusModel"]
    RouteSections: list["MatchedRouteModel"]
    ServiceTypes: list["LineServiceTypeInfoModel"]
    Crowding: CrowdingModel = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-34')


LineModel = Line


class JourneyPlannerCycleHireDockingStationData(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.JourneyPlanner.JourneyPlannerCycleHireDockingStationData
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    OriginNumberOfBikes: int = None
    DestinationNumberOfBikes: int = None
    OriginNumberOfEmptySlots: int = None
    DestinationNumberOfEmptySlots: int = None
    OriginId: str = None
    DestinationId: str = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-35')


JourneyPlannerCycleHireDockingStationDataModel = JourneyPlannerCycleHireDockingStationData


class TimeAdjustment(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.JourneyPlanner.TimeAdjustment
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    Date: str = None
    Time: str = None
    TimeIs: str = None
    Uri: str = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-36')


TimeAdjustmentModel = TimeAdjustment


class TimeAdjustments(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.JourneyPlanner.TimeAdjustments
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    Earliest: TimeAdjustmentModel = None
    Earlier: TimeAdjustmentModel = None
    Later: TimeAdjustmentModel = None
    Latest: TimeAdjustmentModel = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-37')


TimeAdjustmentsModel = TimeAdjustments


class SearchCriteria(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.JourneyPlanner.SearchCriteria
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    DateTime: datetime = None
    DateTimeType: str = None
    TimeAdjustments: TimeAdjustmentsModel = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-38')


SearchCriteriaModel = SearchCriteria


class JourneyVector(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.JourneyPlanner.JourneyVector
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    From: str = None
    To: str = None
    Via: str = None
    Uri: str = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-39')


JourneyVectorModel = JourneyVector


class ItineraryResult(BaseModel):
    """
    Autogenerated from Journey::Tfl.Api.Presentation.Entities.JourneyPlanner.ItineraryResult
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    Journeys: list["JourneyModel"]
    Lines: list["LineModel"]
    CycleHireDockingStationData: JourneyPlannerCycleHireDockingStationDataModel = None
    StopMessages: list[str]
    RecommendedMaxAgeMinutes: int = None
    SearchCriteria: SearchCriteriaModel = None
    JourneyVector: JourneyVectorModel = None
    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Tfl-40')


ItineraryResultModel = ItineraryResult


class MetaModesGet200ApplicationJsonResponse(BaseModel):
    """
    Autogenerated from Journey::MetaModesGet200ApplicationJsonResponse
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='MetaModesGet200ApplicationJsonResponse')


MetaModesGet200ApplicationJsonResponseModel = MetaModesGet200ApplicationJsonResponse


class Get200ApplicationJsonResponse(BaseModel):
    """
    Autogenerated from Journey::Get200ApplicationJsonResponse
    """

    model_config = ConfigDict(
        alias_generator=AliasGenerator(validation_alias=to_camel_case),
    )

    _source_schema_name: str = PrivateAttr(default='Journey')
    _component_schema_name: str = PrivateAttr(default='Get200ApplicationJsonResponse')


Get200ApplicationJsonResponseModel = Get200ApplicationJsonResponse


class Deserialisers(DtoEnum):
    Tfl = Mode
    Tfl_2 = PathAttribute
    Tfl_3 = InstructionStep
    Tfl_4 = Instruction
    Tfl_5 = Obstacle
    Tfl_6 = Point
    Tfl_7 = PassengerFlow
    Tfl_8 = TrainLoading
    Tfl_9 = Crowding
    Tfl_10 = Identifier
    Tfl_11 = JpElevation
    Tfl_12 = Path
    Tfl_13 = RouteOption
    Tfl_14 = LineGroup
    Tfl_15 = LineModeGroup
    Tfl_16 = AdditionalProperties
    Tfl_17 = Place
    Tfl_18 = StopPoint
    Tfl_19 = RouteSectionNaptanEntrySequence
    Tfl_20 = RouteSection
    Tfl_21 = Disruption
    Tfl_22 = PlannedWork
    Tfl_23 = Leg
    Tfl_24 = FareTapDetails
    Tfl_25 = FareTap
    Tfl_26 = Fare
    Tfl_27 = FareCaveat
    Tfl_28 = JourneyFare
    Tfl_29 = Journey
    Tfl_30 = ValidityPeriod
    Tfl_31 = LineStatus
    Tfl_32 = MatchedRoute
    Tfl_33 = LineServiceTypeInfo
    Tfl_34 = Line
    Tfl_35 = JourneyPlannerCycleHireDockingStationData
    Tfl_36 = TimeAdjustment
    Tfl_37 = TimeAdjustments
    Tfl_38 = SearchCriteria
    Tfl_39 = JourneyVector
    Tfl_40 = ItineraryResult
    MetaModesGet200ApplicationJsonResponse = MetaModesGet200ApplicationJsonResponse
    Get200ApplicationJsonResponse = Get200ApplicationJsonResponse