INRIX IQ logo

Overview

This API provides a facility for bulk update of systems with Parking data. This includes static data - segments, rates, ammenities - and dynamic data - predictions - at regular intervals and optimized for idempotent data retrieval.

The Bulk format covers Parking Lots, off-street, and Parking Blocks, on-street, with each static and dynamic call returning all authorized - such as worldwide - coverage.

As the data sets are large, a traditional API call model is utilized. Enabling systems to retrieve static and dynamic data when it’s best for their capacity or use case. The data is split into static - infrequently changing, such as rules & restrictions - and dynamic - frequently changing, such as predictions.

Update Cadence

A full update of static data is generated once a month, by the first of the month.

Dynamic data is generated approximately every 15min, 24 hours a day, 7 days a week.

Usage

All API endpoints are of the format https://daar.parkme.com/v2/{onstreet/offstreet}/{static/dynamic}

Example On-Street Static data request

# obtain token from UAS and store in $token variable
curl -H "Authorization: Basic $token" https://daar.parkme.com/v2/onstreet/static

Data format

Bulk data is based on jsonlines (jsonl): Each line in the data files is a standalone JSON object (dictionary or hashmap). Objects are separated by a newline. Each line has an id field, which is used to link the dynamic data to the static data. In this documentation, lines are formatted as conventional JSON for readability.

The toplevel document is JSON proper.

Relationship to Lots and Blocks APIs

The bulk format is designed to facilitate bulk updating. An expected use of this API is to put all of the parking data into systems at a regular interval. A typical end-user use case is one where product consumers such as cars or reports access customer’s systems with those systems regularly updated with parking data.

Lots/Blocks Bulk
End-users make calls to the INRIX parking system End-users make calls to a customer’s system
An API call returns data in a 2km circle An API call returns all the data
For each lot (block), static and dynamic data are combined There are separate calls for static and dynamic data
Uses JSON data format Uses JSONlines data format

The Lots and Blocks APIs provide the same data in a similar format with the following changes:

Lots: Off-Street

Dynamic Data

Contains the predictions for each of the lots.

There are potentially several types of dynamic data. Each jsonline has a top level to identify the lot or block, id. This is followed by at least one string key, which determines what type of dynamic update this is. Keys are strings with internal slashes (/) for namespacing, like lot/prediction. It’s possible for one jsonline to contain more than one piece of dynamic data for the same id, which should not impact parsing but should be disregarded.

  { "key": 1234, 
    "lot/prediction": { ... },
  }

Predictions

Name/Object   Type Description
id   number Unique ID of lot
“lot/prediction”   string Namespaced domain of the update, “lot/prediction”
capacity   number Total spaces available when lot is empty
pred   number Predicted number of spaces available
trend   string Predicted availability delta, one of STATIC, FILLING_UP, EMPTYING, UNKNOWN
available optional number Measured number of spaces available
avtime optional datetime ISO datetime string of when ‘available’ was measured

Data format:

{  "id": 1234, 
   "lot/prediction": 
   {
       "capacity": 23,
       "pred": 123,
       "trend": "EMPTYING",
       "available": 124,
       "avtime": "2021-05-14T18:16:24.974511-07:00"
   }
}

Static data

The static data contains all the physical information about lots such as rates, hours of operation, and payment methods.

Attributes List

Available upon request from a Sales Engineer

Blocks: On-Street

Blocks

A block represents a stretch of road from one intersection to the next. This is map independent and conflatable to any third party map library.

Segments

Each block will have a list of one or more parking “segments”. A segment is a stretch of road with the same parking rules and restrictions. Each segment will include information about rates, hours that parking is available, and the number of parking spaces. Segments have a Google polyline geometry field and are defined by their offset, in meters, from the start of the block they belong to.

Dynamic Data

The dynamic data contains the predictions for each block, with parking probability at the block level.

There are potentially several types of dynamic data. Each jsonline has a top level to identify the lot or block, id. This is followed by at least one string key, which determines the type of dynamic update. Keys are strings with internal slashes (/) for namespacing, like lot/prediction. It’s possible for one jsonline to contain more than one piece of dynamic data for the same id, which should not impact parsing but should be disregarded.

  { "id": 1234, 
    "lot/prediction": { ... },
  }

Predictions

Prediction estimates the probability of finding at least one open parking spot on the block.

Name/Object   Type Description
id   number Unique ID of lot
“block/predicion”   string Namespaced domain of the update, “block/prediction”
probability   number Probability of finding a parking spot
probetime   number Time of prediction (ISO format)
trend   string Predicted delta, one of STATIC, FILLING_UP, EMPTYING, UNKNOWN

Data format:

{  "id": 1234, 
   "block/prediction": 
   {
       "probability": 23,
       "probetime": "2021-05-14T18:16:24.974511-07:00",
       "trend": "EMPTYING"
   }
}

Static Data

The static data contains all physical information about blocks such as rules & restrictions and cost to park.

Attributes list

Available upon request from a Sales Engineer