# Migrating to `hafas-client@4`

## If you use Node `6`…

…migrate to Node `8`, sorry. bf3c4c5

## If you use the `journeys()` method…

…use the `journeys` entry from the returned object. fcc53b5
…rename `leg.id` to `leg.tripId`. 96ff59d
…use `leg.walking === true` to check for walking legs. 0e1fcb0
…explicitly pass a value for `opt.transfers` if you want to limit the nr of transfers. 61e7d14

## If you use the `departures()`/`arrivals()` method…

…rename `opt.stationLines` to `opt.linesOfStops`. a972dad

## If you use the `station()` method…

…change the `station(id)` call to `stop(id)`. bad0af8

## If you use the `locations()` method…

…pass `opt.results` if you want more than 5 results. 3bc2eff
…rename `opt.stationLines` to `opt.linesOfStops`. a972dad

## If you use the `trip()` method…

…rename `leg.nextStops` to `leg.nextStopovers`. bbff1f4

## If you use the `nearby()` method…

…rename `opt.stations` to `opt.stops`. 8f9b22e
…rename `opt.stationLines` to `opt.linesOfStops`. a972dad

## If you use the `radar()` method…

…rename `movement.nextStops` to `movement.nextStopovers`. bbff1f4

## If you use the DB/INSA/Nah.SH/ÖBB profile…

…rename the product identifier `nationalExp` to `nationalExpress`. 567cc98

## If you use POIs…

…use the `poi: true` flag to check if a location is a POI. eb3ffba
…add `poi: true` to a location to make it a POI. eb3ffba

## If you use `arrival.trip`/`departure.trip` or `movement.trip`…

…[let us know](https://github.com/public-transport/hafas-client/issues) why you need it. We removed it because it is not reliable. 9c44995

## If you use `hafas-client/throttle`…

…check out the [new and slightly different throttling API](readme.md#throttling-requests). 748f8ce

## If you use `hafas-client/retry`…

…check out the [new and slightly different retrying API](readme.md#retrying-failed-requests). fbde6a1

## If you use `arrival.formerScheduledPlatform`/`departure.formerScheduledPlatform`…

…rename to `arrival.scheduledPlatform`/`departure.scheduledPlatform`. 7e39a2f

## If you use `arrival.formerScheduledWhen`/`departure.formerScheduledWhen`…

…rename to `arrival.scheduledWhen`/`departure.scheduledWhen`. 7e39a2f

## If you use `leg.formerScheduledArrival`/`leg.formerScheduledDeparture`…

…rename to `leg.scheduledArrival`/`leg.scheduledDeparture`. 7e39a2f

## If you use `stopover.formerScheduledArrival`/`stopover.formerScheduledDeparture`…

…rename to `stopover.scheduledArrival`/`stopover.scheduledDeparture`. 7e39a2f

## If you use `stopover.formerScheduledArrivalPlatform`/`stopover.formerScheduledDeparturePlatform`…

…rename to `stopover.scheduledArrivalPlatform`/`stopover.scheduledDeparturePlatform`. 7e39a2f

## If you use `line.class` or `line.productCode`…

…write a custom `parseLine` implementation that exposes them. a1ffad3

An example with the VBB profile:

```js
const createOrigParseLine = require('hafas-client/parse/line')

const createParseLine = (profile, opt, data) => {
	const origParseLine = createOrigParseLine(profile, opt, data)

	const parseLine = (p) => {
		const res = origParseLine(p)
		res.class = p.cls
		return res
	}
}

const customVbbProfile = Object.assign({}, vbbProfile)
customVbbProfile.parseLine = createParseLine

const hafas = createHafas(customVbbProfile, 'my-awesome-program')
```

## If you use `hafas-client` with custom parse functions…

…change the `parseDateTime` to

- return an [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) string. a9fd9ff
- have accept an optional `tzOffset`. ca1105f

…change the `parseLocation` to strip leading zeros from stop/station IDs. 1e13cf1

## If you inspect errors thrown by `hafas-client`…

…adapt your code to 1646173.