JC Decaux have released an official API that can be used to query the Dublin Bikes scheme as well as other schemes they manage, e.g. Dublin Bikes in Dublin (Ireland) & Cyclocity in Vilnius (Lithuania).
I threw together a quick and dirty PowerShell script for querying the API. If you'd like to play around, you'll need to register for an API key at https://developer.jcdecaux.com/
#
# Title :: JC Decaux OpenData Client
# Purpose :: Can be used to query city bike schemes managed by JC Decaux, e.g. Dublin Bikes
#
#
## Variables
$api = "API KEY GOES HERE"
$contractsURL = "https://api.jcdecaux.com/vls/v1/contracts"
$stationsURL = "https://api.jcdecaux.com/vls/v1/stations"
## Functions
function invoke-jcdclient {
param (
[string]
$url,
[string]
$contract
)
#
$response = Invoke-RestMethod -Uri $url -Method Get -ContentType 'application/json'
return $response
}
function get-jcdcontracts {
param(
[string]
$apikey
)
#
$response = invoke-jcdclient -url "$($contractsURL)?apiKey=$($apiKey)"
return $response
}
function get-jcdstations {
param(
[string]
$apikey,
[string]
$contract
)
#
$response = invoke-jcdclient -url "$($stationsURL)?contract=$($contract)&apiKey=$($apiKey)"
return $response
}
function get-jcdstation {
param(
[string]
$apikey,
[int]
$number,
[string]
$contract
)
#
#Write-Host "$($stationsURL)/$($number)?contract=$($contract)&apiKey=$($apiKey)"
$response = invoke-jcdclient -url "$($stationsURL)/$($number)?contract=$($contract)&apiKey=$($apiKey)"
return $response
}
## Runtime
# Get list of all 'contracts' aka JCD locations
$contracts = get-jcdcontracts -apikey $api
# Get all stations in 'contract' location, e.g. Dublin, Vilnius
# Output results to table
$stations = get-jcdstations -apikey $api -contract 'dublin'
$stations | ft -AutoSize
# Get specific station number in a specific 'contract' location
# e.g. Station 40 (Jervis Street) in Dublin
$station = get-jcdstation -number 40 -apikey $api -contract 'dublin'
$station
# Convert the milliseconds since epoch into DateTime
#([timezone]::CurrentTimeZone.ToLocalTime(([datetime]'1/1/1970').AddSeconds((0 + $station.last_update)/1000))).DateTime





