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 Line::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='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl')


ModeModel = Mode


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

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

    ModeName: str = None
    SeverityLevel: int = None
    Description: str = None
    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-2')


StatusSeverityModel = StatusSeverity


class PassengerFlow(BaseModel):
    """
    Autogenerated from Line::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='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-3')


PassengerFlowModel = PassengerFlow


class TrainLoading(BaseModel):
    """
    Autogenerated from Line::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='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-4')


TrainLoadingModel = TrainLoading


class Crowding(BaseModel):
    """
    Autogenerated from Line::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='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-5')


CrowdingModel = Crowding


class Identifier(BaseModel):
    """
    Autogenerated from Line::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='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-6')


IdentifierModel = Identifier


class LineGroup(BaseModel):
    """
    Autogenerated from Line::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='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-7')


LineGroupModel = LineGroup


class LineModeGroup(BaseModel):
    """
    Autogenerated from Line::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='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-8')


LineModeGroupModel = LineModeGroup


class AdditionalProperties(BaseModel):
    """
    Autogenerated from Line::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='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-9')


AdditionalPropertiesModel = AdditionalProperties


class Place(BaseModel):
    """
    Autogenerated from Line::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='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-10')


PlaceModel = Place


class StopPoint(BaseModel):
    """
    Autogenerated from Line::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='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-11')


StopPointModel = StopPoint


class RouteSectionNaptanEntrySequence(BaseModel):
    """
    Autogenerated from Line::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='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-12')


RouteSectionNaptanEntrySequenceModel = RouteSectionNaptanEntrySequence


class RouteSection(BaseModel):
    """
    Autogenerated from Line::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='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-13')


RouteSectionModel = RouteSection


class Disruption(BaseModel):
    """
    Autogenerated from Line::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='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-14')


DisruptionModel = Disruption


class ValidityPeriod(BaseModel):
    """
    Autogenerated from Line::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='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-15')


ValidityPeriodModel = ValidityPeriod


class LineStatus(BaseModel):
    """
    Autogenerated from Line::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='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-16')


LineStatusModel = LineStatus


class MatchedRoute(BaseModel):
    """
    Autogenerated from Line::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='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-17')


MatchedRouteModel = MatchedRoute


class LineServiceTypeInfo(BaseModel):
    """
    Autogenerated from Line::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='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-18')


LineServiceTypeInfoModel = LineServiceTypeInfo


