{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/open-mobility-foundation/main/json-schema/open-mobility-foundation-vehicle-schema.json", "title": "models/vehicle", "description": "Vehicle object in MDS.", "x-generated": "2026-10-09", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/open-mobility-foundation-mds-agency-openapi.yml#/components/schemas/vehicle", "type": "object", "x-stoplight": { "id": "e7es4zmeat7ai" }, "required": [ "device_id", "provider_id", "vehicle_id", "vehicle_type", "propulsion_types" ], "allOf": [ { "properties": { "device_id": { "$ref": "#/$defs/data-types_uuid", "description": "A unique device ID in UUID format." }, "provider_id": { "$ref": "#/$defs/data-types_uuid", "description": "A UUID for the Provider, unique within MDS. See MDS [provider list](https://github.com/openmobilityfoundation/mobility-data-specification/blob/main/providers.csv)." }, "data_provider_id": { "$ref": "#/$defs/data-types_uuid", "description": "If different than `provider_id`, a UUID for the data solution provider managing the data feed in this endpoint." }, "vehicle_id": { "$ref": "#/$defs/data-types_string", "description": "A unique vehicle identifier (visible code, license plate, etc), visible on the vehicle itself." }, "vehicle_type": { "$ref": "#/$defs/data-types_vehicle-type", "description": "The type of vehicle." }, "vehicle_attributes": { "type": "object" }, "propulsion_types": { "$ref": "#/$defs/data-types_propulsion-type-array", "description": "The type of propulsion; allows multiple values.", "minItems": 1 }, "accessibility_attributes": { "type": [ "array", "object" ] }, "battery_capacity": { "$ref": "#/$defs/data-types_integer-positive", "description": "Capacity of battery expressed as milliamp hours (mAh)." }, "fuel_capacity": { "$ref": "#/$defs/data-types_integer-positive", "description": "Capacity of fuel tank (liquid, solid, gaseous) expressed in liters." }, "maximum_speed": { "$ref": "#/$defs/data-types_integer-positive", "description": "Maximum speed (kph) possible with vehicle under normal, flat incline, smooth surface conditions. Applicable if the device has a built-in or intelligent speed limiter/governor." } } }, { "oneOf": [ { "$ref": "#/$defs/modes_car-share_vehicle" }, { "$ref": "#/$defs/modes_delivery-robots_vehicle" }, { "$ref": "#/$defs/modes_micromobility_vehicle" }, { "$ref": "#/$defs/modes_passenger-services_vehicle" } ] } ], "$defs": { "data-types_integer-positive": { "title": "data-types/integer-positive", "description": "An integer greater than or equal to 0.", "minimum": 0, "type": "integer", "x-stoplight": { "id": "nfkphjmpm8yay" } }, "data-types_iso-date": { "title": "data-types/iso-date", "description": "Date expressed as ISO 8601 `YYYY-MM-DD`; valid for dates in 1970 and later.", "pattern": "(19[789]\\d|[2-9]\\d{3})-(0[1-9]|1[02])-([12]\\d|0[1-9]|3[01])", "type": "string", "x-stoplight": { "id": "hx3fr01xgzhii" } }, "data-types_minimum-year": { "title": "data-types/minimum-year", "description": "Represents a minimum for fields that capture a year as an integer. Derived from Unix timestamp 0.", "minimum": 1970, "type": "integer", "x-stoplight": { "id": "fa7v7itv8mti4" } }, "data-types_propulsion-type": { "title": "data-types/propulsion-type", "description": "The allowed types of propulsion in MDS. Based off of `propulsion_type` in [GBFS vehicle_types](https://github.com/MobilityData/gbfs/blob/master/gbfs.md#vehicle_typesjson)", "enum": [ "human", "electric_assist", "electric", "combustion", "combustion_diesel", "hybrid", "hydrogen_fuel_cell", "plug_in_hybrid" ], "type": "string", "x-stoplight": { "id": "1ucdttnwhf2bo" } }, "data-types_propulsion-type-array": { "title": "data-types/propulsion-type-array", "description": "Array of propulsion types, allowing multiple values.", "items": { "$ref": "#/$defs/data-types_propulsion-type" }, "type": "array", "uniqueItems": true, "x-stoplight": { "id": "4ao4xw23z8wrf" } }, "data-types_string": { "title": "data-types/string", "description": "A length-limited string type.", "maxLength": 255, "pattern": "^(.*)$", "type": "string", "x-stoplight": { "id": "2vqv7166161kh" } }, "data-types_uuid": { "title": "data-types/uuid", "description": "A UUID used to uniquely identity an object.", "type": "string", "x-stoplight": { "id": "np9kodwmy2kqa" }, "format": "uuid", "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$" }, "data-types_vehicle-type": { "title": "data-types/vehicle-type", "description": "The allowed types of of vehicles in MDS. Based off of `form_factor` in [GBFS vehicle_types](https://github.com/MobilityData/gbfs/blob/master/gbfs.md#vehicle_typesjson), with some additional to support MDS modes.", "type": "string", "x-stoplight": { "id": "gbhhyditnvs5w" }, "enum": [ "bicycle", "bus", "cargo_bicycle", "car", "delivery_robot", "moped", "motorcycle", "scooter_standing", "scooter_seated", "truck", "other" ] }, "modes_car-share_accessibility-attributes": { "title": "modes/car-share/accessibility-attributes", "description": "Accessibility options definition for the `car-share` mode.", "type": "array", "x-stoplight": { "id": "e9mpudr8layzh" }, "uniqueItems": true, "items": { "type": "string", "enum": [ "wheelchair_accessible" ] } }, "modes_car-share_vehicle": { "title": "modes/car-share/vehicle", "description": "Vehicle definition for the `car-share` mode.", "type": "object", "x-stoplight": { "id": "ept949jym2d7l" }, "properties": { "accessibility_attributes": { "$ref": "#/$defs/modes_car-share_accessibility-attributes", "description": "The accessibility options available on a given vehicle. Required if available." }, "vehicle_attributes": { "type": "object", "description": "Many of these attributes come from fields in [GBFS vehicle_types](https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#vehicle_typesjson).", "additionalProperties": false, "required": [ "year", "make", "model", "color", "vin", "license_plate" ], "properties": { "year": { "$ref": "#/$defs/data-types_minimum-year" }, "make": { "$ref": "#/$defs/data-types_string" }, "model": { "$ref": "#/$defs/data-types_string" }, "color": { "$ref": "#/$defs/data-types_string" }, "vin": { "$ref": "#/$defs/data-types_string", "description": "The vehicle's Vehicle Identification Number." }, "placard_number": { "$ref": "#/$defs/data-types_string", "description": "The registered placard number of the vehicle." }, "license_plate": { "$ref": "#/$defs/data-types_string", "description": "The registered vehicle license/number/registration plate identifier on the vehicle." }, "inspection_date": { "$ref": "#/$defs/data-types_iso-date", "description": "The date of the last inspection of the vehicle in ISO 8601 `YYYY-MM-DD`." }, "snow_shovel": { "type": "boolean", "description": "Vehicle has a shovel for removing snow or ice from around vehicle or vehicle path." }, "snow_brush": { "type": "boolean", "description": "Vehicle has brushes for removing snow or ice from vehicle." }, "bike_rack": { "type": "boolean", "description": "Vehicle has car roof or trunk mounted bike rack." }, "park_access": { "type": "boolean", "description": "Vehicle has an access pass to a national/regional/municipal park system." }, "toll_transponder": { "type": "boolean", "description": "Vehicle has a toll transponder for national/regional toll system." }, "phone_charger": { "type": "boolean", "description": "Vehicle has a place to charge a cellphone." }, "sunshade": { "type": "boolean", "description": "Vehicle has a sunshade available (i.e. for windshield)." }, "cargo_volume_capacity": { "$ref": "#/$defs/data-types_integer-positive", "description": "Cargo volume available in the vehicle, expressed in liters. For cars, it corresponds to the space between the boot floor, including the storage under the hatch, to the rear shelf in the trunk." }, "cargo_load_capacity": { "$ref": "#/$defs/data-types_integer-positive", "description": "The capacity of the vehicle cargo space (excluding passengers), expressed in kilograms." }, "door_count": { "$ref": "#/$defs/data-types_integer-positive", "description": "The number of doors this vehicle type has." }, "wheel_count": { "$ref": "#/$defs/data-types_integer-positive", "description": "The number of doors this vehicle type has." }, "air_conditioning": { "type": "boolean", "description": "Vehicle has air conditioning." }, "gear_switch": { "type": "string", "enum": [ "automatic", "manual" ] }, "convertible": { "type": "boolean", "description": "Vehicle has a retractable roof." }, "cruise_control": { "type": "boolean", "description": "Vehicle has a cruise control system." }, "navigation": { "type": "boolean", "description": "Vehicle has a built-in navigation system." } } } } }, "modes_delivery-robots_accessibility-attributes": { "title": "modes/delivery-robots/accessibility-attributes", "description": "Accessibility options definition for the `delivery-robots` mode.", "type": "object", "x-stoplight": { "id": "zsnl5o3q9d0a0" }, "additionalProperties": false, "properties": { "audio_cue": { "type": "boolean", "description": "Is the device equipped with audio cues upon delivery." }, "visual_cue": { "type": "boolean", "description": "Is the device equipped with visual cues upon delivery." }, "remote_open": { "type": "boolean", "description": "Can the device door be remotely opened to retrieve cargo upon delivery." } } }, "modes_delivery-robots_vehicle": { "title": "modes/delivery-robots/vehicle", "description": "Vehicle definition for the `delivery-robots` mode.", "type": "object", "x-stoplight": { "id": "01xpq0lxoywf6" }, "properties": { "accessibility_attributes": { "$ref": "#/$defs/modes_delivery-robots_accessibility-attributes", "description": "The accessibility options available on a given delivery robot device. Required if available." }, "vehicle_attributes": { "type": "object", "additionalProperties": false, "properties": { "year": { "$ref": "#/$defs/data-types_minimum-year" }, "make": { "$ref": "#/$defs/data-types_string" }, "model": { "$ref": "#/$defs/data-types_string" }, "color": { "$ref": "#/$defs/data-types_string" }, "inspection_date": { "$ref": "#/$defs/data-types_iso-date", "description": "The date of the last inspection of the vehicle in ISO 8601 `YYYY-MM-DD`." }, "equipped_cameras": { "$ref": "#/$defs/data-types_integer-positive", "description": "The number of cameras equipped on device." }, "equipped_lighting": { "$ref": "#/$defs/data-types_integer-positive", "description": "The number of lights used to illuminate the environment on the the device." }, "wheel_count": { "$ref": "#/$defs/data-types_integer-positive", "description": "The number of wheels on the device." }, "width": { "$ref": "#/$defs/data-types_integer-positive", "description": "The width in meters of the device." }, "length": { "$ref": "#/$defs/data-types_integer-positive", "description": "The length in meters of the device." }, "height": { "$ref": "#/$defs/data-types_integer-positive", "description": "The height in meters of the device (minus flexible elements like flags)." }, "weight": { "$ref": "#/$defs/data-types_integer-positive", "description": "The weight in kilograms rounded up of the device not including cargo." }, "top_speed": { "$ref": "#/$defs/data-types_integer-positive", "description": "The theoretical top speed in meters per second of the device." }, "storage_capacity": { "$ref": "#/$defs/data-types_integer-positive", "description": "The volume in cubic centimeters of cargo space available not including any cargo." } } } } }, "modes_micromobility_accessibility-attributes": { "title": "modes/micromobility/accessibility-attributes", "description": "Accessibility options definition for the `micromobility` mode.", "type": "array", "x-stoplight": { "id": "15do56zc6v30i" }, "uniqueItems": true, "items": { "type": "string", "enum": [ "adaptive" ] } }, "modes_micromobility_vehicle": { "title": "modes/micromobility/vehicle", "description": "Vehicle definition for the `micromobility` mode.", "type": "object", "x-stoplight": { "id": "f0dry8u608trk" }, "properties": { "accessibility_attributes": { "$ref": "#/$defs/modes_micromobility_accessibility-attributes", "description": "The accessibility options available on a given vehicle. Required if available." }, "vehicle_attributes": { "type": "object", "additionalProperties": false, "properties": { "year": { "$ref": "#/$defs/data-types_minimum-year" }, "make": { "$ref": "#/$defs/data-types_string" }, "model": { "$ref": "#/$defs/data-types_string" } } } } }, "modes_passenger-services_accessibility-attributes": { "title": "modes/passenger-services/accessibility-attributes", "description": "Accessibility options definition for the `passenger-services` mode.", "type": "array", "x-stoplight": { "id": "62ab40s0bfzrw" }, "uniqueItems": true, "items": { "type": "string", "enum": [ "wheelchair_accessible" ] } }, "modes_passenger-services_vehicle": { "title": "modes/passenger-services/vehicle", "description": "Vehicle definition for the `passenger-services` mode.", "type": "object", "x-stoplight": { "id": "jlsmrsrzxthi6" }, "properties": { "accessibility_attributes": { "$ref": "#/$defs/modes_passenger-services_accessibility-attributes", "description": "The accessibility options available on a given vehicle. Required if available." }, "vehicle_attributes": { "type": "object", "additionalProperties": false, "properties": { "year": { "$ref": "#/$defs/data-types_minimum-year" }, "make": { "$ref": "#/$defs/data-types_string" }, "model": { "$ref": "#/$defs/data-types_string" }, "color": { "$ref": "#/$defs/data-types_string" }, "vin": { "$ref": "#/$defs/data-types_string", "description": "The vehicle's Vehicle Identification Number." }, "placard_number": { "$ref": "#/$defs/data-types_string", "description": "The registered placard number of the vehicle." }, "license_plate": { "$ref": "#/$defs/data-types_string", "description": "The registered vehicle license/number/registration plate identifier on the vehicle." }, "inspection_date": { "$ref": "#/$defs/data-types_iso-date", "description": "The date of the last inspection of the vehicle in ISO 8601 `YYYY-MM-DD`." } } } } } } }