models/stop
Stops describe vehicle trip start and end locations in a pre-designated physical place. They can vary from docking stations with or without charging, corrals with lock-to railings, or suggested parking areas marked with spray paint. Stops are used in both [Provider](../reference/provider.yaml) and [Agency](#) telemetry data.
JSON Schema
{
"$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-stop-schema.json",
"title": "models/stop",
"description": "Stops describe vehicle trip start and end locations in a pre-designated physical place. They can vary from docking stations\nwith or without charging, corrals with lock-to railings, or suggested parking areas marked with spray paint.\nStops are used in both [Provider](../reference/provider.yaml) and [Agency](#) telemetry data.",
"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/stop",
"type": "object",
"x-stoplight": {
"id": "m0f816guajcjj"
},
"allOf": [
{
"required": [
"name",
"location",
"status",
"capacity",
"num_vehicles_available",
"num_vehicles_disabled"
],
"properties": {
"name": {
"$ref": "#/$defs/data-types_string",
"description": "Name of the stop."
},
"location": {
"$ref": "#/$defs/data-types_gps",
"description": "Simple centerpoint location of the Stop. The use of the optional `geography_id` is recommended to provide more detail."
},
"capacity": {
"$ref": "#/$defs/data-types_vehicle-type-counts",
"description": "Number of total places per [`vehicle_type`](./data-types/vehicle-type.yaml)."
},
"provider_id": {
"$ref": "#/$defs/data-types_uuid",
"description": "UUID for the Provider managing this Stop. Null/undefined if managed by an Agency.\nSee MDS [provider list](https://github.com/openmobilityfoundation/mobility-data-specification/blob/main/providers.csv)."
},
"data_provider_id": {
"$ref": "#/$defs/data-types_uuid",
"description": "UUID for the data provider managing the data coming from this stop.\nNull/undefined if managed by an agency or a provider. Null/undefined if managed by an Agency.\nSee MDS [provider list](https://github.com/openmobilityfoundation/mobility-data-specification/blob/main/providers.csv)."
},
"geography_id": {
"$ref": "#/$defs/data-types_uuid",
"description": "Pointer to the [Geography](#) that represents the Stop geospatially via Polygon or MultiPolygon."
},
"region_id": {
"$ref": "#/$defs/data-types_string",
"description": "ID of the region where station is located. See [GBFS Station Information](https://github.com/NABSA/gbfs/blob/master/gbfs.md#station_informationjson)."
},
"short_name": {
"$ref": "#/$defs/data-types_string",
"description": "Abbreviated stop name."
},
"address": {
"$ref": "#/$defs/data-types_string",
"description": "Postal address (useful for directions)."
},
"post_code": {
"$ref": "#/$defs/data-types_string",
"description": "Postal code."
},
"cross_street": {
"$ref": "#/$defs/data-types_string",
"description": "Cross street of where station is located."
},
"parent_stop": {
"$ref": "#/$defs/data-types_uuid",
"description": "Describe a basic hierarchy of stops (e.g. a stop inside a greater stop)."
},
"image_url": {
"type": "string",
"format": "uri",
"description": "Link to an image, photo, or diagram of the stop. Could be used by providers to help riders find or use the stop."
}
}
},
{
"$ref": "#/$defs/mutable-stop"
}
],
"$defs": {
"data-types_gps": {
"title": "data-types/gps",
"properties": {
"altitude": {
"description": "Altitude above mean sea level in meters.",
"type": "number"
},
"heading": {
"description": "Degrees - clockwise starting at 0 degrees at true North.",
"type": "number"
},
"horizontal_accuracy": {
"description": "Horizontal accuracy in meters.",
"type": "number"
},
"lat": {
"description": "Latitude coordinate.",
"maximum": 90,
"minimum": -90,
"type": "number"
},
"lng": {
"description": "Longitude coordinate.",
"maximum": 180,
"minimum": -180,
"type": "number"
},
"satellites": {
"$ref": "#/$defs/data-types_integer-positive",
"description": "Number of GPS or GNSS satellites."
},
"speed": {
"description": "Estimated speed in meters / sec as reported by the GPS chipset.",
"type": "number"
},
"vertical_accuracy": {
"description": "Vertical accuracy in meters.",
"type": "number"
}
},
"required": [
"lat",
"lng"
],
"type": "object",
"x-stoplight": {
"id": "8aooo5ag7x7vh"
}
},
"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_string": {
"title": "data-types/string",
"description": "A length-limited string type.",
"maxLength": 255,
"pattern": "^(.*)$",
"type": "string",
"x-stoplight": {
"id": "2vqv7166161kh"
}
},
"data-types_timestamp": {
"title": "data-types/timestamp",
"description": "Integer milliseconds since Unix epoch.",
"minimum": 1514764800000,
"multipleOf": 1,
"type": "number",
"x-stoplight": {
"id": "vliol1hqlxw6y"
}
},
"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_uuid-array": {
"title": "data-types/uuid-array",
"description": "Array of UUID.",
"type": "array",
"x-stoplight": {
"id": "v932clitbqv31"
},
"uniqueItems": true,
"items": {
"$ref": "#/$defs/data-types_uuid"
}
},
"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"
]
},
"data-types_vehicle-type-counts": {
"title": "data-types/vehicle-type-counts",
"description": "A dictionary of vehicle counts, keyed by [`vehicle_type`](./vehicle-type.yaml).",
"type": "object",
"x-stoplight": {
"id": "isobk3kg3rr8r"
},
"additionalProperties": false,
"propertyNames": {
"$ref": "#/$defs/data-types_vehicle-type"
},
"patternProperties": {
"": {
"$ref": "#/$defs/data-types_integer-positive"
}
}
},
"mutable-stop": {
"title": "models/mutable-stop",
"description": "The fields of a Stop that can be changed in the Agency API.",
"type": "object",
"x-stoplight": {
"id": "xs6ehwfn5b629"
},
"required": [
"stop_id",
"last_updated"
],
"properties": {
"stop_id": {
"$ref": "#/$defs/data-types_uuid",
"description": "UUID for the stop."
},
"last_updated": {
"$ref": "#/$defs/data-types_timestamp",
"description": "Date/Time of the the stop was last updated."
},
"status": {
"type": "object",
"required": [
"is_installed",
"is_renting",
"is_returning"
],
"properties": {
"is_installed": {
"type": "boolean",
"description": "See GBFS [station_status.json](https://github.com/NABSA/gbfs/blob/master/gbfs.md#station_statusjson)"
},
"is_renting": {
"type": "boolean",
"description": "See GBFS [station_status.json](https://github.com/NABSA/gbfs/blob/master/gbfs.md#station_statusjson)"
},
"is_returning": {
"type": "boolean",
"description": "See GBFS [station_status.json](https://github.com/NABSA/gbfs/blob/master/gbfs.md#station_statusjson)"
}
},
"description": "The status of the stop."
},
"num_vehicles_available": {
"$ref": "#/$defs/data-types_vehicle-type-counts",
"description": "How many vehicles are available per [`vehicle_type`](./data-types/vehicle-type.yaml) at this stop?."
},
"num_vehicles_disabled": {
"$ref": "#/$defs/data-types_vehicle-type-counts",
"description": "How many vehicles are unavailable/reserved per [`vehicle_type`](./data-types/vehicle-type.yaml) at this stop?."
},
"rental_methods": {
"type": "array",
"uniqueItems": true,
"items": {
"enum": [
"key",
"creditcard",
"paypass",
"applepay",
"androidpay",
"transitcard",
"accountnumber",
"phone"
]
},
"description": "List of payment methods accepted at stop, see [GBFS Rental Methods](https://github.com/NABSA/gbfs/blob/master/gbfs.md#station_informationjson)."
},
"num_places_available": {
"$ref": "#/$defs/data-types_vehicle-type-counts",
"description": "How many places are free to be populated with vehicles per [`vehicle_type`](./data-types/vehicle-type.yaml) at this stop?"
},
"num_places_disabled": {
"$ref": "#/$defs/data-types_vehicle-type-counts",
"description": "How many places are disabled and unable to accept vehicles per [`vehicle_type`](./data-types/vehicle-type.yaml) at this stop?"
},
"devices": {
"$ref": "#/$defs/data-types_uuid-array",
"description": "List of `device_id` for [vehicles](./vehicle.yaml) currently at this stop."
}
}
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
curl "https://apis.io/api/v1/json-schemas/open-mobility-foundation-stop"
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.