class Line(BaseModel):
    """
    Autogenerated from Line::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='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-19')


LineModel = Line


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

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

    RouteId: int = None
    ParentId: str = None
    StationId: str = None
    IcsId: str = None
    TopMostParentId: str = None
    Direction: str = None
    Towards: str = None
    Modes: list[str]
    StopType: str = None
    StopLetter: str = None
    Zone: str = None
    AccessibilitySummary: str = None
    HasDisruption: bool = None
    Lines: list["IdentifierModel"]
    Status: bool = None
    Id: str = None
    Url: str = None
    Name: str = None
    Lat: float = None
    Lon: float = None
    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-20')


MatchedStopModel = MatchedStop


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

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

    LineId: str = None
    LineName: str = None
    Direction: str = None
    BranchId: int = None
    NextBranchIds: list[int]
    PrevBranchIds: list[int]
    StopPoint: list["MatchedStopModel"]
    ServiceType: str = None
    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-21')


StopPointSequenceModel = StopPointSequence


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

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

    Name: str = None
    NaptanIds: list[str]
    ServiceType: str = None
    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-22')


OrderedRouteModel = OrderedRoute


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

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

    LineId: str = None
    LineName: str = None
    Direction: str = None
    IsOutboundOnly: bool = None
    Mode: str = None
    LineStrings: list[str]
    Stations: list["MatchedStopModel"]
    StopPointSequences: list["StopPointSequenceModel"]
    OrderedLineRoutes: list["OrderedRouteModel"]
    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-23')


RouteSequenceModel = RouteSequence


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

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

    RouteId: int = None
    Direction: str = None
    Destination: str = None
    FromStation: str = None
    ToStation: str = None
    ServiceType: str = None
    VehicleDestinationText: str = None
    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-24')


LineRouteSectionModel = LineRouteSection


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

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

    Id: int = None
    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-25')


MatchedRouteSectionsModel = MatchedRouteSections


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

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

    LineId: str = None
    Mode: str = None
    LineName: str = None
    LineRouteSection: list["LineRouteSectionModel"]
    MatchedRouteSections: list["MatchedRouteSectionsModel"]
    MatchedStops: list["MatchedStopModel"]
    Id: str = None
    Url: str = None
    Name: str = None
    Lat: float = None
    Lon: float = None
    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-26')


RouteSearchMatchModel = RouteSearchMatch


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

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

    Input: str = None
    SearchMatches: list["RouteSearchMatchModel"]
    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-27')


RouteSearchResponseModel = RouteSearchResponse


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

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

    StopId: str = None
    TimeToArrival: float = None
    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-28')


IntervalModel = Interval


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

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

    Id: str = None
    Intervals: list["IntervalModel"]
    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-29')


StationIntervalModel = StationInterval


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

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

    Hour: str = None
    Minute: str = None
    IntervalId: int = None
    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-30')


KnownJourneyModel = KnownJourney


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

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

    Hour: str = None
    Minute: str = None
    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-31')


TwentyFourHourClockTimeModel = TwentyFourHourClockTime


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

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

    LowestFrequency: float = None
    HighestFrequency: float = None
    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-32')


ServiceFrequencyModel = ServiceFrequency


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

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

    Type: str = None
    FromTime: TwentyFourHourClockTimeModel = None
    ToTime: TwentyFourHourClockTimeModel = None
    Frequency: ServiceFrequencyModel = None
    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-33')


PeriodModel = Period


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

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

    Name: str = None
    KnownJourneys: list["KnownJourneyModel"]
    FirstJourney: KnownJourneyModel = None
    LastJourney: KnownJourneyModel = None
    Periods: list["PeriodModel"]
    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-34')


ScheduleModel = Schedule


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

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

    StationIntervals: list["StationIntervalModel"]
    Schedules: list["ScheduleModel"]
    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-35')


TimetableRouteModel = TimetableRoute


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

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

    DepartureStopId: str = None
    Routes: list["TimetableRouteModel"]
    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-36')


TimetableModel = Timetable


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

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

    Description: str = None
    Uri: str = None
    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-37')


DisambiguationOptionModel = DisambiguationOption


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

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

    DisambiguationOptions: list["DisambiguationOptionModel"]
    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-38')


DisambiguationModel = Disambiguation


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

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

    LineId: str = None
    LineName: str = None
    Direction: str = None
    PdfUrl: str = None
    Stations: list["MatchedStopModel"]
    Stops: list["MatchedStopModel"]
    Timetable: TimetableModel = None
    Disambiguation: DisambiguationModel = None
    StatusErrorMessage: str = None
    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-39')


TimetableResponseModel = TimetableResponse


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

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

    CountdownServerAdjustment: str = None
    Source: datetime = None
    Insert: datetime = None
    Read: datetime = None
    Sent: datetime = None
    Received: datetime = None
    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-40')


PredictionTimingModel = PredictionTiming


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

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

    Id: str = None
    OperationType: int = None
    VehicleId: str = None
    NaptanId: str = None
    StationName: str = None
    LineId: str = None
    LineName: str = None
    PlatformName: str = None
    Direction: str = None
    Bearing: str = None
    DestinationNaptanId: str = None
    DestinationName: str = None
    Timestamp: datetime = None
    TimeToStation: int = None
    CurrentLocation: str = None
    Towards: str = None
    ExpectedArrival: datetime = None
    TimeToLive: datetime = None
    ModeName: str = None
    Timing: PredictionTimingModel = None
    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='Tfl-41')


PredictionModel = Prediction


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

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

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


MetaModesGet200ApplicationJsonResponseModel = MetaModesGet200ApplicationJsonResponse


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

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

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


Get200ApplicationJsonResponseModel = Get200ApplicationJsonResponse


class MetaSeverityGet200ApplicationJsonResponse(BaseModel):
    """
    Autogenerated from Line::MetaSeverityGet200ApplicationJsonResponse
    """

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

    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='MetaSeverityGet200ApplicationJsonResponse')


MetaSeverityGet200ApplicationJsonResponseModel = MetaSeverityGet200ApplicationJsonResponse


class MetaDisruptionCategories(BaseModel):
    """
    Autogenerated from Line::MetaDisruptionCategoriesGet200ApplicationJsonResponse
    """

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

    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='MetaDisruptionCategoriesGet200ApplicationJsonResponse')


MetaDisruptionCategoriesModel = MetaDisruptionCategories


class MetaServiceTypes(BaseModel):
    """
    Autogenerated from Line::MetaServiceTypesGet200ApplicationJsonResponse
    """

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

    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='MetaServiceTypesGet200ApplicationJsonResponse')


MetaServiceTypesModel = MetaServiceTypes


class idsGet200ApplicationJsonResponse(BaseModel):
    """
    Autogenerated from Line::ids-Get200ApplicationJsonResponse
    """

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

    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='ids-Get200ApplicationJsonResponse')


idsGet200ApplicationJsonResponseModel = idsGet200ApplicationJsonResponse


class ModemodesGet200ApplicationJsonResponse(BaseModel):
    """
    Autogenerated from Line::Mode-modes-Get200ApplicationJsonResponse
    """

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

    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='Mode-modes-Get200ApplicationJsonResponse')


ModemodesGet200ApplicationJsonResponseModel = ModemodesGet200ApplicationJsonResponse


class RouteGet200ApplicationJsonResponse(BaseModel):
    """
    Autogenerated from Line::RouteGet200ApplicationJsonResponse
    """

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

    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='RouteGet200ApplicationJsonResponse')


RouteGet200ApplicationJsonResponseModel = RouteGet200ApplicationJsonResponse


class idsRouteGet200ApplicationJsonResponse(BaseModel):
    """
    Autogenerated from Line::ids-RouteGet200ApplicationJsonResponse
    """

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

    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='ids-RouteGet200ApplicationJsonResponse')


idsRouteGet200ApplicationJsonResponseModel = idsRouteGet200ApplicationJsonResponse


class ModemodesRouteGet200ApplicationJsonResponse(BaseModel):
    """
    Autogenerated from Line::Mode-modes-RouteGet200ApplicationJsonResponse
    """

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

    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='Mode-modes-RouteGet200ApplicationJsonResponse')


ModemodesRouteGet200ApplicationJsonResponseModel = ModemodesRouteGet200ApplicationJsonResponse


class idsStatusstartDateToendDateGet200ApplicationJsonResponse(BaseModel):
    """
    Autogenerated from Line::ids-Status-startDate-To-endDate-Get200ApplicationJsonResponse
    """

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

    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='ids-Status-startDate-To-endDate-Get200ApplicationJsonResponse')


idsStatusstartDateToendDateGet200ApplicationJsonResponseModel = idsStatusstartDateToendDateGet200ApplicationJsonResponse


class idsStatusGet200ApplicationJsonResponse(BaseModel):
    """
    Autogenerated from Line::ids-StatusGet200ApplicationJsonResponse
    """

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

    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='ids-StatusGet200ApplicationJsonResponse')


idsStatusGet200ApplicationJsonResponseModel = idsStatusGet200ApplicationJsonResponse


class StatusseverityGet200ApplicationJsonResponse(BaseModel):
    """
    Autogenerated from Line::Status-severity-Get200ApplicationJsonResponse
    """

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

    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='Status-severity-Get200ApplicationJsonResponse')


StatusseverityGet200ApplicationJsonResponseModel = StatusseverityGet200ApplicationJsonResponse


class ModemodesStatusGet200ApplicationJsonResponse(BaseModel):
    """
    Autogenerated from Line::Mode-modes-StatusGet200ApplicationJsonResponse
    """

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

    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='Mode-modes-StatusGet200ApplicationJsonResponse')


ModemodesStatusGet200ApplicationJsonResponseModel = ModemodesStatusGet200ApplicationJsonResponse


class idStopPointsGet200ApplicationJsonResponse(BaseModel):
    """
    Autogenerated from Line::id-StopPointsGet200ApplicationJsonResponse
    """

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

    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='id-StopPointsGet200ApplicationJsonResponse')


idStopPointsGet200ApplicationJsonResponseModel = idStopPointsGet200ApplicationJsonResponse


class idsDisruptionGet200ApplicationJsonResponse(BaseModel):
    """
    Autogenerated from Line::ids-DisruptionGet200ApplicationJsonResponse
    """

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

    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='ids-DisruptionGet200ApplicationJsonResponse')


idsDisruptionGet200ApplicationJsonResponseModel = idsDisruptionGet200ApplicationJsonResponse


class ModemodesDisruptionGet200ApplicationJsonResponse(BaseModel):
    """
    Autogenerated from Line::Mode-modes-DisruptionGet200ApplicationJsonResponse
    """

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

    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='Mode-modes-DisruptionGet200ApplicationJsonResponse')


ModemodesDisruptionGet200ApplicationJsonResponseModel = ModemodesDisruptionGet200ApplicationJsonResponse


class idsArrivalsstopPointIdGet200ApplicationJsonResponse(BaseModel):
    """
    Autogenerated from Line::ids-Arrivals-stopPointId-Get200ApplicationJsonResponse
    """

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

    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='ids-Arrivals-stopPointId-Get200ApplicationJsonResponse')


idsArrivalsstopPointIdGet200ApplicationJsonResponseModel = idsArrivalsstopPointIdGet200ApplicationJsonResponse


class idsArrivalsGet200ApplicationJsonResponse(BaseModel):
    """
    Autogenerated from Line::ids-ArrivalsGet200ApplicationJsonResponse
    """

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

    _source_schema_name: str = PrivateAttr(default='Line')
    _component_schema_name: str = PrivateAttr(default='ids-ArrivalsGet200ApplicationJsonResponse')


idsArrivalsGet200ApplicationJsonResponseModel = idsArrivalsGet200ApplicationJsonResponse


class Deserialisers(DtoEnum):
    Tfl = Mode
    Tfl_2 = StatusSeverity
    Tfl_3 = PassengerFlow
    Tfl_4 = TrainLoading
    Tfl_5 = Crowding
    Tfl_6 = Identifier
    Tfl_7 = LineGroup
    Tfl_8 = LineModeGroup
    Tfl_9 = AdditionalProperties
    Tfl_10 = Place
    Tfl_11 = StopPoint
    Tfl_12 = RouteSectionNaptanEntrySequence
    Tfl_13 = RouteSection
    Tfl_14 = Disruption
    Tfl_15 = ValidityPeriod
    Tfl_16 = LineStatus
    Tfl_17 = MatchedRoute
    Tfl_18 = LineServiceTypeInfo
    Tfl_19 = Line
    Tfl_20 = MatchedStop
    Tfl_21 = StopPointSequence
    Tfl_22 = OrderedRoute
    Tfl_23 = RouteSequence
    Tfl_24 = LineRouteSection
    Tfl_25 = MatchedRouteSections
    Tfl_26 = RouteSearchMatch
    Tfl_27 = RouteSearchResponse
    Tfl_28 = Interval
    Tfl_29 = StationInterval
    Tfl_30 = KnownJourney
    Tfl_31 = TwentyFourHourClockTime
    Tfl_32 = ServiceFrequency
    Tfl_33 = Period
    Tfl_34 = Schedule
    Tfl_35 = TimetableRoute
    Tfl_36 = Timetable
    Tfl_37 = DisambiguationOption
    Tfl_38 = Disambiguation
    Tfl_39 = TimetableResponse
    Tfl_40 = PredictionTiming
    Tfl_41 = Prediction
    MetaModesGet200ApplicationJsonResponse = MetaModesGet200ApplicationJsonResponse
    Get200ApplicationJsonResponse = Get200ApplicationJsonResponse
    MetaSeverityGet200ApplicationJsonResponse = MetaSeverityGet200ApplicationJsonResponse
    MetaDisruptionCategoriesGet200ApplicationJsonResponse = MetaDisruptionCategories
    MetaServiceTypesGet200ApplicationJsonResponse = MetaServiceTypes
    ids_Get200ApplicationJsonResponse = idsGet200ApplicationJsonResponse
    Mode_modes_Get200ApplicationJsonResponse = ModemodesGet200ApplicationJsonResponse
    RouteGet200ApplicationJsonResponse = RouteGet200ApplicationJsonResponse
    ids_RouteGet200ApplicationJsonResponse = idsRouteGet200ApplicationJsonResponse
    Mode_modes_RouteGet200ApplicationJsonResponse = ModemodesRouteGet200ApplicationJsonResponse
    ids_Status_startDate_To_endDate_Get200ApplicationJsonResponse = idsStatusstartDateToendDateGet200ApplicationJsonResponse
    ids_StatusGet200ApplicationJsonResponse = idsStatusGet200ApplicationJsonResponse
    Status_severity_Get200ApplicationJsonResponse = StatusseverityGet200ApplicationJsonResponse
    Mode_modes_StatusGet200ApplicationJsonResponse = ModemodesStatusGet200ApplicationJsonResponse
    id_StopPointsGet200ApplicationJsonResponse = idStopPointsGet200ApplicationJsonResponse
    ids_DisruptionGet200ApplicationJsonResponse = idsDisruptionGet200ApplicationJsonResponse
    Mode_modes_DisruptionGet200ApplicationJsonResponse = ModemodesDisruptionGet200ApplicationJsonResponse
    ids_Arrivals_stopPointId_Get200ApplicationJsonResponse = idsArrivalsstopPointIdGet200ApplicationJsonResponse
    ids_ArrivalsGet200ApplicationJsonResponse = idsArrivalsGet200ApplicationJsonResponse