@drfrost/bods-js
Version:
JavaScript client for the UK's Bus Open Data Service (BODS) API
109 lines • 3.85 kB
TypeScript
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