Common questions that exist across all the INRIX Parking products
Rates and Restrictions
How are rates and restrictions represented in your API.
Option 1 - The Rate Card
The rate_card field is the most user friendly option. It displays the rate card exactly how the user would visualize it. The data is provided in an array in which each line represents the rates and/or restrictions. For OffStreet lots, there is an additional hrs_of_operation; this field is not included in OnStreet because parking is assumed to be accessible 24 hours a day (even if it is not allowed).
In displaying the rate card, we always attempt to match the actual, real-world signage as close as possible. Decisions such as as whether or not tax is included, which currency denomination, etc. we defer to local knowledge. In order to match to signage we will sometimes choose verbal proximity over consistency:
Option 2 - Calculated Rates
The calculated_rate field is the most simple option. In order to activate it you must pass an entry_time and duration field to the API. In returns a single numeric value representing the rate.
calculated_rate / is_open | NULL | EMPTY LIST | RATE = ZERO | RATE >= ZERO |
TRUE | Unknown (no data) | n/a | Lot is open. Parking is free | Lot is open. Parking is paid |
FALSE | Unknown (no data) | Lot is Closed | n/a | n/a |
Note: If a series of calculated rates are desired in a single API request (such as 1 hour, 2 hours, 4 hours, 8 hours), you can pass a a pipe-delimited array to the duration field. In addition a rate_type field is supported that can provide 3 different flavors of this rate (B - Base, M - Monthly, R - Reservable/Prepay/MobilePayment)
Option 3 - Structure Rates and Restrictions
The structured_rate field is the most complex option. It describes the rates written in a structured format. It is worth noting that this representation is for advanced API consumers only and INRIX does NOT recommend its use. The structured_rate field answers three important questions: Can you park?, How much will it cost? and How long can you park for? time_in combined with dow_start and dow_end determine, based on current time if you are able to park time_out can then be used to determine duration of parking increment and rate determine how much it will cost to park for said duration
Rate Structure
- time_in = Car can enter during this time range (defined in local time range, ISO format)
- time_out = Car can exit during this time range (defined in local time range, ISO format)
- dow = Pipe delimited days of week that rate applied (defined in ISO numerical format)
- rate = Numerical rate (local currency - float - includes surcharges such as taxes and fees)
- increment = Duration of rate (minutes - number - integer)
- min = Minimum length of stay (minutes - number - integer)
- max = Maximum length of stay (minutes - number - integer)
- repeats = Does rate repeat (boolean - each vs fixed, ie: each 15 min => True)
- additional = If rate is additive, define base (minutes - number - integer)
- alternates = “Every 1st and 3rd week” type restrictions that are common in on the east coast of the US (week of number - array of integers)
- restrictions = A special type of restriction (char)
- ‘R’ = Residential Permit Required
- Other restrictions such as ‘C’ (Commercial), ‘H’ (Handicap), ‘G’ (Government) are available upon request
Localization
How does the “locale” parameter changes the response?
Text based fields such as Rate Card and Hours of Operation are translated.
Do we need to use any locale other than the default (en-US)?
Depends on your use case. The following are all the other locales supported:
- da
- de
- en_GB
- es
- fi
- fr
- it
- nl
- no
- pl
- pt
- pt_BR
- ru
- sv
- tr
Amenities
The “amenities” field contains objects, identified by integers. What are all the options?
[
{
'id': 1,
'name': 'Max Weight',
'value': math.trunc(lot.f_max_weight_lbs),
'metric': lot.f_max_weight_lbs * 0.453592,
},
{
'id': 2,
'name': 'Max Height',
'value': math.trunc(lot.f_clearance_height_in),
'metric': lot.f_clearance_height_in * 0.0254,
},
{
'id': 3,
'name': 'Zip Car Stations',
'value': lot.b_zip_car
},
{
'id': 4,
'name': 'EV Chargers',
'value': lot.b_ev_charger
},
{
'id': 5,
'name': 'Car Wash',
'value': lot.b_car_wash
},
{
'id': 6,
'name': 'Airport Shuttle',
'value': lot.b_airport_shuttle
},
{
'id': 7,
'name': 'Handicap Spaces',
'value': lot.i_spaces_handicap
},
{
'id': 8,
'name': 'Validation Available',
'value': lot.b_validation_avail
},
{
'id': 9,
'name': 'Covered Parking Available',
'value': True
},
{
'id': 10,
'name': 'Open 24/7',
'value': True
},
{
'id': 11,
'name': 'In and Out Allowed',
'value': lot.b_in_out_privileges
},
{
'id': 12,
'name': 'Printed Pass Required',
'value': lot.b_printed_pass_required
},
{
'id': 13,
'name': 'Unobstructed Parking',
'value': lot.b_unobstructed_parking
},
{
'id': 14,
'name': 'RV Parking',
'value': lot.b_rv_parking
},
{
'id': 15,
'name': 'Tailgating Permitted',
'value': lot.b_tailgating_permitted
},
{
'id': 16,
'name': 'Restrooms',
'value': lot.b_restrooms
},
{
'id': 17,
'name': 'Airport/Venue Official',
'value': lot.b_airport_venue_official
},
{
'id': 18,
'name': 'Credit Cards Accepted',
'value': True
},
{
'id': 19,
'name': 'Over 7ft. Clearance',
'value': True
},
{
'id': 20,
'name': 'Women and Family Parking',
'value': True
},
{
"id": 21,
"name": "Semi Parking",
"value": true
},
{
"id": 22,
"name": "Video Monitoring",
"value": true
},
{
"id": 23,
"name": "Bicycle Parking",
"value": true
},
{
"id": 24,
"name": "On-Site Elevator",
"value": true
},
{
"id": 25,
"name": "Parking Lighting",
"value": true
},
{
"id": 26,
"name": "Pay & Display",
"value": true
},
{
"id": 27,
"name": "Guidance System",
"value": true
},
]
What about electric vehicle (EV) charging stations? Additional info is returned within ev_stations
.
"ev_stations": [
{
"level": null,
"minVolt": null,
"maxVolt": 480,
"minAmp": null,
"maxAmp": 250,
"rateCard": null,
"url": null,
"phone": null,
"restriction": "PRIVATE",
"plugs": {
"teslaSuper": 1,
"teslaRoadster": 4
},
"pmt_types": [
"MC/Visa"
]
}
],
What about LPG/Gas cars, if they are allowed to drive into a parking lot?
Not currently supported
Why does the API returns location information with Longitude before Latitude?
Cartesian coordinates are common in science and engineering. Our first customers preferred this approach and it has stuck ever since.
In “peps”, only the “IN” value of the “pepType” field is used, according to the response data I verified. Please list the other possible type identifier strings, if any.
OUT is also available but rare
Please describe the “pepAz” field, e.g. in degrees? clockwise/counterclockwise? from North? direction of the car(in/out)/door?
Degrees clockwise from entrance
Only “Point” is received as the value of “type” in the “point” array. Please either confirm or list other possible values, and define their functionality.
Point is the only one
Only “NAVIGATION” and “LEGAL” are received as the value of “type” in the “navigationAddress” and “buildingAddress” arrays correspondingly. Please either confirm or list other possible values, and define their functionality.
These are the only two:
- Navigation address is the reverse geocoded address of the entrance point
- Legal address is the official mailing address of the lot
Please describe the usage of the costIndex field. Actually I have seen values: 1, 2 and 3.
Used for relatively cost. Similar to the $, \(,\)$ you see on Yelp.
For example, a €10 lot in Paris might be a 1 because Paris is relatively expensive but it might be 3 in Lyon because it’s comparatively more expensive.
Reservations and Payment
How does proof of payment work? In other words, I pay in the app, how do I get out of the parking structure?
Enforcement methods vary by lot. Some lots use LPR, some use QR Codes, some use a pin, etc.
How is overstay handled? Can we extend an existing reservation (maybe start a new one back2back with the one before)?
On the roadmap but not supported at this time. Overstay is handled by paying the difference manually upon exiting the lot.
In the On and Off Street APIs the “reservations” field is an array of objects. Please describe the usage and type of that object’s fields, and describe, which one is mandatory/optional.
This field provides HTML based reservation page. This is the easiest path to quickly deploying parking reservations and payments. If you want a much more integrated experience. Use API based Reservation/Payment product instead.
What test cards can I use to make reservations:
- In Development & Beta Environments: the following cards work; https://stripe.com/docs/testing
- In Production: you’ll need to use a real credit card to test transactions
Geography
Polyline
- Polyline is the generally accepted standard for line and polygon encoding for map information used by Google, Apple, MapBox, and most other leading mapping providers.
- Polyline encoding is a compression algorithm that stores a series of coordinates in a single string, after the first point only offsets need to be stored which conserves space and simplifies data storage.
- Many mapping providers (including Google) use Polyline 5 encoding which extends to 5th decimal place precision in Lat/Lng. We are currently extending many of our products to Polyline 6, using 6th decimal place precision for increased accuracy in presented data.
- More information on the algorithm and encoding itself can be found here.
OpenLR
- We have OpenLR and other mapping referencing, if needed.
- We also can, if necessary, support map specific referencing.
- The
start
andend
fields in the API represent the metric offsets of the segments against the base map segments.