Overview
Updated Nov 4, 2026
Fairspec Cardealer provides libraries for TypeScript, Python and Rust. Each one extends the matching Fairspec base library, so a cardealer dataset is also a valid Fairspec dataset, and all three pass the same conformance suite.
Libraries
All three are released together under one version, the same version as the standard.
What they export
The same names in every language:
Dataset- a whole cardealer dataset: its$schemaand itsdealer,facilityandcarresourcesDealerResource,FacilityResource,CarResourceand their unionCardealerResourceDealer,Facility,Car- a single table rowCategory,Color,Door,FacilityType,Fuel,Gearbox- the enumerationsVERSION- the standard version the library implements
What they check
A library accepts a dataset only when:
$schemais the dataset profile URL of the library's ownVERSION, and every resource'stableSchemais the matching table schema URL- there is at least one resource, a
dealerresource holds exactly one row, and every other resource at least one - every row has its required columns, enumerated columns hold a listed value, and numbers are
in range (
priceandmileagenot negative,yearfrom 1900,monthfrom 1 to 12)
They are deliberately strict about types: no value is coerced ("45990" is not a number),
an integer column accepts 2023 or 2023.0 but not 2023.5, and an optional column may be
left out but not set to null.
Two things are left to a Fairspec validator: format (that email and url look like an
email and a URL) and the rules between rows, such as a car's facilityId pointing to an
existing facility id. Validate against the published
profile and schemas when you need the full check.
Versions
A library validates datasets of its own version only, so pin it to the standard version your
datasets declare. Build $schema and tableSchema from VERSION rather than writing the
number by hand, and upgrading the library upgrades the URLs with it.
Created with ❤ and Livemark