UNPKG

@drfrost/bods-js

Version:

JavaScript client for the UK's Bus Open Data Service (BODS) API

109 lines 3.85 kB
import type { Timetable, TimetableResponse, TimetableSearchParams } from '../types/timetables.js'; import { HttpClient } from './http-client.js'; /** * Client for interacting with the BODS Timetables API * * The Timetables API provides access to bus schedule and route information. * Data is updated every 24 hours around 06:00 GMT. */ export declare class TimetablesClient { private httpClient; constructor(httpClient: HttpClient); /** * Search for timetable datasets * * @param params - Search parameters to filter timetables * @returns Promise resolving to paginated timetable results * * @example * ```typescript * // Find all timetables for a specific operator * const timetables = await client.timetables.search({ * noc: ['SCMN'], * status: 'published' * }); * * // Search by administrative area * const areaTimetables = await client.timetables.search({ * adminArea: ['060'], // Cheshire East * limit: 50 * }); * * // Search with text query * const searchResults = await client.timetables.search({ * search: 'Stagecoach', * dqRag: 'green' * }); * ``` */ search(params?: TimetableSearchParams): Promise<TimetableResponse>; /** * Get a specific timetable dataset by ID * * @param datasetId - The unique dataset identifier * @returns Promise resolving to the timetable dataset * * @example * ```typescript * const timetable = await client.timetables.getById(86); * console.log(timetable.operatorName, timetable.lines); * ``` */ getById(datasetId: number): Promise<Timetable>; /** * Get all timetables for a specific operator * * @param noc - National Operator Code(s) * @param additionalParams - Additional search parameters * @returns Promise resolving to paginated timetable results * * @example * ```typescript * const operatorTimetables = await client.timetables.getByOperator(['SCMN', 'SCGH']); * ``` */ getByOperator(noc: string | string[], additionalParams?: Omit<TimetableSearchParams, 'noc'>): Promise<TimetableResponse>; /** * Get timetables for a specific administrative area * * @param adminArea - Administrative area code(s) * @param additionalParams - Additional search parameters * @returns Promise resolving to paginated timetable results * * @example * ```typescript * const areaTimetables = await client.timetables.getByAdminArea('060'); * ``` */ getByAdminArea(adminArea: string | string[], additionalParams?: Omit<TimetableSearchParams, 'adminArea'>): Promise<TimetableResponse>; /** * Get recently modified timetables * * @param since - Date to check for modifications since * @param additionalParams - Additional search parameters * @returns Promise resolving to paginated timetable results * * @example * ```typescript * const recent = await client.timetables.getRecentlyModified( * new Date('2023-01-01') * ); * ``` */ getRecentlyModified(since: Date | string, additionalParams?: Omit<TimetableSearchParams, 'modifiedDate'>): Promise<TimetableResponse>; /** * Get high-quality timetables (green data quality rating) * * @param additionalParams - Additional search parameters * @returns Promise resolving to paginated timetable results * * @example * ```typescript * const qualityTimetables = await client.timetables.getHighQuality({ * bodsCompliance: true * }); * ``` */ getHighQuality(additionalParams?: Omit<TimetableSearchParams, 'dqRag'>): Promise<TimetableResponse>; } //# sourceMappingURL=timetables-client.d.ts.map