The parking API for on-street parking. The “blocks” api returns data for a number of city blocks around a position. A block represents a road from one intersection to the next. The concept of blocks is important for the OnStreet API to be map independent and to be conflatable to any third party map library. Each block has a forecasted probability parking and datat attributes like the cost of parking.
Each block consists of multiple (1..n) segments. Segments start and end when the parking rules change. A pretthy common six-segment block in the US would have 3 segments on each side of the road: The first segment would cover parking from the corner to the close to the mid point, where there is a short segment of no parking around the alley. A final segment would cover the stretch from the alley to the other corner.
Driveways and Fire Hydrants
In order to avoid “zebra striping” in map visualizations, the API results do not include short breaks in street parking such as driveways, fire hydrates, mailboxes, crosswalks, etc. Gaps that are shorter than 25m are not included, unless they also represent a change in parking rules. We do include these short gaps in our internal representation, but the API does not surface them.
spacesTotal field returned by the API is specific to each segment.
The number of spaces returned here reflects the number of actual spaces in the segment,
this does not take into account whether the street is currently available, “isOpen”, “No Parking”, etc.,
but an absolute measurement of spaces.
The v3 block queries are based on a circle defined by a point (lat, lon) and a radius (meters).
Entry Datetime and Duration
duration parameters not only change the rates
but also the
occupancy prediction. Selecting an entrytime in the past or more than a few hours in the future is not supported.
Probability versus isOpen
isOpen attribute is a boolean that summarizes whether parking is legal at this point in time. For consistency, our forecasting algorithm will predict the number of available spaces for blocks that are temporary not allowing parking (such as for
street cleaning). For most end users, a block with a high probability of an open parking spot but no legal parking at this time (isOpen equals False) should probably not be shown.
Example /blocks request
# obtain token from UAS and store in $token variable # the point is represented as lat|lon curl "https://api.parkme.com/blocks?accesstoken=$token&point=34.017395736527334|-118.49404245615005&radius=50&locale=en-US"
API versions and extensions
When the API changes in a substantial way, we will bump the version number according to ‘semantic versioning’ standards and notify our customers. We expect our client software to be ‘open to extension’, that is, fields can be added to the API output without changing the version number. Client software should ignore any fields that are not described in this documentation or that were not present at the time of their implementation.
Response Attributes list
|blockID||number||Unique ID for block|
|address||string||To and from streets|
|polyline6||string||Block geometry (Google encoded, version 6)|
|probability||number||Predicted likelihood of finding 1 or more open legal parking spots (%), NULL = No Parking|
|segments||object||Group of attributes that represent each segment|
|segmentID||string||Unique ID for segment|
|polyline6||string||Segment geometry with additional degree of precision|
|spacesTotal||number||Total number of spaces for segment, independent of current rules. This is the capacity of the segment.|
|start||number||Offset of where segment begins (meters)|
|end||number||Offset of where segment ends (meters)|
|side||string||Side of street in relation to heading. First point in the geojson is the beginning of the block.|
|rateCards||string||Full restrictions and pricing|
|isOpen||string||Parking allowed or No Parking|
|calculatedRates||object||Group of attributes that represent the cost of parking for user specified parameters. Different segments may have different cost structures.|
GET List on-street parking (blocks) in a given area.
|accesstoken||Header||String||A valid access token provided from GET appToken. The accesstoken MUST be added to the request header, using format 'Authorization: Bearer xxxx.xxx.xxxx'.|
|point||Query||String||Used to select a circular region based on a point and radius. Lat and long in decimal degrees are separated by a pipe symbol. For Paris, France:
|radius||Query||Double||Radius in meters. Parking information will be retrieved for a approximately circular region around point, with specified radius.|
|entry_time||Query||String||Start time of parking in 'yyyy-mm-ddTHH:MMZ' format, should be UTC and end in the letter 'Z'. If omitted, current time is assumed. This parameter should only be used when the driver is inquiring about parking at a future time. This parameter can only be used for times in the near future and the precision of our prediction reduces for entry_times that are more than a few hours away. Historical queries are not supported.|
|duration||Query||Integer||Parking duration in minutes. If omitted, information is returned about the current parking availability.|
|limit||Query||Integer||Maximum number of elements to return. If the amount of elements is a concern, we recommend to reduce the radius as this will evenly fill a circle around the car. Use 'limit' has a hard stop to avoid getting overburdened with too many results. Using a larger radius with a low limit will result in gaps in the coverage shown because the results will be truncated and not some areas of the circle may be left empty.|
|locale||Query||String||The locale as defined by ISO 15897, default: en-US|