Skip to content

Data formats

Kind Format Example
Money Integer, in cents 4599000 = $45,990.00
Timestamp ISO 8601, UTC, microseconds 2026-10-28T16:46:09.522482+00:00
Date YYYY-MM-DD 2026-11-01
ID UUID v4 string 9b1d4e7a-2c3f-4a5b-8d6e-7f8091a2b3c4
Distance Kilometres odometer: 122011
Battery kWh useable_battery: 64
Booleans true / false is_sold: false
Pricing code <country>_<state> or <country> AU_VIC, NZ
Currency ISO 4217 AUD, NZD, EUR
Time zone IANA name Australia/Sydney

Every money value is an integer in the currency’s smallest unit (cents). That covers vehicle prices, line items, min_price, max_price, deposits, valuations and order totals. Divide by 100 to display, and round up to whole dollars for advertised prices. See Prices.

The currency comes from the pricing code: AUD in Australia, NZD in New Zealand.

  • Timestamps (created_at, updated_at, scheduled_at…) are UTC with an offset. Parse them with any ISO 8601 parser. Keep the full string, microseconds included, if you use it as a sync cursor.
  • Dates (available_from, build_date, compliance_date, registration_expiry_date) have no time or zone. Don’t convert them through Date in JavaScript, which would shift them to UTC midnight.
  • To display a time, convert it to the location’s timezone, not your server’s.
  • In filters you can compare against "now()": available_from: { _lte: "now()" }. A timestamp without an offset is read as UTC.

Decimal columns (odometer, production_year, min_price) are JSON numbers, but can arrive as 122011.0 rather than 122011. Round or cast them before you show or compare them. In variables their type is numeric, not Int: query ($km: numeric!) { … odometer: { _lt: $km } … }.

An unknown or wrong-case pricing code (au_nsw) returns null from pricing_config(path: …), not an error. Codes are upper case.

make, model, badge, body_type, fuel_type, transmission and colour are free text as the dealer entered or imported them, so expect Electric and electric, or SUV and Wagon. Match with _ilike, and normalise before you build filter menus. vehicle_specification holds the manufacturer’s normalised specification when a vehicle has been matched to one.

Field Values
stocked_vehicles.condition new, used, demo
stocked_vehicles.listing_type retail, private
stocked_vehicles.generic_colour black, blue, brown, green, grey, orange, pink, purple, red, silver, white, yellow
assets.classification Front, Front34, Side, Rear34, Rear, Interior, Wheel, Other

Write enum values without quotes inside a query (condition: { _eq: used }), and as plain strings in variables.

Statuses such as moments.stage, test_drives.stage and assets.placement are text, not enums. Dealers can add their own, so handle values you don’t recognise.

Columns such as pricing_config, address, utm_data, values and opening_hours are returned as JSON objects, not strings. Pick a key with path (for example pricing_config(path: "AU_NSW")), and filter with _contains or _has_key.

A field with no value is null, not omitted. Treat null and empty strings the same for text such as alt and badge.