tfl-ts
Version:
🚇 Fully-typed TypeScript client for Transport for London (TfL) API • Zero dependencies • Auto-generated types • Real-time arrivals • Journey planning • Universal compatibility
1,002 lines • 428 kB
TypeScript
import { Api, TflApiPresentationEntitiesLineStatus as TflLineStatus, TflApiPresentationEntitiesLine as TflLine, TflApiPresentationEntitiesDisruption as TflDisruption, TflApiPresentationEntitiesMode as TflApiMode, TflApiPresentationEntitiesStatusSeverity as TflStatusSeverity, TflApiPresentationEntitiesRouteSearchResponse as TflRouteSearchResponse, TflApiPresentationEntitiesRouteSequence as TflRouteSequence, TflApiPresentationEntitiesStopPoint as TflStopPoint, TflApiPresentationEntitiesTimetableResponse as TflTimetableResponse, TflApiPresentationEntitiesPrediction as TflPrediction } from './generated/tfl';
import { Lines } from './generated/meta/Line';
import { Modes, ServiceTypes, DisruptionCategories, Severity, Categories, PlaceTypes, SearchProviders, Sorts, StopTypes } from './generated/meta/Meta';
type TflLineId = typeof Lines[number]['id'];
type ModeName = typeof Modes[number]['modeName'];
type ServiceType = typeof ServiceTypes[number];
type DisruptionCategory = typeof DisruptionCategories[number];
declare const LINE_NAMES: Record<TflLineId, string>;
declare const LINE_INFO: Record<TflLineId, typeof Lines[number]>;
declare const modeMetadata: Record<string, any>;
declare const severityByMode: Record<string, {
level: number;
description: string;
}[]>;
declare const severityDescriptions: readonly string[];
/**
* Query options for line-related requests
* @example
* // Get all tube lines
* const tubeLines = await client.line.get({ modes: ['tube'] });
*
* // Get specific lines by ID
* const specificLines = await client.line.get({ lineIds: ['central', 'victoria'] });
*
* // Validate user input before making API calls
* const userInput = ['central', 'invalid-line'];
* const validIds = userInput.filter(id => id in client.line.LINE_NAMES);
* if (validIds.length !== userInput.length) {
* throw new Error(`Invalid line IDs: ${userInput.filter(id => !(id in client.line.LINE_NAMES)).join(', ')}`);
* }
*/
interface BaseLineQuery {
/** Array of line IDs (e.g., 'central', 'victoria', 'jubilee'). TypeScript provides autocomplete for known values. */
lineIds?: string[];
/** Array of transport modes (e.g., 'tube', 'bus', 'dlr'). TypeScript provides autocomplete for known values. */
modes?: string[];
/** Whether to keep $type fields in the response */
keepTflTypes?: boolean;
}
/**
* Query options for line route requests
* @example
* // Most common: Get routes for specific lines
* const routes = await client.line.getRoute({
* lineIds: ['central', 'victoria'],
* serviceTypes: ['Regular']
* });
*
* // Common: Get routes for all lines of a specific mode
* const tubeRoutes = await client.line.getRoute({
* modes: ['tube'],
* serviceTypes: ['Regular', 'Night']
* });
*
* // Less common: Get all routes (use with caution - returns large dataset)
* const allRoutes = await client.line.getRoute();
*/
interface LineRouteQuery extends BaseLineQuery {
/** Array of service types to filter by (e.g., 'Regular', 'Night') */
serviceTypes?: string[];
}
/**
* Query options for line status requests
* @example
* // Get status for specific lines
* const status = await client.line.getStatus({
* lineIds: ['central', 'victoria'],
* severity: 10
* });
*/
interface LineStatusQuery extends BaseLineQuery {
/** Filter by status severity level (1-20) */
severity?: number;
/** Filter by date range */
dateRange?: {
/** Start date in ISO format */
startDate: string;
/** End date in ISO format */
endDate: string;
};
/** Include details of disruptions */
detail?: boolean;
/** Filter by severity level string */
severityLevel?: string;
}
/**
* Query options for line search requests
* @example
* // Search for lines containing "victoria"
* const results = await client.line.search({
* query: "victoria",
* modes: ['tube']
* });
*/
interface LineSearchQuery {
/** Search query string */
query: string;
/** Filter by transport modes */
modes?: string[];
/** Filter by service types */
serviceTypes?: string[];
}
/**
* Query options for line route sequence requests
* @example
* // Get route sequence for Central line inbound
* const sequence = await client.line.getRouteSequence({
* id: 'central',
* direction: 'inbound',
* serviceTypes: ['Regular']
* });
*/
interface LineRouteSequenceQuery {
/** Single line ID */
id: string;
/** Direction of travel */
direction: 'inbound' | 'outbound';
/** Service types to filter by */
serviceTypes?: string[];
/** Exclude crowding information */
excludeCrowding?: boolean;
/** Whether to keep $type fields in the response */
keepTflTypes?: boolean;
}
/**
* Query options for line stop points requests
* @example
* // Get all stations for Central line
* const stations = await client.line.getStopPoints({ id: 'central' });
*/
interface LineStopPointsQuery {
/** Single line ID */
id: string;
/** Filter to TfL-operated national rail stations only */
tflOperatedNationalRailStationsOnly?: boolean;
/** Whether to keep $type fields in the response */
keepTflTypes?: boolean;
}
/**
* Query options for line timetable requests
* @example
* // Get timetable from Oxford Circus to Victoria
* const timetable = await client.line.getTimetable({
* id: 'central',
* fromStopPointId: '940GZZLUOXC',
* toStopPointId: '940GZZLUVIC'
* });
*/
interface LineTimetableQuery {
/** Single line ID */
id: string;
/** Originating station stop point ID */
fromStopPointId: string;
/** Destination station stop point ID (optional) */
toStopPointId?: string;
/** Whether to keep $type fields in the response */
keepTflTypes?: boolean;
}
/**
* Query options for line arrivals requests
* @example
* // Get arrivals for Central line at Oxford Circus
* const arrivals = await client.line.getArrivals({
* lineIds: ['central'],
* stopPointId: '940GZZLUOXC',
* direction: 'inbound'
* });
*
* // Get inbound arrivals for Victoria line at Victoria
* const arrivals = await client.line.getArrivals({
* lineIds: ['victoria'],
* stopPointId: '940GZZLUVIC',
* direction: 'inbound'
* });
*/
interface LineArrivalsQuery {
/** Array of line IDs */
lineIds: string[];
/** Stop point ID */
stopPointId: string;
/** Direction of travel */
direction?: 'inbound' | 'outbound' | 'all';
/** Destination station ID */
destinationStationId?: string;
/** Whether to keep $type fields in the response */
keepTflTypes?: boolean;
}
/**
* Line information returned by the Tfl API
* @example
* {
* id: "central",
* name: "Central",
* modeName: "tube",
* created: "2024-01-01T00:00:00Z",
* lineStatuses: [
* {
* statusSeverity: 10,
* statusSeverityDescription: "Good Service",
* reason: "No issues reported"
* }
* ]
* }
*/
export interface LineInfo {
/** Unique identifier for the line */
id: string;
/** Display name of the line */
name: string;
/** Transport mode (e.g., 'tube', 'bus') */
modeName: ModeName;
/** Creation date of the line */
created: string;
/** Current status information */
lineStatuses?: TflLineStatus[];
/** Additional line information */
[key: string]: any;
}
/**
* Line class for interacting with Tfl Line API endpoints
* @example
* // Get all tube lines
* const tubeLines = await client.line.get({ modes: ['tube'] });
*
* // Get status for specific lines
* const status = await client.line.getStatus({ lineIds: ['central', 'victoria'] });
*
* // Search for lines
* const results = await client.line.search({ query: "victoria" });
*
* // Get static line information (no HTTP request)
* const lineName = client.line.LINE_NAMES['central']; // "Central"
* const lineInfo = client.line.LINE_INFO['central']; // Full line information
*
* // Validate user input before making API calls
* const validateLineIds = (ids: string[]) => {
* const validIds = ids.filter(id => id in client.line.LINE_NAMES);
* if (validIds.length !== ids.length) {
* const invalidIds = ids.filter(id => !(id in client.line.LINE_NAMES));
* throw new Error(`Invalid line IDs: ${invalidIds.join(', ')}`);
* }
* return validIds;
* };
*/
export declare class Line {
private api;
private batchRequest;
/** Map of line IDs to their display names (static, no HTTP request needed) */
readonly LINE_NAMES: Record<"1" | "2" | "3" | "dlr" | "tram" | "4" | "5" | "6" | "7" | "8" | "9" | "100" | "101" | "102" | "103" | "104" | "105" | "106" | "107" | "108" | "109" | "11" | "110" | "111" | "112" | "113" | "114" | "115" | "116" | "117" | "119" | "12" | "120" | "121" | "122" | "123" | "124" | "125" | "126" | "127" | "128" | "129" | "13" | "130" | "131" | "132" | "133" | "134" | "135" | "136" | "137" | "138" | "139" | "14" | "140" | "141" | "142" | "143" | "144" | "145" | "146" | "147" | "148" | "149" | "15" | "150" | "151" | "152" | "153" | "154" | "155" | "156" | "157" | "158" | "159" | "16" | "160" | "161" | "162" | "163" | "164" | "165" | "166" | "167" | "169" | "17" | "170" | "171" | "172" | "173" | "174" | "175" | "176" | "177" | "178" | "179" | "18" | "180" | "181" | "182" | "183" | "184" | "185" | "186" | "187" | "188" | "189" | "19" | "190" | "191" | "192" | "193" | "194" | "195" | "196" | "197" | "198" | "199" | "20" | "200" | "201" | "202" | "203" | "204" | "205" | "206" | "207" | "208" | "209" | "21" | "210" | "211" | "212" | "213" | "214" | "215" | "216" | "217" | "218" | "219" | "22" | "220" | "221" | "222" | "223" | "224" | "225" | "226" | "227" | "228" | "229" | "23" | "230" | "231" | "232" | "233" | "234" | "235" | "236" | "237" | "238" | "24" | "240" | "241" | "242" | "243" | "244" | "245" | "246" | "247" | "248" | "249" | "25" | "250" | "251" | "252" | "253" | "254" | "255" | "256" | "257" | "258" | "259" | "26" | "260" | "261" | "262" | "263" | "264" | "265" | "266" | "267" | "268" | "269" | "27" | "270" | "272" | "273" | "274" | "275" | "276" | "277" | "278" | "279" | "28" | "280" | "281" | "282" | "283" | "284" | "285" | "286" | "287" | "288" | "289" | "29" | "290" | "291" | "292" | "293" | "294" | "295" | "296" | "297" | "298" | "299" | "30" | "300" | "301" | "302" | "303" | "304" | "306" | "307" | "308" | "309" | "31" | "310" | "312" | "313" | "314" | "315" | "316" | "317" | "318" | "319" | "32" | "320" | "321" | "322" | "323" | "324" | "325" | "326" | "327" | "328" | "329" | "33" | "330" | "331" | "333" | "335" | "336" | "337" | "339" | "34" | "340" | "341" | "343" | "344" | "345" | "346" | "349" | "35" | "350" | "352" | "353" | "354" | "355" | "356" | "357" | "358" | "359" | "36" | "360" | "362" | "363" | "364" | "365" | "366" | "367" | "368" | "37" | "370" | "371" | "372" | "375" | "376" | "377" | "378" | "379" | "38" | "380" | "381" | "382" | "383" | "384" | "385" | "386" | "388" | "389" | "39" | "390" | "393" | "394" | "395" | "396" | "397" | "398" | "399" | "40" | "401" | "403" | "404" | "405" | "406" | "407" | "41" | "410" | "411" | "412" | "413" | "415" | "417" | "418" | "419" | "42" | "422" | "423" | "424" | "425" | "427" | "428" | "43" | "430" | "432" | "433" | "434" | "436" | "439" | "44" | "440" | "444" | "45" | "450" | "452" | "453" | "456" | "46" | "460" | "462" | "463" | "464" | "465" | "466" | "467" | "468" | "469" | "47" | "470" | "472" | "473" | "474" | "476" | "481" | "482" | "483" | "484" | "485" | "486" | "487" | "488" | "49" | "490" | "491" | "492" | "493" | "496" | "498" | "499" | "50" | "51" | "52" | "53" | "533" | "54" | "55" | "56" | "57" | "58" | "59" | "60" | "601" | "602" | "603" | "605" | "606" | "608" | "61" | "612" | "613" | "616" | "617" | "618" | "62" | "621" | "624" | "625" | "626" | "627" | "628" | "629" | "63" | "631" | "632" | "633" | "634" | "635" | "638" | "639" | "64" | "640" | "642" | "643" | "645" | "646" | "649" | "65" | "650" | "651" | "652" | "653" | "654" | "655" | "656" | "657" | "658" | "66" | "660" | "661" | "662" | "663" | "664" | "665" | "667" | "669" | "67" | "670" | "671" | "672" | "673" | "674" | "675" | "677" | "678" | "679" | "68" | "681" | "683" | "684" | "685" | "686" | "687" | "688" | "689" | "69" | "690" | "696" | "697" | "698" | "699" | "70" | "71" | "72" | "73" | "74" | "75" | "76" | "77" | "78" | "79" | "80" | "81" | "83" | "85" | "86" | "87" | "88" | "89" | "90" | "91" | "92" | "93" | "94" | "95" | "96" | "969" | "97" | "98" | "99" | "a10" | "avanti-west-coast" | "b11" | "b12" | "b13" | "b14" | "b15" | "b16" | "bakerloo" | "c1" | "c10" | "c11" | "c2c" | "c3" | "central" | "chiltern-railways" | "circle" | "crosscountry" | "d3" | "d6" | "d7" | "d8" | "district" | "e1" | "e10" | "e11" | "e2" | "e3" | "e5" | "e6" | "e7" | "e8" | "e9" | "east-midlands-railway" | "el1" | "el2" | "el3" | "elizabeth" | "g1" | "gatwick-express" | "grand-central" | "greater-anglia" | "great-northern" | "great-western-railway" | "h10" | "h11" | "h12" | "h13" | "h14" | "h17" | "h18" | "h19" | "h2" | "h20" | "h22" | "h25" | "h26" | "h28" | "h3" | "h32" | "h37" | "h9" | "h91" | "h98" | "hammersmith-city" | "heathrow-express" | "hull-trains" | "island-line" | "jubilee" | "k1" | "k2" | "k3" | "k4" | "k5" | "liberty" | "lioness" | "london-cable-car" | "london-north-eastern-railway" | "lumo" | "merseyrail" | "metropolitan" | "mildmay" | "n1" | "n109" | "n11" | "n113" | "n133" | "n136" | "n137" | "n140" | "n15" | "n155" | "n171" | "n18" | "n19" | "n199" | "n2" | "n20" | "n205" | "n21" | "n22" | "n242" | "n25" | "n250" | "n253" | "n26" | "n263" | "n266" | "n27" | "n279" | "n28" | "n29" | "n3" | "n31" | "n32" | "n33" | "n343" | "n38" | "n381" | "n41" | "n44" | "n5" | "n53" | "n55" | "n550" | "n551" | "n63" | "n65" | "n68" | "n7" | "n72" | "n73" | "n74" | "n8" | "n83" | "n86" | "n87" | "n89" | "n9" | "n91" | "n97" | "n98" | "northern" | "northern-rail" | "p12" | "p13" | "p4" | "p5" | "piccadilly" | "r1" | "r10" | "r11" | "r2" | "r3" | "r4" | "r5" | "r68" | "r7" | "r70" | "r8" | "r9" | "rb1" | "rb2" | "rb4" | "rb6" | "s1" | "s2" | "s3" | "s4" | "scotrail" | "scs" | "sl1" | "sl10" | "sl2" | "sl3" | "sl4" | "sl5" | "sl6" | "sl7" | "sl8" | "sl9" | "southeastern" | "southern" | "south-western-railway" | "suffragette" | "thameslink" | "thames-river-services" | "transpennine-express" | "transport-for-wales" | "u1" | "u10" | "u2" | "u3" | "u4" | "u5" | "u7" | "u9" | "victoria" | "w11" | "w12" | "w13" | "w14" | "w15" | "w16" | "w19" | "w3" | "w4" | "w5" | "w6" | "w7" | "w8" | "w9" | "waterloo-city" | "weaver" | "west-midlands-trains" | "windrush" | "woolwich-ferry", string>;
/** Map of line IDs to their full information (static, no HTTP request needed) */
readonly LINE_INFO: Record<"1" | "2" | "3" | "dlr" | "tram" | "4" | "5" | "6" | "7" | "8" | "9" | "100" | "101" | "102" | "103" | "104" | "105" | "106" | "107" | "108" | "109" | "11" | "110" | "111" | "112" | "113" | "114" | "115" | "116" | "117" | "119" | "12" | "120" | "121" | "122" | "123" | "124" | "125" | "126" | "127" | "128" | "129" | "13" | "130" | "131" | "132" | "133" | "134" | "135" | "136" | "137" | "138" | "139" | "14" | "140" | "141" | "142" | "143" | "144" | "145" | "146" | "147" | "148" | "149" | "15" | "150" | "151" | "152" | "153" | "154" | "155" | "156" | "157" | "158" | "159" | "16" | "160" | "161" | "162" | "163" | "164" | "165" | "166" | "167" | "169" | "17" | "170" | "171" | "172" | "173" | "174" | "175" | "176" | "177" | "178" | "179" | "18" | "180" | "181" | "182" | "183" | "184" | "185" | "186" | "187" | "188" | "189" | "19" | "190" | "191" | "192" | "193" | "194" | "195" | "196" | "197" | "198" | "199" | "20" | "200" | "201" | "202" | "203" | "204" | "205" | "206" | "207" | "208" | "209" | "21" | "210" | "211" | "212" | "213" | "214" | "215" | "216" | "217" | "218" | "219" | "22" | "220" | "221" | "222" | "223" | "224" | "225" | "226" | "227" | "228" | "229" | "23" | "230" | "231" | "232" | "233" | "234" | "235" | "236" | "237" | "238" | "24" | "240" | "241" | "242" | "243" | "244" | "245" | "246" | "247" | "248" | "249" | "25" | "250" | "251" | "252" | "253" | "254" | "255" | "256" | "257" | "258" | "259" | "26" | "260" | "261" | "262" | "263" | "264" | "265" | "266" | "267" | "268" | "269" | "27" | "270" | "272" | "273" | "274" | "275" | "276" | "277" | "278" | "279" | "28" | "280" | "281" | "282" | "283" | "284" | "285" | "286" | "287" | "288" | "289" | "29" | "290" | "291" | "292" | "293" | "294" | "295" | "296" | "297" | "298" | "299" | "30" | "300" | "301" | "302" | "303" | "304" | "306" | "307" | "308" | "309" | "31" | "310" | "312" | "313" | "314" | "315" | "316" | "317" | "318" | "319" | "32" | "320" | "321" | "322" | "323" | "324" | "325" | "326" | "327" | "328" | "329" | "33" | "330" | "331" | "333" | "335" | "336" | "337" | "339" | "34" | "340" | "341" | "343" | "344" | "345" | "346" | "349" | "35" | "350" | "352" | "353" | "354" | "355" | "356" | "357" | "358" | "359" | "36" | "360" | "362" | "363" | "364" | "365" | "366" | "367" | "368" | "37" | "370" | "371" | "372" | "375" | "376" | "377" | "378" | "379" | "38" | "380" | "381" | "382" | "383" | "384" | "385" | "386" | "388" | "389" | "39" | "390" | "393" | "394" | "395" | "396" | "397" | "398" | "399" | "40" | "401" | "403" | "404" | "405" | "406" | "407" | "41" | "410" | "411" | "412" | "413" | "415" | "417" | "418" | "419" | "42" | "422" | "423" | "424" | "425" | "427" | "428" | "43" | "430" | "432" | "433" | "434" | "436" | "439" | "44" | "440" | "444" | "45" | "450" | "452" | "453" | "456" | "46" | "460" | "462" | "463" | "464" | "465" | "466" | "467" | "468" | "469" | "47" | "470" | "472" | "473" | "474" | "476" | "481" | "482" | "483" | "484" | "485" | "486" | "487" | "488" | "49" | "490" | "491" | "492" | "493" | "496" | "498" | "499" | "50" | "51" | "52" | "53" | "533" | "54" | "55" | "56" | "57" | "58" | "59" | "60" | "601" | "602" | "603" | "605" | "606" | "608" | "61" | "612" | "613" | "616" | "617" | "618" | "62" | "621" | "624" | "625" | "626" | "627" | "628" | "629" | "63" | "631" | "632" | "633" | "634" | "635" | "638" | "639" | "64" | "640" | "642" | "643" | "645" | "646" | "649" | "65" | "650" | "651" | "652" | "653" | "654" | "655" | "656" | "657" | "658" | "66" | "660" | "661" | "662" | "663" | "664" | "665" | "667" | "669" | "67" | "670" | "671" | "672" | "673" | "674" | "675" | "677" | "678" | "679" | "68" | "681" | "683" | "684" | "685" | "686" | "687" | "688" | "689" | "69" | "690" | "696" | "697" | "698" | "699" | "70" | "71" | "72" | "73" | "74" | "75" | "76" | "77" | "78" | "79" | "80" | "81" | "83" | "85" | "86" | "87" | "88" | "89" | "90" | "91" | "92" | "93" | "94" | "95" | "96" | "969" | "97" | "98" | "99" | "a10" | "avanti-west-coast" | "b11" | "b12" | "b13" | "b14" | "b15" | "b16" | "bakerloo" | "c1" | "c10" | "c11" | "c2c" | "c3" | "central" | "chiltern-railways" | "circle" | "crosscountry" | "d3" | "d6" | "d7" | "d8" | "district" | "e1" | "e10" | "e11" | "e2" | "e3" | "e5" | "e6" | "e7" | "e8" | "e9" | "east-midlands-railway" | "el1" | "el2" | "el3" | "elizabeth" | "g1" | "gatwick-express" | "grand-central" | "greater-anglia" | "great-northern" | "great-western-railway" | "h10" | "h11" | "h12" | "h13" | "h14" | "h17" | "h18" | "h19" | "h2" | "h20" | "h22" | "h25" | "h26" | "h28" | "h3" | "h32" | "h37" | "h9" | "h91" | "h98" | "hammersmith-city" | "heathrow-express" | "hull-trains" | "island-line" | "jubilee" | "k1" | "k2" | "k3" | "k4" | "k5" | "liberty" | "lioness" | "london-cable-car" | "london-north-eastern-railway" | "lumo" | "merseyrail" | "metropolitan" | "mildmay" | "n1" | "n109" | "n11" | "n113" | "n133" | "n136" | "n137" | "n140" | "n15" | "n155" | "n171" | "n18" | "n19" | "n199" | "n2" | "n20" | "n205" | "n21" | "n22" | "n242" | "n25" | "n250" | "n253" | "n26" | "n263" | "n266" | "n27" | "n279" | "n28" | "n29" | "n3" | "n31" | "n32" | "n33" | "n343" | "n38" | "n381" | "n41" | "n44" | "n5" | "n53" | "n55" | "n550" | "n551" | "n63" | "n65" | "n68" | "n7" | "n72" | "n73" | "n74" | "n8" | "n83" | "n86" | "n87" | "n89" | "n9" | "n91" | "n97" | "n98" | "northern" | "northern-rail" | "p12" | "p13" | "p4" | "p5" | "piccadilly" | "r1" | "r10" | "r11" | "r2" | "r3" | "r4" | "r5" | "r68" | "r7" | "r70" | "r8" | "r9" | "rb1" | "rb2" | "rb4" | "rb6" | "s1" | "s2" | "s3" | "s4" | "scotrail" | "scs" | "sl1" | "sl10" | "sl2" | "sl3" | "sl4" | "sl5" | "sl6" | "sl7" | "sl8" | "sl9" | "southeastern" | "southern" | "south-western-railway" | "suffragette" | "thameslink" | "thames-river-services" | "transpennine-express" | "transport-for-wales" | "u1" | "u10" | "u2" | "u3" | "u4" | "u5" | "u7" | "u9" | "victoria" | "w11" | "w12" | "w13" | "w14" | "w15" | "w16" | "w19" | "w3" | "w4" | "w5" | "w6" | "w7" | "w8" | "w9" | "waterloo-city" | "weaver" | "west-midlands-trains" | "windrush" | "woolwich-ferry", {
readonly id: "1";
readonly name: "1";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=1&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "100";
readonly name: "100";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.89Z";
readonly modified: "2025-07-03T11:09:43.89Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=100&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "101";
readonly name: "101";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=101&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "102";
readonly name: "102";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=102&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "103";
readonly name: "103";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=103&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "104";
readonly name: "104";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.89Z";
readonly modified: "2025-07-03T11:09:43.89Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=104&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "105";
readonly name: "105";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.89Z";
readonly modified: "2025-07-03T11:09:43.89Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=105&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "106";
readonly name: "106";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=106&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "107";
readonly name: "107";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=107&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "108";
readonly name: "108";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.92Z";
readonly modified: "2025-07-03T11:09:43.92Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=108&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "109";
readonly name: "109";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=109&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "11";
readonly name: "11";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=11&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "110";
readonly name: "110";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.89Z";
readonly modified: "2025-07-03T11:09:43.89Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=110&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "111";
readonly name: "111";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=111&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "112";
readonly name: "112";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=112&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "113";
readonly name: "113";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.89Z";
readonly modified: "2025-07-03T11:09:43.89Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=113&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "114";
readonly name: "114";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.92Z";
readonly modified: "2025-07-03T11:09:43.92Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=114&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "115";
readonly name: "115";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.89Z";
readonly modified: "2025-07-03T11:09:43.89Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=115&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "116";
readonly name: "116";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=116&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "117";
readonly name: "117";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=117&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "119";
readonly name: "119";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=119&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "12";
readonly name: "12";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=12&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "120";
readonly name: "120";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=120&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "121";
readonly name: "121";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=121&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "122";
readonly name: "122";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.92Z";
readonly modified: "2025-07-03T11:09:43.92Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=122&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "123";
readonly name: "123";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=123&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "124";
readonly name: "124";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=124&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "125";
readonly name: "125";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.92Z";
readonly modified: "2025-07-03T11:09:43.92Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=125&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "126";
readonly name: "126";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=126&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "127";
readonly name: "127";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=127&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "128";
readonly name: "128";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=128&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "129";
readonly name: "129";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=129&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "13";
readonly name: "13";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=13&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "130";
readonly name: "130";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.89Z";
readonly modified: "2025-07-03T11:09:43.89Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=130&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "131";
readonly name: "131";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.92Z";
readonly modified: "2025-07-03T11:09:43.92Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=131&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "132";
readonly name: "132";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=132&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "133";
readonly name: "133";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=133&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "134";
readonly name: "134";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.89Z";
readonly modified: "2025-07-03T11:09:43.89Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=134&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "135";
readonly name: "135";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=135&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "136";
readonly name: "136";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=136&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "137";
readonly name: "137";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=137&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "138";
readonly name: "138";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=138&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "139";
readonly name: "139";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=139&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "14";
readonly name: "14";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=14&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "140";
readonly name: "140";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=140&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "141";
readonly name: "141";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.92Z";
readonly modified: "2025-07-03T11:09:43.92Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=141&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "142";
readonly name: "142";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=142&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "143";
readonly name: "143";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=143&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "144";
readonly name: "144";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=144&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "145";
readonly name: "145";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=145&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "146";
readonly name: "146";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.92Z";
readonly modified: "2025-07-03T11:09:43.92Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=146&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "147";
readonly name: "147";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.89Z";
readonly modified: "2025-07-03T11:09:43.89Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=147&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "148";
readonly name: "148";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.907Z";
readonly modified: "2025-07-03T11:09:43.907Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
readonly serviceTypes: readonly [{
readonly name: "Regular";
readonly uri: "/Line/Route?ids=148&serviceTypes=Regular";
}];
readonly crowding: "Unknown";
} | {
readonly id: "149";
readonly name: "149";
readonly modeName: "bus";
readonly disruptions: readonly [];
readonly created: "2025-07-03T11:09:43.89Z";
readonly modified: "2025-07-03T11:09:43.89Z";
readonly lineStatuses: readonly [];
readonly routeSections: readonly [];
read