Skip to content

jaddek/metlink-api-http-client-typescript

Repository files navigation

Metlink API HTTP Client (Wellington, New Zealand)

https://opendata.metlink.org.nz/

Quality Gate Status code style: prettier Build status

Install

NPM

How to use

Example

Look

example.ts

Host

https://api.opendata.metlink.org.nz/v1

Init

Client

import { MetlinkHttpClientInterface } from './Contracts'
import { MetlinkHttpClientBuilder } from './MetlinkHttpClientBuilder'

const options = {
    timeout: 1000,
}
const metlinkHttpClient: MetlinkHttpClientInterface =
    MetlinkHttpClientBuilder.buildWithAxios(
        token,
        options,
        function (axios: AxiosInstance) {
            axios.interceptors.response.use(
                function (response) {
                    return response
                },
                function (error) {
                    return Promise.reject(error)
                }
            )
        }
    )

OR

import { MetlinkHttpClientInterface } from './Contracts'
import { MetlinkHttpClientBuilder } from './MetlinkHttpClientBuilder'

const options = {
    timeout: 1000,
}
const metlinkHttpClient: MetlinkHttpClientInterface =
    MetlinkHttpClientBuilder.buildWithAxiosAndDecorate(
        token,
        options,
        function (axios: AxiosInstance) {
            axios.interceptors.response.use(
                function (response) {
                    return response
                },
                function (error) {
                    return Promise.reject(error)
                }
            )
        }
    )

Wrapped response body

const metlinkHttpClient = new ResponseDataDecorator(httpClient)

Tests

Config with env

.jest/setEnvVars

Use

TOKEN_FILE=.token jest tests

Unresolved issues:

  • GTFS-RT: Service Alerts: Validation Scheme issue
  • GTFS-RT: Trip Updates: Validation Scheme issue

API

GTFS

Agencies

Transit agencies with service represented in this dataset.

metlinkHttpClient.getGtfsAgencies()

Calendars

Service dates specified using a weekly schedule with start and end dates.

metlinkHttpClient.getGtfsCalendar()

Calendar Dates

Exceptions for the services defined in the calendar.

metlinkHttpClient.getGtfsCalendarDates()

Feed info

Dataset metadata, including publisher, version, and expiration information.

metlinkHttpClient.getGtfsFeedInfo()

Routes

Transit routes. A route is a group of trips that are displayed to riders as a single service.

metlinkHttpClient.getGtfsRoutes()

Shapes

Rules for mapping vehicle travel paths, sometimes referred to as route alignments.

metlinkHttpClient.getGtfsShapes('shapeId')

Stop Times

Times that a vehicle arrives at and departs from stops for each trip.

metlinkHttpClient.getGtfsStopTimes('tripId')

Stops

Stops where vehicles pick up or drop off riders. Also defines stations and station entrances.

metlinkHttpClient.getGtfsStops()

Transfers

Rules for making connections at transfer points between routes.

metlinkHttpClient.getGtfsTransfers()

Trips

Trips for each route. A trip is a sequence of two or more stops that occur during a specific time period.

metlinkHttpClient.getGtfsTrips(
    'start',
    'extraFields',
    'routeId',
    'tripId',
    'end'
)

GTFS-RT

Service Alerts

Information about unforeseen events affecting routes, stops, or the network. Use accept header 'application/x-protobuf' to receive in Protobuf format.

metlinkHttpClient.getGtfsServiceAlerts()

Trip Updates

Delays, cancellations, changed routes. Use accept header 'application/x-protobuf' to receive in Protobuf format.

metlinkHttpClient.getGtfsRtTripUpdates()

Vehicle Positions

Information about vehicles including location. Use accept header 'application/x-protobuf' to receive in Protobuf format.

metlinkHttpClient.getGtfsRtVehiclePositions()

Other

Stop Departure Predictions

Predictions for when vehicles will arrive and depart through stops.

metlinkHttpClient.getStopPredictions('stopId')

Trip Cancellations

Historical, current, and known future data for trip cancellations.

const query: Query = new Query()
query.dateCreated = Date.now().toString()
metlinkHttpClient.getTripCancellation(query)