{"APIS":{"internal.stibmivb-connector":{"apiConnectorEndpoint":{"apiType":"http","path":"/api/connector/:filename.json","dependencies":["redis"],"openapi":{"openapi":"3.1.0","info":{"title":"BMC connector api","description":"BMC connector api","version":"3.1.0"},"paths":{"/api/connector/{filename}.json":{"post":{"summary":"Store JSON data in Redis","description":"Store JSON data in Redis with a filename as the key","operationId":"connector","tags":["Connector"],"parameters":[{"name":"filename","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-zA-Z0-9_-]+$"},"description":"The filename (without .json extension) to use as Redis key"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"JSON data to store"}}}},"responses":{"200":{"description":"Data stored successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"filename":{"type":"string"}},"required":["success","message","filename"]}}}},"400":{"description":"Bad request - invalid filename or data","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden - filename not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}}}}}},"httpVerb":"post","middlewares":[null],"apim":{"path":"/api/connector","serviceUrl":"http://localhost:80/api/connector"}}},"internal.routing.stibmivb-v1":{"apiRoutingTripPlannerRecipeStibmivbRecipeV1Endpoint":{"apiType":"http","path":"/api/routing/trip-planner/recipe/stibmivb-v1","dependencies":["otp2","pgPool","gtfsTranslationsCache"],"httpVerb":"get","openapi":{"openapi":"3.1.0","info":{"title":"BMC trip planner api","description":"BMC trip planner api","version":"9.86.51"},"components":{"schemas":{"HTTP400Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"cause":{"type":"object","properties":{"id":{"type":"number"},"message":{"type":"string"},"msg":{"type":"string"}}}}}},"example":{"error":{"message":"Mock message for error 409","cause":{"id":409,"message":"Mock message for error 409","msg":"Mock msg for error 409"}}}},"HTTP400InvalidParamError":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message","parameter"],"properties":{"message":{"type":"string","example":"Invalid someParameterName parameter. Supported values are: foo, bar."},"parameter":{"type":"string","example":"someParameterName"},"acceptedValues":{"type":"array","items":{"type":"string"},"example":["foo","bar"]},"acceptedFormats":{"type":"array","items":{"type":"string"}}}}}},"RoutingResult":{"type":"object","properties":{"plan":{"type":"object","properties":{"itineraries":{"type":"array","items":{"type":"object","properties":{"_source":{"type":"string","enum":["bemobile","bmc-otp1","bmc-otp2"]},"legs":{"type":"array","items":{"type":"object","properties":{"_source":{"type":"string","enum":["bemobile","bmc-otp1","bmc-otp2"]},"elevationGained":{"type":"number"},"elevationLost":{"type":"number"},"tooSloped":{"type":"boolean"},"walkDistance":{"type":"number"},"waitingTime":{"type":"number"}}}}}}}}}}}}},"paths":{"/api/routing/trip-planner/recipe/stibmivb-v1":{"get":{"operationId":"/api/routing/trip-planner/recipe/stibmivb-v1","tags":["routing"],"parameters":[{"name":"fromPlace","in":"query","required":true,"description":"The origin of the trip. Format: \"lat,lon\"","schema":{"type":"string"},"example":"50.847329,4.362583"},{"name":"toPlace","in":"query","required":true,"description":"The destination of the trip. Format: \"lat,lon\"","schema":{"type":"string"},"example":"50.859419353931806,4.358989336967956"},{"name":"arriveBy","in":"query","required":false,"description":"Whether the trip should depart or arrive at the specified date and time. Supported value are true|false on|off.","schema":{"type":"string"}},{"name":"date","in":"query","required":false,"description":"The date that the trip should depart (or arrive, for requests where arriveBy is true). The date is assumed to be in the local time for Europe/Brussels timezone. Use either datetime or the combination of date+time. If datetime is present it will take precedence over date+time. Example: `2025-10-30`","schema":{"type":"string","format":"YYYY-MM-DD"}},{"name":"datetime","in":"query","required":false,"description":"The datetime that the trip should depart (or arrive, for requests where arriveBy is true). An ISO 8601 string (`YYYY-MM-DDTHH:MM:SSZ`, `YYYY-MM-DDTHH:MM:SS.mmmZ`) or a timestamp in milliseconds (ms since epoch ie `1761831121088`). Use either datetime or the combination of date+time. If datetime is present it will take precedence over date+time. Example: `2025-10-30T13:32:01.088Z`","schema":{"type":"string","format":"date-time"}},{"name":"time","in":"query","required":false,"description":"The time that the trip should depart (or arrive, for requests where arriveBy is true). The time is assumes to be in the local time for Europe/Brussels timezone. Use either datetime or the combination of date+time. If datetime is present it will take precedence over date+time. Example: `13:32`","schema":{"type":"string","format":"hh:mm:?s?s?"}},{"name":"locale","in":"query","required":false,"description":"In which language should results be returned when translation are available.","schema":{"enum":["de","en","fr","nl"],"type":"string"}},{"name":"bannedAgencies","in":"query","required":false,"description":"Public transport agencies to ban from the results. Accepted values are `delijn`, `nmbssncb`, `stibmivb`, `tec`.","schema":{"type":"array","items":{"type":"string","enum":["delijn","nmbssncb","stibmivb","tec"]}},"style":"form","explode":true},{"name":"walkSpeed","in":"query","required":false,"description":"walk speed to use for routing. Defaults to 1.33 meter per second.","schema":{"type":"number"}},{"name":"waitReluctance","in":"query","required":false,"description":"An integer between 1 and 10 if present.","schema":{"type":"number"}},{"name":"walkReluctance","in":"query","required":false,"description":"An integer between 1 and 10 if present.","schema":{"type":"number"}},{"name":"maxTransfers","in":"query","required":false,"description":"Max amount of transfers allowed per journey.","schema":{"type":"number"}},{"name":"wheelchair","in":"query","required":false,"description":"Whether the trip must be wheelchair accessible. Supported value are true|false on|off","schema":{"type":"string"}},{"name":"minTransferTime","in":"query","required":false,"description":"The minimum time, in seconds, between successive trips on different vehicles. This is designed to allow for imperfect schedule adherence. This is a minimum; transfers over longer distances might use a longer time.","schema":{"type":"number"}},{"name":"mode","in":"query","required":false,"description":"List of transport modes to use for routing. Accepted values are `BUS`, `METRO`, `RAIL`, `TRAM`.","schema":{"type":"array","items":{"type":"string","enum":["BUS","METRO","RAIL","TRAM"]}},"style":"form","explode":true},{"name":"pageCursors","description":"Page cursor for pagination. A Json object stringified. the key that you can use will come the original response.\n\n`{  \"sole_query\": \"_GQP_PAGING_CURSOR_\"}`","in":"query","required":false,"schema":{"type":"string"}},{"name":"routingProfile","in":"query","required":false,"schema":{"type":"string","enum":["transit","multimodal","car"]},"example":"transit"}],"summary":"BMC trip planner api","description":"BMC trip planner api","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoutingResult"}}}}}}}}}}},"internal.routing.tec-v1":{"apiRoutingTripPlannerRecipeTecRecipeV1Endpoint":{"apiType":"http","path":"/api/routing/trip-planner/recipe/tec-v1","dependencies":["otp2","pgPool","gtfsTranslationsCache"],"httpVerb":"get","openapi":{"openapi":"3.1.0","info":{"title":"BMC trip planner api","description":"BMC trip planner api","version":"9.86.51"},"components":{"schemas":{"HTTP400Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"cause":{"type":"object","properties":{"id":{"type":"number"},"message":{"type":"string"},"msg":{"type":"string"}}}}}},"example":{"error":{"message":"Mock message for error 409","cause":{"id":409,"message":"Mock message for error 409","msg":"Mock msg for error 409"}}}},"HTTP400InvalidParamError":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message","parameter"],"properties":{"message":{"type":"string","example":"Invalid someParameterName parameter. Supported values are: foo, bar."},"parameter":{"type":"string","example":"someParameterName"},"acceptedValues":{"type":"array","items":{"type":"string"},"example":["foo","bar"]},"acceptedFormats":{"type":"array","items":{"type":"string"}}}}}},"RoutingResult":{"type":"object","properties":{"plan":{"type":"object","properties":{"itineraries":{"type":"array","items":{"type":"object","properties":{"_source":{"type":"string","enum":["bemobile","bmc-otp1","bmc-otp2"]},"legs":{"type":"array","items":{"type":"object","properties":{"_source":{"type":"string","enum":["bemobile","bmc-otp1","bmc-otp2"]},"elevationGained":{"type":"number"},"elevationLost":{"type":"number"},"tooSloped":{"type":"boolean"},"walkDistance":{"type":"number"},"waitingTime":{"type":"number"}}}}}}}}}}}}},"paths":{"/api/routing/trip-planner/recipe/tec-v1":{"get":{"operationId":"/api/routing/trip-planner/recipe/tec-v1","tags":["routing"],"parameters":[{"name":"fromPlace","in":"query","required":true,"description":"The origin of the trip. Format: \"lat,lon\"","schema":{"type":"string"},"example":"50.847329,4.362583"},{"name":"toPlace","in":"query","required":true,"description":"The destination of the trip. Format: \"lat,lon\"","schema":{"type":"string"},"example":"50.859419353931806,4.358989336967956"},{"name":"arriveBy","in":"query","required":false,"description":"Whether the trip should depart or arrive at the specified date and time. Supported value are true|false on|off.","schema":{"type":"string"}},{"name":"date","in":"query","required":false,"description":"The date that the trip should depart (or arrive, for requests where arriveBy is true). The date is assumed to be in the local time for Europe/Brussels timezone. Use either datetime or the combination of date+time. If datetime is present it will take precedence over date+time. Example: `2025-10-30`","schema":{"type":"string","format":"YYYY-MM-DD"}},{"name":"datetime","in":"query","required":false,"description":"The datetime that the trip should depart (or arrive, for requests where arriveBy is true). An ISO 8601 string (`YYYY-MM-DDTHH:MM:SSZ`, `YYYY-MM-DDTHH:MM:SS.mmmZ`) or a timestamp in milliseconds (ms since epoch ie `1761831121088`). Use either datetime or the combination of date+time. If datetime is present it will take precedence over date+time. Example: `2025-10-30T13:32:01.088Z`","schema":{"type":"string","format":"date-time"}},{"name":"time","in":"query","required":false,"description":"The time that the trip should depart (or arrive, for requests where arriveBy is true). The time is assumes to be in the local time for Europe/Brussels timezone. Use either datetime or the combination of date+time. If datetime is present it will take precedence over date+time. Example: `13:32`","schema":{"type":"string","format":"hh:mm:?s?s?"}},{"name":"locale","in":"query","required":false,"description":"In which language should results be returned when translation are available.","schema":{"enum":["de","en","fr","nl"],"type":"string"}},{"name":"bannedAgencies","in":"query","required":false,"description":"Public transport agencies to ban from the results. Accepted values are `delijn`, `nmbssncb`, `stibmivb`, `tec`.","schema":{"type":"array","items":{"type":"string","enum":["delijn","nmbssncb","stibmivb","tec"]}},"style":"form","explode":true},{"name":"walkSpeed","in":"query","required":false,"description":"walk speed to use for routing. Defaults to 1.33 meter per second.","schema":{"type":"number"}},{"name":"waitReluctance","in":"query","required":false,"description":"An integer between 1 and 10 if present.","schema":{"type":"number"}},{"name":"walkReluctance","in":"query","required":false,"description":"An integer between 1 and 10 if present.","schema":{"type":"number"}},{"name":"maxTransfers","in":"query","required":false,"description":"Max amount of transfers allowed per journey.","schema":{"type":"number"}},{"name":"wheelchair","in":"query","required":false,"description":"Whether the trip must be wheelchair accessible. Supported value are true|false on|off","schema":{"type":"string"}},{"name":"minTransferTime","in":"query","required":false,"description":"The minimum time, in seconds, between successive trips on different vehicles. This is designed to allow for imperfect schedule adherence. This is a minimum; transfers over longer distances might use a longer time.","schema":{"type":"number"}},{"name":"mode","in":"query","required":false,"description":"List of transport modes to use for routing. Accepted values are `BUS`, `METRO`, `RAIL`, `TRAM`.","schema":{"type":"array","items":{"type":"string","enum":["BUS","METRO","RAIL","TRAM"]}},"style":"form","explode":true},{"name":"pageCursors","description":"Page cursor for pagination. A Json object stringified. the key that you can use will come the original response.\n\n`{  \"sole_query\": \"_GQP_PAGING_CURSOR_\"}`","in":"query","required":false,"schema":{"type":"string"}},{"name":"routingProfile","in":"query","required":false,"schema":{"type":"string","enum":["transit","multimodal","car"]},"example":"transit"}],"summary":"BMC trip planner api","description":"BMC trip planner api","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoutingResult"}}}}}}}}}}},"gbfs":{"apiGbfsFeed3EnFreeBikeStatusJsonEndpoint":{"apiType":"http","path":"/api/gbfs/feed/2.3/en/:agency/free_bike_status.json","dependencies":["pgPool"],"httpVerb":"get","openapi":{"openapi":"3.1.0","info":{"title":"BMC gbfs api","description":"BMC gbfs api","version":"3.1.0"},"components":{"schemas":{"HTTP400Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"cause":{"type":"object","properties":{"id":{"type":"number"},"message":{"type":"string"},"msg":{"type":"string"}}}}}},"example":{"error":{"message":"Mock message for error 409","cause":{"id":409,"message":"Mock message for error 409","msg":"Mock msg for error 409"}}}},"HTTP400InvalidParamError":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message","parameter"],"properties":{"message":{"type":"string","example":"Invalid someParameterName parameter. Supported values are: foo, bar."},"parameter":{"type":"string","example":"someParameterName"},"acceptedValues":{"type":"array","items":{"type":"string"},"example":["foo","bar"]},"acceptedFormats":{"type":"array","items":{"type":"string"}}}}}},"GbfsManifest":{"description":"An index of gbfs.json URLs for each GBFS data set produced by a publisher. A single instance of this file should be published at a single stable URL, for example: https://example.com/gbfs/manifest.json.","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in RFC3339 format.","type":"string","format":"date-time"},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"type":"object","properties":{"datasets":{"description":"An array of objects, each containing the keys below.","type":"array","items":{"type":"object","properties":{"system_id":{"description":"The system_id from system_information.json for the corresponding data set(s).","type":"string"},"versions":{"description":"Contains one object, as defined below, for each of the available versions of a feed. The array MUST be sorted by increasing MAJOR and MINOR version number.","type":"array","items":{"type":"object","properties":{"version":{"description":"The semantic version of the feed in the form X.Y","type":"string","enum":["1.0","1.1","2.0","2.1","2.2","2.3","3.0"]},"url":{"description":"URL of the corresponding gbfs.json endpoint","type":"string","format":"uri"}},"required":["version","url"]}}},"required":["system_id","versions"]}}},"required":["datasets"],"additionalProperties":false}},"required":["last_updated","ttl","version","data"]},"gbfs.json":{"description":"Auto-discovery file that links to all of the other files published by the system.","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Response data in the form of name:value pairs.","type":"object","minProperties":1,"additionalProperties":false,"properties":{"en":{"type":"object","properties":{"feeds":{"description":"An array of all of the feeds that are published by the auto-discovery file. Each element in the array is an object with the keys below.","type":"array","items":{"type":"object","properties":{"name":{"description":"Key identifying the type of feed this is. The key must be the base file name defined in the spec for the corresponding feed type.","type":"string","enum":["gbfs","gbfs_versions","system_information","vehicle_types","station_information","station_status","free_bike_status","system_hours","system_alerts","system_calendar","system_regions","system_pricing_plans","geofencing_zones"]},"url":{"description":"URL for the feed.","type":"string","format":"uri"}},"required":["name","url"]}}},"required":["feeds"]}}}},"required":["last_updated","ttl","version","data"]},"station_information.json":{"description":"List of all stations, their capacities and locations. REQUIRED of systems utilizing docks.","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Array that contains one object per station as defined below.","type":"object","properties":{"stations":{"type":"array","items":{"type":"object","properties":{"station_id":{"description":"Identifier of a station.","type":"string"},"name":{"description":"Public name of the station.","type":"string"},"short_name":{"description":"Short name or other type of identifier.","type":"string"},"lat":{"description":"The latitude of the station.","type":"number","minimum":-90,"maximum":90},"lon":{"description":"The longitude fo the station.","type":"number","minimum":-180,"maximum":180},"address":{"description":"Address where station is located.","type":"string"},"cross_street":{"description":"Cross street or landmark where the station is located.","type":"string"},"region_id":{"description":"Identifier of the region where the station is located.","type":"string"},"post_code":{"description":"Postal code where station is located.","type":"string"},"rental_methods":{"description":"Payment methods accepted at this station.","type":"array","items":{"type":"string","enum":["key","creditcard","paypass","applepay","androidpay","transitcard","accountnumber","phone"]},"minItems":1},"is_virtual_station":{"description":"Is this station a location with or without physical infrastructure? (added in v2.1-RC)","type":"boolean"},"station_area":{"description":"A multipolygon that describes the area of a virtual station (added in v2.1-RC).","type":"object","required":["type","coordinates"],"properties":{"type":{"type":"string","enum":["MultiPolygon"]},"coordinates":{"type":"array","items":{"type":"array","items":{"type":"array","minItems":4,"items":{"type":"array","minItems":2,"items":{"type":"number"}}}}}}},"parking_type":{"description":"Type of parking station. Added in v2.3","type":"string","enum":["parking_lot","street_parking","underground_parking","sidewalk_parking","other"]},"parking_hoop":{"description":"Are parking hoops present at this station? Added in v2.3","type":"boolean"},"contact_phone":{"description":"Contact phone of the station. Added in v2.3","type":"string"},"capacity":{"description":"Number of total docking points installed at this station, both available and unavailable.","type":"integer","minimum":0},"vehicle_capacity":{"description":"An object where each key is a vehicle_type_id and the value is a number presenting the total number of vehicles of this type that can park within the station_area (added in v2.1-RC).","type":"object","additionalProperties":{"type":"number"}},"is_valet_station":{"description":"Are valet services provided at this station? (added in v2.1-RC)","type":"boolean"},"is_charging_station":{"description":"Does the station support charging of electric vehicles? (added in v2.3-RC)","type":"boolean"},"rental_uris":{"description":"Contains rental uris for Android, iOS, and web in the android, ios, and web fields (added in v1.1).","type":"object","properties":{"android":{"description":"URI that can be passed to an Android app with an intent (added in v1.1).","type":"string","format":"uri"},"ios":{"description":"URI that can be used on iOS to launch the rental app for this station (added in v1.1).","type":"string","format":"uri"},"web":{"description":"URL that can be used by a web browser to show more information about renting a vehicle at this station (added in v1.1).","type":"string","format":"uri"}}},"vehicle_type_capacity":{"description":"An object where each key is a vehicle_type_id and the value is a number representing the total docking points installed at this station for each vehicle type (added in v2.1-RC).","type":"object","additionalProperties":{"type":"number"}}},"required":["station_id","name","lat","lon"]}}},"required":["stations"]}},"required":["last_updated","ttl","version","data"]},"station_status.json":{"description":"Describes the capacity and rental availability of the station","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Array that contains one object per station as defined below.","type":"object","properties":{"stations":{"type":"array","items":{"type":"object","properties":{"station_id":{"description":"Identifier of a station.","type":"string"},"num_bikes_available":{"description":"Number of vehicles of any type physically available for rental at the station.","type":"integer","minimum":0},"vehicle_types_available":{"description":"Array of objects displaying the total number of each vehicle type at the station (added in v2.1-RC).","type":"array","items":{"type":"object","properties":{"vehicle_type_id":{"description":"The vehicle_type_id of vehicle at the station (added in v2.1-RC).","type":"string"},"count":{"description":"A number representing the total amount of this vehicle type at the station (added in v2.1-RC).","type":"integer","minimum":0}},"required":["vehicle_type_id","count"]}},"num_bikes_disabled":{"description":"Number of disabled vehicles of any type at the station.","type":"integer","minimum":0},"num_docks_available":{"description":"Number of functional docks physically at the station.","type":"integer","minimum":0},"num_docks_disabled":{"description":"Number of empty but disabled docks at the station.","type":"integer","minimum":0},"is_installed":{"description":"Is the station currently on the street?","type":"boolean"},"is_renting":{"description":"Is the station currently renting vehicles?","type":"boolean"},"is_returning":{"description":"Is the station accepting vehicle returns?","type":"boolean"},"last_reported":{"description":"The last time this station reported its status to the operator's backend in POSIX time.","type":"integer","minimum":1450155600},"vehicle_docks_available":{"description":"Object displaying available docks by vehicle type (added in v2.1-RC).","type":"array","items":{"type":"object","properties":{"vehicle_type_ids":{"description":"An array of strings where each string represents a vehicle_type_id that is able to use a particular type of dock at the station (added in v2.1-RC).","type":"array","items":{"type":"string"}},"count":{"description":"A number representing the total number of available docks for the defined vehicle type (added in v2.1-RC).","type":"integer","minimum":0}},"required":["vehicle_type_ids","count"]}}},"required":["station_id","num_bikes_available","is_installed","is_renting","is_returning","last_reported"]}}},"required":["stations"]}},"required":["last_updated","ttl","version","data"]},"system_information.json":{"description":"Details including system operator, system location, year implemented, URL, contact info, time zone.","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Response data in the form of name:value pairs.","type":"object","properties":{"system_id":{"description":"Identifier for this vehicle share system. This should be globally unique (even between different systems).","type":"string"},"language":{"description":"The language that will be used throughout the rest of the files. It must match the value in the gbfs.json file.","type":"string","pattern":"^[a-z]{2,3}(-[A-Z]{2})?$"},"name":{"description":"Name of the system to be displayed to customers.","type":"string"},"short_name":{"description":"Optional abbreviation for a system.","type":"string"},"operator":{"description":"Name of the operator","type":"string"},"url":{"description":"The URL of the vehicle share system.","type":"string","format":"uri"},"purchase_url":{"description":"URL where a customer can purchase a membership.","type":"string","format":"uri"},"start_date":{"description":"Date that the system began operations.","type":"string","format":"date"},"phone_number":{"description":"A single voice telephone number for the specified system that presents the telephone number as typical for the system's service area.","type":"string"},"email":{"description":"Email address actively monitored by the operator's customer service department.","type":"string","format":"email"},"feed_contact_email":{"description":"A single contact email address for consumers of this feed to report technical issues (added in v1.1).","type":"string","format":"email"},"timezone":{"description":"The time zone where the system is located.","type":"string","enum":["Africa/Abidjan","Africa/Algiers","Africa/Bissau","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/El_Aaiun","Africa/Johannesburg","Africa/Juba","Africa/Khartoum","Africa/Lagos","Africa/Maputo","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Sao_Tome","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Asuncion","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Boa_Vista","America/Bogota","America/Boise","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Cayenne","America/Chicago","America/Chihuahua","America/Costa_Rica","America/Cuiaba","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Fort_Nelson","America/Fortaleza","America/Glace_Bay","America/Goose_Bay","America/Grand_Turk","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Inuvik","America/Iqaluit","America/Jamaica","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/La_Paz","America/Lima","America/Los_Angeles","America/Maceio","America/Managua","America/Manaus","America/Martinique","America/Matamoros","America/Mazatlan","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/New_York","America/Nipigon","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Nuuk","America/Ojinaga","America/Panama","America/Pangnirtung","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rainy_River","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Sitka","America/St_Johns","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Thunder_Bay","America/Tijuana","America/Toronto","America/Vancouver","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/Palmer","Antarctica/Rothera","Antarctica/Troll","Antarctica/Vostok","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Atyrau","Asia/Baghdad","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Chita","Asia/Choibalsan","Asia/Colombo","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kathmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Riyadh","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ulaanbaatar","Asia/Urumqi","Asia/Ust-Nera","Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faroe","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/Stanley","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/Perth","Australia/Sydney","CET","CST6CDT","EET","EST","EST5EDT","Etc/GMT","Etc/GMT-1","Etc/GMT-10","Etc/GMT-11","Etc/GMT-12","Etc/GMT-13","Etc/GMT-14","Etc/GMT-2","Etc/GMT-3","Etc/GMT-4","Etc/GMT-5","Etc/GMT-6","Etc/GMT-7","Etc/GMT-8","Etc/GMT-9","Etc/GMT+1","Etc/GMT+10","Etc/GMT+11","Etc/GMT+12","Etc/GMT+2","Etc/GMT+3","Etc/GMT+4","Etc/GMT+5","Etc/GMT+6","Etc/GMT+7","Etc/GMT+8","Etc/GMT+9","Etc/UTC","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belgrade","Europe/Berlin","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Helsinki","Europe/Istanbul","Europe/Kaliningrad","Europe/Kiev","Europe/Kirov","Europe/Lisbon","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Oslo","Europe/Paris","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/Saratov","Europe/Simferopol","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Ulyanovsk","Europe/Uzhgorod","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zaporozhye","Europe/Zurich","HST","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Reunion","MET","MST","MST7MDT","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Kanton","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Wake","Pacific/Wallis","PST8PDT","WET"]},"license_url":{"description":"A fully qualified URL of a page that defines the license terms for the GBFS data for this system.","type":"string","format":"uri"},"brand_assets":{"description":"An object where each key defines one of the items listed below (added in v2.3-RC).","type":"object","properties":{"brand_last_modified":{"description":"Date that indicates the last time any included brand assets were updated (added in v2.3-RC).","type":"string","format":"date"},"brand_terms_url":{"description":"A fully qualified URL pointing to the location of a page that defines the license terms of brand icons, colors or other trademark information (added in v2.3-RC).","type":"string","format":"uri"},"brand_image_url":{"description":"A fully qualified URL pointing to the location of a graphic file representing the brand for the service (added in v2.3-RC). ","type":"string","format":"uri"},"brand_image_url_dark":{"description":"A fully qualified URL pointing to the location of a graphic file representing the brand for the service for use in dark mode (added in v2.3-RC).","type":"string","format":"uri"},"color":{"description":"Color used to represent the brand for the service (added in v2.3-RC)","type":"string","pattern":"^#([a-fA-F0-9]{6})$"}},"required":["brand_last_modified","brand_image_url"]},"terms_url":{"description":"A fully qualified URL pointing to the terms of service (added in v2.3-RC)","type":"string","format":"uri"},"terms_last_updated":{"description":"The date that the terms of service provided at terms_url were last updated (added in v2.3-RC)","type":"string","format":"date"},"privacy_url":{"description":"A fully qualified URL pointing to the privacy policy for the service (added in v2.3-RC).","type":"string","format":"uri"},"privacy_last_updated":{"description":"The date that the privacy policy provided at privacy_url was last updated (added in v2.3-RC).","type":"string","format":"date"},"rental_apps":{"description":"Contains rental app information in the android and ios JSON objects (added in v1.1).","type":"object","properties":{"android":{"description":"Contains rental app download and app discovery information for the Android platform. (added in v1.1)","type":"object","properties":{"store_uri":{"description":"URI where the rental Android app can be downloaded from (added in v1.1).","type":"string","format":"uri"},"discovery_uri":{"description":"URI that can be used to discover if the rental Android app is installed on the device (added in v1.1).","type":"string","format":"uri"}},"required":["store_uri","discovery_uri"]},"ios":{"description":"Contains rental information for the iOS platform (added in v1.1).","type":"object","properties":{"store_uri":{"description":"URI where the rental iOS app can be downloaded from (added in v1.1).","type":"string","format":"uri"},"discovery_uri":{"description":"URI that can be used to discover if the rental iOS app is installed on the device (added in v1.1).","type":"string","format":"uri"}},"required":["store_uri","discovery_uri"]}}}},"required":["system_id","language","name","timezone"]}},"required":["last_updated","ttl","version","data"]},"free_bike_status.json":{"description":"Describes the vehicles that are available for rent (as of v2.1-RC2).","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Array that contains one object per bike as defined below.","type":"object","properties":{"bikes":{"type":"array","items":{"type":"object","properties":{"bike_id":{"description":"Rotating (as of v2.0) identifier of a vehicle.","type":"string"},"lat":{"description":"The latitude of the vehicle.","type":"number","minimum":-90,"maximum":90},"lon":{"description":"The longitude of the vehicle.","type":"number","minimum":-180,"maximum":180},"is_reserved":{"description":"Is the vehicle currently reserved?","type":"boolean"},"is_disabled":{"description":"Is the vehicle currently disabled (broken)?","type":"boolean"},"rental_uris":{"description":"Contains rental uris for Android, iOS, and web in the android, ios, and web fields (added in v1.1).","type":"object","properties":{"android":{"description":"URI that can be passed to an Android app with an intent (added in v1.1).","type":"string","format":"uri"},"ios":{"description":"URI that can be used on iOS to launch the rental app for this vehicle (added in v1.1).","type":"string","format":"uri"},"web":{"description":"URL that can be used by a web browser to show more information about renting this vehicle (added in v1.1).","type":"string","format":"uri"}}},"vehicle_type_id":{"description":"The vehicle_type_id of this vehicle (added in v2.1-RC).","type":"string"},"last_reported":{"description":"The last time this vehicle reported its status to the operator's backend in POSIX time (added in v2.1-RC).","type":"number","minimum":1450155600},"current_range_meters":{"description":"The furthest distance in meters that the vehicle can travel without recharging or refueling with the vehicle's current charge or fuel (added in v2.1-RC).","type":"number","minimum":0},"current_fuel_percent":{"description":"This value represents the current percentage, expressed from 0 to 1, of fuel or battery power remaining in the vehicle. Added in v2.3-RC.","type":"number","minimum":0},"station_id":{"description":"Identifier referencing the station_id if the vehicle is currently at a station (added in v2.1-RC2).","type":"string"},"home_station_id":{"description":"The station_id of the station this vehicle must be returned to (added in v2.3-RC).","type":"string"},"pricing_plan_id":{"description":"The plan_id of the pricing plan this vehicle is eligible for (added in v2.2).","type":"string"},"vehicle_equipment":{"description":"List of vehicle equipment provided by the operator in addition to the accessories already provided in the vehicle. Added in v2.3.","type":"array","items":{"enum":["child_seat_a","child_seat_b","child_seat_c","winter_tires","snow_chains"]}},"available_until":{"description":"The date and time when any rental of the vehicle must be completed. Added in v2.3.","type":"string","pattern":"^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(([+-]([0-9]{2}):([0-9]{2}))|Z)$"}},"required":["bike_id","is_reserved","is_disabled"]}}},"required":["bikes"]}},"required":["last_updated","ttl","version","data"]},"vehicle_types.json":{"description":"Describes the types of vehicles that System operator has available for rent (added in v2.1-RC).","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Response data in the form of name:value pairs.","type":"object","properties":{"vehicle_types":{"description":"Array that contains one object per vehicle type in the system as defined below.","type":"array","items":{"type":"object","properties":{"vehicle_type_id":{"description":"Unique identifier of a vehicle type.","type":"string"},"form_factor":{"description":"The vehicle's general form factor.","type":"string","enum":["bicycle","cargo_bicycle","car","moped","scooter_standing","scooter_seated","other","scooter"]},"rider_capacity":{"description":"The number of riders (driver included) the vehicle can legally accommodate","type":"integer","minimum":0},"cargo_volume_capacity":{"description":"Cargo volume available in the vehicle, expressed in liters.","type":"integer","minimum":0},"cargo_load_capacity":{"description":"The capacity of the vehicle cargo space (excluding passengers), expressed in kilograms.","type":"integer","minimum":0},"propulsion_type":{"description":"The primary propulsion type of the vehicle. Updated in v2.3 to represent car-sharing","type":"string","enum":["human","electric_assist","electric","combustion","combustion_diesel","hybrid","plug_in_hybrid","hydrogen_fuel_cell"]},"eco_label":{"description":"Vehicle air quality certificate. added in v2.3.","type":"array","items":{"type":"object","properties":{"country_code":{"description":" Country code following the ISO 3166-1 alpha-2 notation. Added in v2.3.","type":"string","pattern":"^[A-Z]{2}"},"eco_sticker":{"description":" Name of the eco label. Added in v2.3.","type":"string"}}},"required":["country_code","eco_sticker"]},"max_range_meters":{"description":"The furthest distance in meters that the vehicle can travel without recharging or refueling when it has the maximum amount of energy potential.","type":"number","minimum":0},"name":{"description":"The public name of this vehicle type.","type":"string"},"vehicle_accessories":{"description":"Description of accessories available in the vehicle.","type":"array","items":{"enum":["air_conditioning","automatic","manual","convertible","cruise_control","doors_2","doors_3","doors_4","doors_5","navigation"]}},"g_CO2_km":{"description":"Maximum quantity of CO2, in grams, emitted per kilometer, according to the WLTP. Added in v2.3","type":"integer","minimum":0},"vehicle_image":{"description":"URL to an image that would assist the user in identifying the vehicle. JPEG or PNG. Added in v2.3","type":"string","format":"uri"},"make":{"description":"The name of the vehicle manufacturer. Added in v2.3","type":"string"},"model":{"description":"The name of the vehicle model. Added in v2.3","type":"string"},"color":{"description":"The color of the vehicle. Added in v2.3","type":"string"},"wheel_count":{"description":"Number of wheels this vehicle type has. Added in v2.3","type":"integer","minimum":0},"max_permitted_speed":{"description":"The maximum speed in kilometers per hour this vehicle is permitted to reach in accordance with local permit and regulations. Added in v2.3","type":"integer","minimum":0},"rated_power":{"description":"The rated power of the motor for this vehicle type in watts. Added in v2.3","type":"integer","minimum":0},"default_reserve_time":{"description":"Maximum time in minutes that a vehicle can be reserved before a rental begins added in v2.3-RC.","type":"integer","minimum":0},"return_constraint":{"description":"The conditions for returning the vehicle at the end of the trip. Added in v2.3-RC as return_type, and updated to return_constraint in v2.3.","type":"string","enum":["free_floating","roundtrip_station","any_station","hybrid"]},"vehicle_assets":{"description":"An object where each key defines one of the items listed below added in v2.3-RC.","type":"object","properties":{"icon_url":{"description":"A fully qualified URL pointing to the location of a graphic icon file that MAY be used to represent this vehicle type on maps and in other applications added in v2.3-RC.","type":"string","format":"uri"},"icon_url_dark":{"description":"A fully qualified URL pointing to the location of a graphic icon file to be used to represent this vehicle type when in dark mode added in v2.3-RC.","type":"string","format":"uri"},"icon_last_modified":{"description":"Date that indicates the last time any included vehicle icon images were modified or updated added in v2.3-RC.","type":"string","format":"date"}},"required":["icon_url","icon_last_modified"]},"default_pricing_plan_id":{"description":"A plan_id as defined in system_pricing_plans.json added in v2.3-RC.","type":"string"},"pricing_plan_ids":{"description":"Array of all pricing plan IDs as defined in system_pricing_plans.json added in v2.3-RC.","type":"array","items":{"type":"string"}}},"required":["vehicle_type_id","form_factor","propulsion_type"]}}},"required":["vehicle_types"]}},"required":["last_updated","ttl","version","data"]}}},"paths":{"/api/gbfs/feed/3.0/manifest.json":{"get":{"operationId":"/api/gbfs/feed/3.0/manifest.json","externalDocs":{"description":"GBFS v3.0 manifest.json reference.","url":"https://github.com/MobilityData/gbfs/blob/v3.0/gbfs.md#manifestjson"},"tags":["gbfs"],"summary":"manifest.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v3.0/gbfs.md#manifestjson\">GBFS v3.0 manifest.json reference</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GbfsManifest"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/gbfs.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/gbfs.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"gbfs.json","description":"See <a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#gbfsjson\">GBFS v2.3 gbfs.json</a>.","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/gbfs.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/station_information.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/station_information.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"station_information.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#station_informationjson\">GBFS v2.3 station_information.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/station_information.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/station_status.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/station_status.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"station_status.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#station_statusjson\">GBFS v2.3 station_status.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/station_status.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/system_information.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/systeminformation.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"system_information.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#system_informationjson\">GBFS v2.3 system_information.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/system_information.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/free_bike_status.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/free_bike_status.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"free_bike_status.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#free_bike_statusjson\">GBFS v2.3 free_bike_status.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/free_bike_status.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/vehicle_types.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/vehicle_types.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"vehicle_types.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#vehicle_typesjson\">GBFS v2.3 vehicle_types.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/vehicle_types.json"}}}}}}}}},"apim":{"path":"/api/gbfs","serviceUrl":"http://localhost:80/api/gbfs"}},"apiGbfsFeed3EnGbfsJsonEndpoint":{"apiType":"http","path":"/api/gbfs/feed/2.3/en/:agency/gbfs.json","dependencies":["pgPool"],"httpVerb":"get","openapi":{"openapi":"3.1.0","info":{"title":"BMC gbfs api","description":"BMC gbfs api","version":"3.1.0"},"components":{"schemas":{"HTTP400Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"cause":{"type":"object","properties":{"id":{"type":"number"},"message":{"type":"string"},"msg":{"type":"string"}}}}}},"example":{"error":{"message":"Mock message for error 409","cause":{"id":409,"message":"Mock message for error 409","msg":"Mock msg for error 409"}}}},"HTTP400InvalidParamError":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message","parameter"],"properties":{"message":{"type":"string","example":"Invalid someParameterName parameter. Supported values are: foo, bar."},"parameter":{"type":"string","example":"someParameterName"},"acceptedValues":{"type":"array","items":{"type":"string"},"example":["foo","bar"]},"acceptedFormats":{"type":"array","items":{"type":"string"}}}}}},"GbfsManifest":{"description":"An index of gbfs.json URLs for each GBFS data set produced by a publisher. A single instance of this file should be published at a single stable URL, for example: https://example.com/gbfs/manifest.json.","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in RFC3339 format.","type":"string","format":"date-time"},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"type":"object","properties":{"datasets":{"description":"An array of objects, each containing the keys below.","type":"array","items":{"type":"object","properties":{"system_id":{"description":"The system_id from system_information.json for the corresponding data set(s).","type":"string"},"versions":{"description":"Contains one object, as defined below, for each of the available versions of a feed. The array MUST be sorted by increasing MAJOR and MINOR version number.","type":"array","items":{"type":"object","properties":{"version":{"description":"The semantic version of the feed in the form X.Y","type":"string","enum":["1.0","1.1","2.0","2.1","2.2","2.3","3.0"]},"url":{"description":"URL of the corresponding gbfs.json endpoint","type":"string","format":"uri"}},"required":["version","url"]}}},"required":["system_id","versions"]}}},"required":["datasets"],"additionalProperties":false}},"required":["last_updated","ttl","version","data"]},"gbfs.json":{"description":"Auto-discovery file that links to all of the other files published by the system.","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Response data in the form of name:value pairs.","type":"object","minProperties":1,"additionalProperties":false,"properties":{"en":{"type":"object","properties":{"feeds":{"description":"An array of all of the feeds that are published by the auto-discovery file. Each element in the array is an object with the keys below.","type":"array","items":{"type":"object","properties":{"name":{"description":"Key identifying the type of feed this is. The key must be the base file name defined in the spec for the corresponding feed type.","type":"string","enum":["gbfs","gbfs_versions","system_information","vehicle_types","station_information","station_status","free_bike_status","system_hours","system_alerts","system_calendar","system_regions","system_pricing_plans","geofencing_zones"]},"url":{"description":"URL for the feed.","type":"string","format":"uri"}},"required":["name","url"]}}},"required":["feeds"]}}}},"required":["last_updated","ttl","version","data"]},"station_information.json":{"description":"List of all stations, their capacities and locations. REQUIRED of systems utilizing docks.","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Array that contains one object per station as defined below.","type":"object","properties":{"stations":{"type":"array","items":{"type":"object","properties":{"station_id":{"description":"Identifier of a station.","type":"string"},"name":{"description":"Public name of the station.","type":"string"},"short_name":{"description":"Short name or other type of identifier.","type":"string"},"lat":{"description":"The latitude of the station.","type":"number","minimum":-90,"maximum":90},"lon":{"description":"The longitude fo the station.","type":"number","minimum":-180,"maximum":180},"address":{"description":"Address where station is located.","type":"string"},"cross_street":{"description":"Cross street or landmark where the station is located.","type":"string"},"region_id":{"description":"Identifier of the region where the station is located.","type":"string"},"post_code":{"description":"Postal code where station is located.","type":"string"},"rental_methods":{"description":"Payment methods accepted at this station.","type":"array","items":{"type":"string","enum":["key","creditcard","paypass","applepay","androidpay","transitcard","accountnumber","phone"]},"minItems":1},"is_virtual_station":{"description":"Is this station a location with or without physical infrastructure? (added in v2.1-RC)","type":"boolean"},"station_area":{"description":"A multipolygon that describes the area of a virtual station (added in v2.1-RC).","type":"object","required":["type","coordinates"],"properties":{"type":{"type":"string","enum":["MultiPolygon"]},"coordinates":{"type":"array","items":{"type":"array","items":{"type":"array","minItems":4,"items":{"type":"array","minItems":2,"items":{"type":"number"}}}}}}},"parking_type":{"description":"Type of parking station. Added in v2.3","type":"string","enum":["parking_lot","street_parking","underground_parking","sidewalk_parking","other"]},"parking_hoop":{"description":"Are parking hoops present at this station? Added in v2.3","type":"boolean"},"contact_phone":{"description":"Contact phone of the station. Added in v2.3","type":"string"},"capacity":{"description":"Number of total docking points installed at this station, both available and unavailable.","type":"integer","minimum":0},"vehicle_capacity":{"description":"An object where each key is a vehicle_type_id and the value is a number presenting the total number of vehicles of this type that can park within the station_area (added in v2.1-RC).","type":"object","additionalProperties":{"type":"number"}},"is_valet_station":{"description":"Are valet services provided at this station? (added in v2.1-RC)","type":"boolean"},"is_charging_station":{"description":"Does the station support charging of electric vehicles? (added in v2.3-RC)","type":"boolean"},"rental_uris":{"description":"Contains rental uris for Android, iOS, and web in the android, ios, and web fields (added in v1.1).","type":"object","properties":{"android":{"description":"URI that can be passed to an Android app with an intent (added in v1.1).","type":"string","format":"uri"},"ios":{"description":"URI that can be used on iOS to launch the rental app for this station (added in v1.1).","type":"string","format":"uri"},"web":{"description":"URL that can be used by a web browser to show more information about renting a vehicle at this station (added in v1.1).","type":"string","format":"uri"}}},"vehicle_type_capacity":{"description":"An object where each key is a vehicle_type_id and the value is a number representing the total docking points installed at this station for each vehicle type (added in v2.1-RC).","type":"object","additionalProperties":{"type":"number"}}},"required":["station_id","name","lat","lon"]}}},"required":["stations"]}},"required":["last_updated","ttl","version","data"]},"station_status.json":{"description":"Describes the capacity and rental availability of the station","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Array that contains one object per station as defined below.","type":"object","properties":{"stations":{"type":"array","items":{"type":"object","properties":{"station_id":{"description":"Identifier of a station.","type":"string"},"num_bikes_available":{"description":"Number of vehicles of any type physically available for rental at the station.","type":"integer","minimum":0},"vehicle_types_available":{"description":"Array of objects displaying the total number of each vehicle type at the station (added in v2.1-RC).","type":"array","items":{"type":"object","properties":{"vehicle_type_id":{"description":"The vehicle_type_id of vehicle at the station (added in v2.1-RC).","type":"string"},"count":{"description":"A number representing the total amount of this vehicle type at the station (added in v2.1-RC).","type":"integer","minimum":0}},"required":["vehicle_type_id","count"]}},"num_bikes_disabled":{"description":"Number of disabled vehicles of any type at the station.","type":"integer","minimum":0},"num_docks_available":{"description":"Number of functional docks physically at the station.","type":"integer","minimum":0},"num_docks_disabled":{"description":"Number of empty but disabled docks at the station.","type":"integer","minimum":0},"is_installed":{"description":"Is the station currently on the street?","type":"boolean"},"is_renting":{"description":"Is the station currently renting vehicles?","type":"boolean"},"is_returning":{"description":"Is the station accepting vehicle returns?","type":"boolean"},"last_reported":{"description":"The last time this station reported its status to the operator's backend in POSIX time.","type":"integer","minimum":1450155600},"vehicle_docks_available":{"description":"Object displaying available docks by vehicle type (added in v2.1-RC).","type":"array","items":{"type":"object","properties":{"vehicle_type_ids":{"description":"An array of strings where each string represents a vehicle_type_id that is able to use a particular type of dock at the station (added in v2.1-RC).","type":"array","items":{"type":"string"}},"count":{"description":"A number representing the total number of available docks for the defined vehicle type (added in v2.1-RC).","type":"integer","minimum":0}},"required":["vehicle_type_ids","count"]}}},"required":["station_id","num_bikes_available","is_installed","is_renting","is_returning","last_reported"]}}},"required":["stations"]}},"required":["last_updated","ttl","version","data"]},"system_information.json":{"description":"Details including system operator, system location, year implemented, URL, contact info, time zone.","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Response data in the form of name:value pairs.","type":"object","properties":{"system_id":{"description":"Identifier for this vehicle share system. This should be globally unique (even between different systems).","type":"string"},"language":{"description":"The language that will be used throughout the rest of the files. It must match the value in the gbfs.json file.","type":"string","pattern":"^[a-z]{2,3}(-[A-Z]{2})?$"},"name":{"description":"Name of the system to be displayed to customers.","type":"string"},"short_name":{"description":"Optional abbreviation for a system.","type":"string"},"operator":{"description":"Name of the operator","type":"string"},"url":{"description":"The URL of the vehicle share system.","type":"string","format":"uri"},"purchase_url":{"description":"URL where a customer can purchase a membership.","type":"string","format":"uri"},"start_date":{"description":"Date that the system began operations.","type":"string","format":"date"},"phone_number":{"description":"A single voice telephone number for the specified system that presents the telephone number as typical for the system's service area.","type":"string"},"email":{"description":"Email address actively monitored by the operator's customer service department.","type":"string","format":"email"},"feed_contact_email":{"description":"A single contact email address for consumers of this feed to report technical issues (added in v1.1).","type":"string","format":"email"},"timezone":{"description":"The time zone where the system is located.","type":"string","enum":["Africa/Abidjan","Africa/Algiers","Africa/Bissau","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/El_Aaiun","Africa/Johannesburg","Africa/Juba","Africa/Khartoum","Africa/Lagos","Africa/Maputo","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Sao_Tome","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Asuncion","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Boa_Vista","America/Bogota","America/Boise","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Cayenne","America/Chicago","America/Chihuahua","America/Costa_Rica","America/Cuiaba","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Fort_Nelson","America/Fortaleza","America/Glace_Bay","America/Goose_Bay","America/Grand_Turk","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Inuvik","America/Iqaluit","America/Jamaica","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/La_Paz","America/Lima","America/Los_Angeles","America/Maceio","America/Managua","America/Manaus","America/Martinique","America/Matamoros","America/Mazatlan","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/New_York","America/Nipigon","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Nuuk","America/Ojinaga","America/Panama","America/Pangnirtung","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rainy_River","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Sitka","America/St_Johns","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Thunder_Bay","America/Tijuana","America/Toronto","America/Vancouver","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/Palmer","Antarctica/Rothera","Antarctica/Troll","Antarctica/Vostok","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Atyrau","Asia/Baghdad","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Chita","Asia/Choibalsan","Asia/Colombo","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kathmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Riyadh","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ulaanbaatar","Asia/Urumqi","Asia/Ust-Nera","Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faroe","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/Stanley","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/Perth","Australia/Sydney","CET","CST6CDT","EET","EST","EST5EDT","Etc/GMT","Etc/GMT-1","Etc/GMT-10","Etc/GMT-11","Etc/GMT-12","Etc/GMT-13","Etc/GMT-14","Etc/GMT-2","Etc/GMT-3","Etc/GMT-4","Etc/GMT-5","Etc/GMT-6","Etc/GMT-7","Etc/GMT-8","Etc/GMT-9","Etc/GMT+1","Etc/GMT+10","Etc/GMT+11","Etc/GMT+12","Etc/GMT+2","Etc/GMT+3","Etc/GMT+4","Etc/GMT+5","Etc/GMT+6","Etc/GMT+7","Etc/GMT+8","Etc/GMT+9","Etc/UTC","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belgrade","Europe/Berlin","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Helsinki","Europe/Istanbul","Europe/Kaliningrad","Europe/Kiev","Europe/Kirov","Europe/Lisbon","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Oslo","Europe/Paris","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/Saratov","Europe/Simferopol","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Ulyanovsk","Europe/Uzhgorod","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zaporozhye","Europe/Zurich","HST","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Reunion","MET","MST","MST7MDT","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Kanton","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Wake","Pacific/Wallis","PST8PDT","WET"]},"license_url":{"description":"A fully qualified URL of a page that defines the license terms for the GBFS data for this system.","type":"string","format":"uri"},"brand_assets":{"description":"An object where each key defines one of the items listed below (added in v2.3-RC).","type":"object","properties":{"brand_last_modified":{"description":"Date that indicates the last time any included brand assets were updated (added in v2.3-RC).","type":"string","format":"date"},"brand_terms_url":{"description":"A fully qualified URL pointing to the location of a page that defines the license terms of brand icons, colors or other trademark information (added in v2.3-RC).","type":"string","format":"uri"},"brand_image_url":{"description":"A fully qualified URL pointing to the location of a graphic file representing the brand for the service (added in v2.3-RC). ","type":"string","format":"uri"},"brand_image_url_dark":{"description":"A fully qualified URL pointing to the location of a graphic file representing the brand for the service for use in dark mode (added in v2.3-RC).","type":"string","format":"uri"},"color":{"description":"Color used to represent the brand for the service (added in v2.3-RC)","type":"string","pattern":"^#([a-fA-F0-9]{6})$"}},"required":["brand_last_modified","brand_image_url"]},"terms_url":{"description":"A fully qualified URL pointing to the terms of service (added in v2.3-RC)","type":"string","format":"uri"},"terms_last_updated":{"description":"The date that the terms of service provided at terms_url were last updated (added in v2.3-RC)","type":"string","format":"date"},"privacy_url":{"description":"A fully qualified URL pointing to the privacy policy for the service (added in v2.3-RC).","type":"string","format":"uri"},"privacy_last_updated":{"description":"The date that the privacy policy provided at privacy_url was last updated (added in v2.3-RC).","type":"string","format":"date"},"rental_apps":{"description":"Contains rental app information in the android and ios JSON objects (added in v1.1).","type":"object","properties":{"android":{"description":"Contains rental app download and app discovery information for the Android platform. (added in v1.1)","type":"object","properties":{"store_uri":{"description":"URI where the rental Android app can be downloaded from (added in v1.1).","type":"string","format":"uri"},"discovery_uri":{"description":"URI that can be used to discover if the rental Android app is installed on the device (added in v1.1).","type":"string","format":"uri"}},"required":["store_uri","discovery_uri"]},"ios":{"description":"Contains rental information for the iOS platform (added in v1.1).","type":"object","properties":{"store_uri":{"description":"URI where the rental iOS app can be downloaded from (added in v1.1).","type":"string","format":"uri"},"discovery_uri":{"description":"URI that can be used to discover if the rental iOS app is installed on the device (added in v1.1).","type":"string","format":"uri"}},"required":["store_uri","discovery_uri"]}}}},"required":["system_id","language","name","timezone"]}},"required":["last_updated","ttl","version","data"]},"free_bike_status.json":{"description":"Describes the vehicles that are available for rent (as of v2.1-RC2).","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Array that contains one object per bike as defined below.","type":"object","properties":{"bikes":{"type":"array","items":{"type":"object","properties":{"bike_id":{"description":"Rotating (as of v2.0) identifier of a vehicle.","type":"string"},"lat":{"description":"The latitude of the vehicle.","type":"number","minimum":-90,"maximum":90},"lon":{"description":"The longitude of the vehicle.","type":"number","minimum":-180,"maximum":180},"is_reserved":{"description":"Is the vehicle currently reserved?","type":"boolean"},"is_disabled":{"description":"Is the vehicle currently disabled (broken)?","type":"boolean"},"rental_uris":{"description":"Contains rental uris for Android, iOS, and web in the android, ios, and web fields (added in v1.1).","type":"object","properties":{"android":{"description":"URI that can be passed to an Android app with an intent (added in v1.1).","type":"string","format":"uri"},"ios":{"description":"URI that can be used on iOS to launch the rental app for this vehicle (added in v1.1).","type":"string","format":"uri"},"web":{"description":"URL that can be used by a web browser to show more information about renting this vehicle (added in v1.1).","type":"string","format":"uri"}}},"vehicle_type_id":{"description":"The vehicle_type_id of this vehicle (added in v2.1-RC).","type":"string"},"last_reported":{"description":"The last time this vehicle reported its status to the operator's backend in POSIX time (added in v2.1-RC).","type":"number","minimum":1450155600},"current_range_meters":{"description":"The furthest distance in meters that the vehicle can travel without recharging or refueling with the vehicle's current charge or fuel (added in v2.1-RC).","type":"number","minimum":0},"current_fuel_percent":{"description":"This value represents the current percentage, expressed from 0 to 1, of fuel or battery power remaining in the vehicle. Added in v2.3-RC.","type":"number","minimum":0},"station_id":{"description":"Identifier referencing the station_id if the vehicle is currently at a station (added in v2.1-RC2).","type":"string"},"home_station_id":{"description":"The station_id of the station this vehicle must be returned to (added in v2.3-RC).","type":"string"},"pricing_plan_id":{"description":"The plan_id of the pricing plan this vehicle is eligible for (added in v2.2).","type":"string"},"vehicle_equipment":{"description":"List of vehicle equipment provided by the operator in addition to the accessories already provided in the vehicle. Added in v2.3.","type":"array","items":{"enum":["child_seat_a","child_seat_b","child_seat_c","winter_tires","snow_chains"]}},"available_until":{"description":"The date and time when any rental of the vehicle must be completed. Added in v2.3.","type":"string","pattern":"^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(([+-]([0-9]{2}):([0-9]{2}))|Z)$"}},"required":["bike_id","is_reserved","is_disabled"]}}},"required":["bikes"]}},"required":["last_updated","ttl","version","data"]},"vehicle_types.json":{"description":"Describes the types of vehicles that System operator has available for rent (added in v2.1-RC).","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Response data in the form of name:value pairs.","type":"object","properties":{"vehicle_types":{"description":"Array that contains one object per vehicle type in the system as defined below.","type":"array","items":{"type":"object","properties":{"vehicle_type_id":{"description":"Unique identifier of a vehicle type.","type":"string"},"form_factor":{"description":"The vehicle's general form factor.","type":"string","enum":["bicycle","cargo_bicycle","car","moped","scooter_standing","scooter_seated","other","scooter"]},"rider_capacity":{"description":"The number of riders (driver included) the vehicle can legally accommodate","type":"integer","minimum":0},"cargo_volume_capacity":{"description":"Cargo volume available in the vehicle, expressed in liters.","type":"integer","minimum":0},"cargo_load_capacity":{"description":"The capacity of the vehicle cargo space (excluding passengers), expressed in kilograms.","type":"integer","minimum":0},"propulsion_type":{"description":"The primary propulsion type of the vehicle. Updated in v2.3 to represent car-sharing","type":"string","enum":["human","electric_assist","electric","combustion","combustion_diesel","hybrid","plug_in_hybrid","hydrogen_fuel_cell"]},"eco_label":{"description":"Vehicle air quality certificate. added in v2.3.","type":"array","items":{"type":"object","properties":{"country_code":{"description":" Country code following the ISO 3166-1 alpha-2 notation. Added in v2.3.","type":"string","pattern":"^[A-Z]{2}"},"eco_sticker":{"description":" Name of the eco label. Added in v2.3.","type":"string"}}},"required":["country_code","eco_sticker"]},"max_range_meters":{"description":"The furthest distance in meters that the vehicle can travel without recharging or refueling when it has the maximum amount of energy potential.","type":"number","minimum":0},"name":{"description":"The public name of this vehicle type.","type":"string"},"vehicle_accessories":{"description":"Description of accessories available in the vehicle.","type":"array","items":{"enum":["air_conditioning","automatic","manual","convertible","cruise_control","doors_2","doors_3","doors_4","doors_5","navigation"]}},"g_CO2_km":{"description":"Maximum quantity of CO2, in grams, emitted per kilometer, according to the WLTP. Added in v2.3","type":"integer","minimum":0},"vehicle_image":{"description":"URL to an image that would assist the user in identifying the vehicle. JPEG or PNG. Added in v2.3","type":"string","format":"uri"},"make":{"description":"The name of the vehicle manufacturer. Added in v2.3","type":"string"},"model":{"description":"The name of the vehicle model. Added in v2.3","type":"string"},"color":{"description":"The color of the vehicle. Added in v2.3","type":"string"},"wheel_count":{"description":"Number of wheels this vehicle type has. Added in v2.3","type":"integer","minimum":0},"max_permitted_speed":{"description":"The maximum speed in kilometers per hour this vehicle is permitted to reach in accordance with local permit and regulations. Added in v2.3","type":"integer","minimum":0},"rated_power":{"description":"The rated power of the motor for this vehicle type in watts. Added in v2.3","type":"integer","minimum":0},"default_reserve_time":{"description":"Maximum time in minutes that a vehicle can be reserved before a rental begins added in v2.3-RC.","type":"integer","minimum":0},"return_constraint":{"description":"The conditions for returning the vehicle at the end of the trip. Added in v2.3-RC as return_type, and updated to return_constraint in v2.3.","type":"string","enum":["free_floating","roundtrip_station","any_station","hybrid"]},"vehicle_assets":{"description":"An object where each key defines one of the items listed below added in v2.3-RC.","type":"object","properties":{"icon_url":{"description":"A fully qualified URL pointing to the location of a graphic icon file that MAY be used to represent this vehicle type on maps and in other applications added in v2.3-RC.","type":"string","format":"uri"},"icon_url_dark":{"description":"A fully qualified URL pointing to the location of a graphic icon file to be used to represent this vehicle type when in dark mode added in v2.3-RC.","type":"string","format":"uri"},"icon_last_modified":{"description":"Date that indicates the last time any included vehicle icon images were modified or updated added in v2.3-RC.","type":"string","format":"date"}},"required":["icon_url","icon_last_modified"]},"default_pricing_plan_id":{"description":"A plan_id as defined in system_pricing_plans.json added in v2.3-RC.","type":"string"},"pricing_plan_ids":{"description":"Array of all pricing plan IDs as defined in system_pricing_plans.json added in v2.3-RC.","type":"array","items":{"type":"string"}}},"required":["vehicle_type_id","form_factor","propulsion_type"]}}},"required":["vehicle_types"]}},"required":["last_updated","ttl","version","data"]}}},"paths":{"/api/gbfs/feed/3.0/manifest.json":{"get":{"operationId":"/api/gbfs/feed/3.0/manifest.json","externalDocs":{"description":"GBFS v3.0 manifest.json reference.","url":"https://github.com/MobilityData/gbfs/blob/v3.0/gbfs.md#manifestjson"},"tags":["gbfs"],"summary":"manifest.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v3.0/gbfs.md#manifestjson\">GBFS v3.0 manifest.json reference</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GbfsManifest"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/gbfs.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/gbfs.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"gbfs.json","description":"See <a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#gbfsjson\">GBFS v2.3 gbfs.json</a>.","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/gbfs.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/station_information.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/station_information.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"station_information.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#station_informationjson\">GBFS v2.3 station_information.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/station_information.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/station_status.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/station_status.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"station_status.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#station_statusjson\">GBFS v2.3 station_status.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/station_status.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/system_information.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/systeminformation.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"system_information.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#system_informationjson\">GBFS v2.3 system_information.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/system_information.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/free_bike_status.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/free_bike_status.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"free_bike_status.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#free_bike_statusjson\">GBFS v2.3 free_bike_status.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/free_bike_status.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/vehicle_types.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/vehicle_types.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"vehicle_types.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#vehicle_typesjson\">GBFS v2.3 vehicle_types.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/vehicle_types.json"}}}}}}}}},"apim":{"path":"/api/gbfs","serviceUrl":"http://localhost:80/api/gbfs"}},"apiGbfsFeed3EnStationInformationJsonEndpoint":{"apiType":"http","path":"/api/gbfs/feed/2.3/en/:agency/station_information.json","dependencies":["pgPool"],"httpVerb":"get","apim":{"path":"/api/gbfs","serviceUrl":"http://localhost:80/api/gbfs"},"openapi":{"openapi":"3.1.0","info":{"title":"BMC gbfs api","description":"BMC gbfs api","version":"3.1.0"},"components":{"schemas":{"HTTP400Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"cause":{"type":"object","properties":{"id":{"type":"number"},"message":{"type":"string"},"msg":{"type":"string"}}}}}},"example":{"error":{"message":"Mock message for error 409","cause":{"id":409,"message":"Mock message for error 409","msg":"Mock msg for error 409"}}}},"HTTP400InvalidParamError":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message","parameter"],"properties":{"message":{"type":"string","example":"Invalid someParameterName parameter. Supported values are: foo, bar."},"parameter":{"type":"string","example":"someParameterName"},"acceptedValues":{"type":"array","items":{"type":"string"},"example":["foo","bar"]},"acceptedFormats":{"type":"array","items":{"type":"string"}}}}}},"GbfsManifest":{"description":"An index of gbfs.json URLs for each GBFS data set produced by a publisher. A single instance of this file should be published at a single stable URL, for example: https://example.com/gbfs/manifest.json.","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in RFC3339 format.","type":"string","format":"date-time"},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"type":"object","properties":{"datasets":{"description":"An array of objects, each containing the keys below.","type":"array","items":{"type":"object","properties":{"system_id":{"description":"The system_id from system_information.json for the corresponding data set(s).","type":"string"},"versions":{"description":"Contains one object, as defined below, for each of the available versions of a feed. The array MUST be sorted by increasing MAJOR and MINOR version number.","type":"array","items":{"type":"object","properties":{"version":{"description":"The semantic version of the feed in the form X.Y","type":"string","enum":["1.0","1.1","2.0","2.1","2.2","2.3","3.0"]},"url":{"description":"URL of the corresponding gbfs.json endpoint","type":"string","format":"uri"}},"required":["version","url"]}}},"required":["system_id","versions"]}}},"required":["datasets"],"additionalProperties":false}},"required":["last_updated","ttl","version","data"]},"gbfs.json":{"description":"Auto-discovery file that links to all of the other files published by the system.","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Response data in the form of name:value pairs.","type":"object","minProperties":1,"additionalProperties":false,"properties":{"en":{"type":"object","properties":{"feeds":{"description":"An array of all of the feeds that are published by the auto-discovery file. Each element in the array is an object with the keys below.","type":"array","items":{"type":"object","properties":{"name":{"description":"Key identifying the type of feed this is. The key must be the base file name defined in the spec for the corresponding feed type.","type":"string","enum":["gbfs","gbfs_versions","system_information","vehicle_types","station_information","station_status","free_bike_status","system_hours","system_alerts","system_calendar","system_regions","system_pricing_plans","geofencing_zones"]},"url":{"description":"URL for the feed.","type":"string","format":"uri"}},"required":["name","url"]}}},"required":["feeds"]}}}},"required":["last_updated","ttl","version","data"]},"station_information.json":{"description":"List of all stations, their capacities and locations. REQUIRED of systems utilizing docks.","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Array that contains one object per station as defined below.","type":"object","properties":{"stations":{"type":"array","items":{"type":"object","properties":{"station_id":{"description":"Identifier of a station.","type":"string"},"name":{"description":"Public name of the station.","type":"string"},"short_name":{"description":"Short name or other type of identifier.","type":"string"},"lat":{"description":"The latitude of the station.","type":"number","minimum":-90,"maximum":90},"lon":{"description":"The longitude fo the station.","type":"number","minimum":-180,"maximum":180},"address":{"description":"Address where station is located.","type":"string"},"cross_street":{"description":"Cross street or landmark where the station is located.","type":"string"},"region_id":{"description":"Identifier of the region where the station is located.","type":"string"},"post_code":{"description":"Postal code where station is located.","type":"string"},"rental_methods":{"description":"Payment methods accepted at this station.","type":"array","items":{"type":"string","enum":["key","creditcard","paypass","applepay","androidpay","transitcard","accountnumber","phone"]},"minItems":1},"is_virtual_station":{"description":"Is this station a location with or without physical infrastructure? (added in v2.1-RC)","type":"boolean"},"station_area":{"description":"A multipolygon that describes the area of a virtual station (added in v2.1-RC).","type":"object","required":["type","coordinates"],"properties":{"type":{"type":"string","enum":["MultiPolygon"]},"coordinates":{"type":"array","items":{"type":"array","items":{"type":"array","minItems":4,"items":{"type":"array","minItems":2,"items":{"type":"number"}}}}}}},"parking_type":{"description":"Type of parking station. Added in v2.3","type":"string","enum":["parking_lot","street_parking","underground_parking","sidewalk_parking","other"]},"parking_hoop":{"description":"Are parking hoops present at this station? Added in v2.3","type":"boolean"},"contact_phone":{"description":"Contact phone of the station. Added in v2.3","type":"string"},"capacity":{"description":"Number of total docking points installed at this station, both available and unavailable.","type":"integer","minimum":0},"vehicle_capacity":{"description":"An object where each key is a vehicle_type_id and the value is a number presenting the total number of vehicles of this type that can park within the station_area (added in v2.1-RC).","type":"object","additionalProperties":{"type":"number"}},"is_valet_station":{"description":"Are valet services provided at this station? (added in v2.1-RC)","type":"boolean"},"is_charging_station":{"description":"Does the station support charging of electric vehicles? (added in v2.3-RC)","type":"boolean"},"rental_uris":{"description":"Contains rental uris for Android, iOS, and web in the android, ios, and web fields (added in v1.1).","type":"object","properties":{"android":{"description":"URI that can be passed to an Android app with an intent (added in v1.1).","type":"string","format":"uri"},"ios":{"description":"URI that can be used on iOS to launch the rental app for this station (added in v1.1).","type":"string","format":"uri"},"web":{"description":"URL that can be used by a web browser to show more information about renting a vehicle at this station (added in v1.1).","type":"string","format":"uri"}}},"vehicle_type_capacity":{"description":"An object where each key is a vehicle_type_id and the value is a number representing the total docking points installed at this station for each vehicle type (added in v2.1-RC).","type":"object","additionalProperties":{"type":"number"}}},"required":["station_id","name","lat","lon"]}}},"required":["stations"]}},"required":["last_updated","ttl","version","data"]},"station_status.json":{"description":"Describes the capacity and rental availability of the station","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Array that contains one object per station as defined below.","type":"object","properties":{"stations":{"type":"array","items":{"type":"object","properties":{"station_id":{"description":"Identifier of a station.","type":"string"},"num_bikes_available":{"description":"Number of vehicles of any type physically available for rental at the station.","type":"integer","minimum":0},"vehicle_types_available":{"description":"Array of objects displaying the total number of each vehicle type at the station (added in v2.1-RC).","type":"array","items":{"type":"object","properties":{"vehicle_type_id":{"description":"The vehicle_type_id of vehicle at the station (added in v2.1-RC).","type":"string"},"count":{"description":"A number representing the total amount of this vehicle type at the station (added in v2.1-RC).","type":"integer","minimum":0}},"required":["vehicle_type_id","count"]}},"num_bikes_disabled":{"description":"Number of disabled vehicles of any type at the station.","type":"integer","minimum":0},"num_docks_available":{"description":"Number of functional docks physically at the station.","type":"integer","minimum":0},"num_docks_disabled":{"description":"Number of empty but disabled docks at the station.","type":"integer","minimum":0},"is_installed":{"description":"Is the station currently on the street?","type":"boolean"},"is_renting":{"description":"Is the station currently renting vehicles?","type":"boolean"},"is_returning":{"description":"Is the station accepting vehicle returns?","type":"boolean"},"last_reported":{"description":"The last time this station reported its status to the operator's backend in POSIX time.","type":"integer","minimum":1450155600},"vehicle_docks_available":{"description":"Object displaying available docks by vehicle type (added in v2.1-RC).","type":"array","items":{"type":"object","properties":{"vehicle_type_ids":{"description":"An array of strings where each string represents a vehicle_type_id that is able to use a particular type of dock at the station (added in v2.1-RC).","type":"array","items":{"type":"string"}},"count":{"description":"A number representing the total number of available docks for the defined vehicle type (added in v2.1-RC).","type":"integer","minimum":0}},"required":["vehicle_type_ids","count"]}}},"required":["station_id","num_bikes_available","is_installed","is_renting","is_returning","last_reported"]}}},"required":["stations"]}},"required":["last_updated","ttl","version","data"]},"system_information.json":{"description":"Details including system operator, system location, year implemented, URL, contact info, time zone.","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Response data in the form of name:value pairs.","type":"object","properties":{"system_id":{"description":"Identifier for this vehicle share system. This should be globally unique (even between different systems).","type":"string"},"language":{"description":"The language that will be used throughout the rest of the files. It must match the value in the gbfs.json file.","type":"string","pattern":"^[a-z]{2,3}(-[A-Z]{2})?$"},"name":{"description":"Name of the system to be displayed to customers.","type":"string"},"short_name":{"description":"Optional abbreviation for a system.","type":"string"},"operator":{"description":"Name of the operator","type":"string"},"url":{"description":"The URL of the vehicle share system.","type":"string","format":"uri"},"purchase_url":{"description":"URL where a customer can purchase a membership.","type":"string","format":"uri"},"start_date":{"description":"Date that the system began operations.","type":"string","format":"date"},"phone_number":{"description":"A single voice telephone number for the specified system that presents the telephone number as typical for the system's service area.","type":"string"},"email":{"description":"Email address actively monitored by the operator's customer service department.","type":"string","format":"email"},"feed_contact_email":{"description":"A single contact email address for consumers of this feed to report technical issues (added in v1.1).","type":"string","format":"email"},"timezone":{"description":"The time zone where the system is located.","type":"string","enum":["Africa/Abidjan","Africa/Algiers","Africa/Bissau","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/El_Aaiun","Africa/Johannesburg","Africa/Juba","Africa/Khartoum","Africa/Lagos","Africa/Maputo","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Sao_Tome","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Asuncion","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Boa_Vista","America/Bogota","America/Boise","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Cayenne","America/Chicago","America/Chihuahua","America/Costa_Rica","America/Cuiaba","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Fort_Nelson","America/Fortaleza","America/Glace_Bay","America/Goose_Bay","America/Grand_Turk","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Inuvik","America/Iqaluit","America/Jamaica","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/La_Paz","America/Lima","America/Los_Angeles","America/Maceio","America/Managua","America/Manaus","America/Martinique","America/Matamoros","America/Mazatlan","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/New_York","America/Nipigon","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Nuuk","America/Ojinaga","America/Panama","America/Pangnirtung","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rainy_River","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Sitka","America/St_Johns","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Thunder_Bay","America/Tijuana","America/Toronto","America/Vancouver","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/Palmer","Antarctica/Rothera","Antarctica/Troll","Antarctica/Vostok","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Atyrau","Asia/Baghdad","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Chita","Asia/Choibalsan","Asia/Colombo","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kathmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Riyadh","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ulaanbaatar","Asia/Urumqi","Asia/Ust-Nera","Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faroe","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/Stanley","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/Perth","Australia/Sydney","CET","CST6CDT","EET","EST","EST5EDT","Etc/GMT","Etc/GMT-1","Etc/GMT-10","Etc/GMT-11","Etc/GMT-12","Etc/GMT-13","Etc/GMT-14","Etc/GMT-2","Etc/GMT-3","Etc/GMT-4","Etc/GMT-5","Etc/GMT-6","Etc/GMT-7","Etc/GMT-8","Etc/GMT-9","Etc/GMT+1","Etc/GMT+10","Etc/GMT+11","Etc/GMT+12","Etc/GMT+2","Etc/GMT+3","Etc/GMT+4","Etc/GMT+5","Etc/GMT+6","Etc/GMT+7","Etc/GMT+8","Etc/GMT+9","Etc/UTC","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belgrade","Europe/Berlin","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Helsinki","Europe/Istanbul","Europe/Kaliningrad","Europe/Kiev","Europe/Kirov","Europe/Lisbon","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Oslo","Europe/Paris","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/Saratov","Europe/Simferopol","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Ulyanovsk","Europe/Uzhgorod","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zaporozhye","Europe/Zurich","HST","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Reunion","MET","MST","MST7MDT","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Kanton","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Wake","Pacific/Wallis","PST8PDT","WET"]},"license_url":{"description":"A fully qualified URL of a page that defines the license terms for the GBFS data for this system.","type":"string","format":"uri"},"brand_assets":{"description":"An object where each key defines one of the items listed below (added in v2.3-RC).","type":"object","properties":{"brand_last_modified":{"description":"Date that indicates the last time any included brand assets were updated (added in v2.3-RC).","type":"string","format":"date"},"brand_terms_url":{"description":"A fully qualified URL pointing to the location of a page that defines the license terms of brand icons, colors or other trademark information (added in v2.3-RC).","type":"string","format":"uri"},"brand_image_url":{"description":"A fully qualified URL pointing to the location of a graphic file representing the brand for the service (added in v2.3-RC). ","type":"string","format":"uri"},"brand_image_url_dark":{"description":"A fully qualified URL pointing to the location of a graphic file representing the brand for the service for use in dark mode (added in v2.3-RC).","type":"string","format":"uri"},"color":{"description":"Color used to represent the brand for the service (added in v2.3-RC)","type":"string","pattern":"^#([a-fA-F0-9]{6})$"}},"required":["brand_last_modified","brand_image_url"]},"terms_url":{"description":"A fully qualified URL pointing to the terms of service (added in v2.3-RC)","type":"string","format":"uri"},"terms_last_updated":{"description":"The date that the terms of service provided at terms_url were last updated (added in v2.3-RC)","type":"string","format":"date"},"privacy_url":{"description":"A fully qualified URL pointing to the privacy policy for the service (added in v2.3-RC).","type":"string","format":"uri"},"privacy_last_updated":{"description":"The date that the privacy policy provided at privacy_url was last updated (added in v2.3-RC).","type":"string","format":"date"},"rental_apps":{"description":"Contains rental app information in the android and ios JSON objects (added in v1.1).","type":"object","properties":{"android":{"description":"Contains rental app download and app discovery information for the Android platform. (added in v1.1)","type":"object","properties":{"store_uri":{"description":"URI where the rental Android app can be downloaded from (added in v1.1).","type":"string","format":"uri"},"discovery_uri":{"description":"URI that can be used to discover if the rental Android app is installed on the device (added in v1.1).","type":"string","format":"uri"}},"required":["store_uri","discovery_uri"]},"ios":{"description":"Contains rental information for the iOS platform (added in v1.1).","type":"object","properties":{"store_uri":{"description":"URI where the rental iOS app can be downloaded from (added in v1.1).","type":"string","format":"uri"},"discovery_uri":{"description":"URI that can be used to discover if the rental iOS app is installed on the device (added in v1.1).","type":"string","format":"uri"}},"required":["store_uri","discovery_uri"]}}}},"required":["system_id","language","name","timezone"]}},"required":["last_updated","ttl","version","data"]},"free_bike_status.json":{"description":"Describes the vehicles that are available for rent (as of v2.1-RC2).","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Array that contains one object per bike as defined below.","type":"object","properties":{"bikes":{"type":"array","items":{"type":"object","properties":{"bike_id":{"description":"Rotating (as of v2.0) identifier of a vehicle.","type":"string"},"lat":{"description":"The latitude of the vehicle.","type":"number","minimum":-90,"maximum":90},"lon":{"description":"The longitude of the vehicle.","type":"number","minimum":-180,"maximum":180},"is_reserved":{"description":"Is the vehicle currently reserved?","type":"boolean"},"is_disabled":{"description":"Is the vehicle currently disabled (broken)?","type":"boolean"},"rental_uris":{"description":"Contains rental uris for Android, iOS, and web in the android, ios, and web fields (added in v1.1).","type":"object","properties":{"android":{"description":"URI that can be passed to an Android app with an intent (added in v1.1).","type":"string","format":"uri"},"ios":{"description":"URI that can be used on iOS to launch the rental app for this vehicle (added in v1.1).","type":"string","format":"uri"},"web":{"description":"URL that can be used by a web browser to show more information about renting this vehicle (added in v1.1).","type":"string","format":"uri"}}},"vehicle_type_id":{"description":"The vehicle_type_id of this vehicle (added in v2.1-RC).","type":"string"},"last_reported":{"description":"The last time this vehicle reported its status to the operator's backend in POSIX time (added in v2.1-RC).","type":"number","minimum":1450155600},"current_range_meters":{"description":"The furthest distance in meters that the vehicle can travel without recharging or refueling with the vehicle's current charge or fuel (added in v2.1-RC).","type":"number","minimum":0},"current_fuel_percent":{"description":"This value represents the current percentage, expressed from 0 to 1, of fuel or battery power remaining in the vehicle. Added in v2.3-RC.","type":"number","minimum":0},"station_id":{"description":"Identifier referencing the station_id if the vehicle is currently at a station (added in v2.1-RC2).","type":"string"},"home_station_id":{"description":"The station_id of the station this vehicle must be returned to (added in v2.3-RC).","type":"string"},"pricing_plan_id":{"description":"The plan_id of the pricing plan this vehicle is eligible for (added in v2.2).","type":"string"},"vehicle_equipment":{"description":"List of vehicle equipment provided by the operator in addition to the accessories already provided in the vehicle. Added in v2.3.","type":"array","items":{"enum":["child_seat_a","child_seat_b","child_seat_c","winter_tires","snow_chains"]}},"available_until":{"description":"The date and time when any rental of the vehicle must be completed. Added in v2.3.","type":"string","pattern":"^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(([+-]([0-9]{2}):([0-9]{2}))|Z)$"}},"required":["bike_id","is_reserved","is_disabled"]}}},"required":["bikes"]}},"required":["last_updated","ttl","version","data"]},"vehicle_types.json":{"description":"Describes the types of vehicles that System operator has available for rent (added in v2.1-RC).","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Response data in the form of name:value pairs.","type":"object","properties":{"vehicle_types":{"description":"Array that contains one object per vehicle type in the system as defined below.","type":"array","items":{"type":"object","properties":{"vehicle_type_id":{"description":"Unique identifier of a vehicle type.","type":"string"},"form_factor":{"description":"The vehicle's general form factor.","type":"string","enum":["bicycle","cargo_bicycle","car","moped","scooter_standing","scooter_seated","other","scooter"]},"rider_capacity":{"description":"The number of riders (driver included) the vehicle can legally accommodate","type":"integer","minimum":0},"cargo_volume_capacity":{"description":"Cargo volume available in the vehicle, expressed in liters.","type":"integer","minimum":0},"cargo_load_capacity":{"description":"The capacity of the vehicle cargo space (excluding passengers), expressed in kilograms.","type":"integer","minimum":0},"propulsion_type":{"description":"The primary propulsion type of the vehicle. Updated in v2.3 to represent car-sharing","type":"string","enum":["human","electric_assist","electric","combustion","combustion_diesel","hybrid","plug_in_hybrid","hydrogen_fuel_cell"]},"eco_label":{"description":"Vehicle air quality certificate. added in v2.3.","type":"array","items":{"type":"object","properties":{"country_code":{"description":" Country code following the ISO 3166-1 alpha-2 notation. Added in v2.3.","type":"string","pattern":"^[A-Z]{2}"},"eco_sticker":{"description":" Name of the eco label. Added in v2.3.","type":"string"}}},"required":["country_code","eco_sticker"]},"max_range_meters":{"description":"The furthest distance in meters that the vehicle can travel without recharging or refueling when it has the maximum amount of energy potential.","type":"number","minimum":0},"name":{"description":"The public name of this vehicle type.","type":"string"},"vehicle_accessories":{"description":"Description of accessories available in the vehicle.","type":"array","items":{"enum":["air_conditioning","automatic","manual","convertible","cruise_control","doors_2","doors_3","doors_4","doors_5","navigation"]}},"g_CO2_km":{"description":"Maximum quantity of CO2, in grams, emitted per kilometer, according to the WLTP. Added in v2.3","type":"integer","minimum":0},"vehicle_image":{"description":"URL to an image that would assist the user in identifying the vehicle. JPEG or PNG. Added in v2.3","type":"string","format":"uri"},"make":{"description":"The name of the vehicle manufacturer. Added in v2.3","type":"string"},"model":{"description":"The name of the vehicle model. Added in v2.3","type":"string"},"color":{"description":"The color of the vehicle. Added in v2.3","type":"string"},"wheel_count":{"description":"Number of wheels this vehicle type has. Added in v2.3","type":"integer","minimum":0},"max_permitted_speed":{"description":"The maximum speed in kilometers per hour this vehicle is permitted to reach in accordance with local permit and regulations. Added in v2.3","type":"integer","minimum":0},"rated_power":{"description":"The rated power of the motor for this vehicle type in watts. Added in v2.3","type":"integer","minimum":0},"default_reserve_time":{"description":"Maximum time in minutes that a vehicle can be reserved before a rental begins added in v2.3-RC.","type":"integer","minimum":0},"return_constraint":{"description":"The conditions for returning the vehicle at the end of the trip. Added in v2.3-RC as return_type, and updated to return_constraint in v2.3.","type":"string","enum":["free_floating","roundtrip_station","any_station","hybrid"]},"vehicle_assets":{"description":"An object where each key defines one of the items listed below added in v2.3-RC.","type":"object","properties":{"icon_url":{"description":"A fully qualified URL pointing to the location of a graphic icon file that MAY be used to represent this vehicle type on maps and in other applications added in v2.3-RC.","type":"string","format":"uri"},"icon_url_dark":{"description":"A fully qualified URL pointing to the location of a graphic icon file to be used to represent this vehicle type when in dark mode added in v2.3-RC.","type":"string","format":"uri"},"icon_last_modified":{"description":"Date that indicates the last time any included vehicle icon images were modified or updated added in v2.3-RC.","type":"string","format":"date"}},"required":["icon_url","icon_last_modified"]},"default_pricing_plan_id":{"description":"A plan_id as defined in system_pricing_plans.json added in v2.3-RC.","type":"string"},"pricing_plan_ids":{"description":"Array of all pricing plan IDs as defined in system_pricing_plans.json added in v2.3-RC.","type":"array","items":{"type":"string"}}},"required":["vehicle_type_id","form_factor","propulsion_type"]}}},"required":["vehicle_types"]}},"required":["last_updated","ttl","version","data"]}}},"paths":{"/api/gbfs/feed/3.0/manifest.json":{"get":{"operationId":"/api/gbfs/feed/3.0/manifest.json","externalDocs":{"description":"GBFS v3.0 manifest.json reference.","url":"https://github.com/MobilityData/gbfs/blob/v3.0/gbfs.md#manifestjson"},"tags":["gbfs"],"summary":"manifest.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v3.0/gbfs.md#manifestjson\">GBFS v3.0 manifest.json reference</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GbfsManifest"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/gbfs.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/gbfs.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"gbfs.json","description":"See <a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#gbfsjson\">GBFS v2.3 gbfs.json</a>.","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/gbfs.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/station_information.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/station_information.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"station_information.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#station_informationjson\">GBFS v2.3 station_information.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/station_information.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/station_status.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/station_status.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"station_status.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#station_statusjson\">GBFS v2.3 station_status.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/station_status.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/system_information.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/systeminformation.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"system_information.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#system_informationjson\">GBFS v2.3 system_information.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/system_information.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/free_bike_status.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/free_bike_status.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"free_bike_status.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#free_bike_statusjson\">GBFS v2.3 free_bike_status.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/free_bike_status.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/vehicle_types.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/vehicle_types.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"vehicle_types.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#vehicle_typesjson\">GBFS v2.3 vehicle_types.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/vehicle_types.json"}}}}}}}}}},"apiGbfsFeed3EnStationStatusJsonEndpoint":{"apiType":"http","path":"/api/gbfs/feed/2.3/en/:agency/station_status.json","dependencies":["pgPool"],"httpVerb":"get","openapi":{"openapi":"3.1.0","info":{"title":"BMC gbfs api","description":"BMC gbfs api","version":"3.1.0"},"components":{"schemas":{"HTTP400Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"cause":{"type":"object","properties":{"id":{"type":"number"},"message":{"type":"string"},"msg":{"type":"string"}}}}}},"example":{"error":{"message":"Mock message for error 409","cause":{"id":409,"message":"Mock message for error 409","msg":"Mock msg for error 409"}}}},"HTTP400InvalidParamError":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message","parameter"],"properties":{"message":{"type":"string","example":"Invalid someParameterName parameter. Supported values are: foo, bar."},"parameter":{"type":"string","example":"someParameterName"},"acceptedValues":{"type":"array","items":{"type":"string"},"example":["foo","bar"]},"acceptedFormats":{"type":"array","items":{"type":"string"}}}}}},"GbfsManifest":{"description":"An index of gbfs.json URLs for each GBFS data set produced by a publisher. A single instance of this file should be published at a single stable URL, for example: https://example.com/gbfs/manifest.json.","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in RFC3339 format.","type":"string","format":"date-time"},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"type":"object","properties":{"datasets":{"description":"An array of objects, each containing the keys below.","type":"array","items":{"type":"object","properties":{"system_id":{"description":"The system_id from system_information.json for the corresponding data set(s).","type":"string"},"versions":{"description":"Contains one object, as defined below, for each of the available versions of a feed. The array MUST be sorted by increasing MAJOR and MINOR version number.","type":"array","items":{"type":"object","properties":{"version":{"description":"The semantic version of the feed in the form X.Y","type":"string","enum":["1.0","1.1","2.0","2.1","2.2","2.3","3.0"]},"url":{"description":"URL of the corresponding gbfs.json endpoint","type":"string","format":"uri"}},"required":["version","url"]}}},"required":["system_id","versions"]}}},"required":["datasets"],"additionalProperties":false}},"required":["last_updated","ttl","version","data"]},"gbfs.json":{"description":"Auto-discovery file that links to all of the other files published by the system.","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Response data in the form of name:value pairs.","type":"object","minProperties":1,"additionalProperties":false,"properties":{"en":{"type":"object","properties":{"feeds":{"description":"An array of all of the feeds that are published by the auto-discovery file. Each element in the array is an object with the keys below.","type":"array","items":{"type":"object","properties":{"name":{"description":"Key identifying the type of feed this is. The key must be the base file name defined in the spec for the corresponding feed type.","type":"string","enum":["gbfs","gbfs_versions","system_information","vehicle_types","station_information","station_status","free_bike_status","system_hours","system_alerts","system_calendar","system_regions","system_pricing_plans","geofencing_zones"]},"url":{"description":"URL for the feed.","type":"string","format":"uri"}},"required":["name","url"]}}},"required":["feeds"]}}}},"required":["last_updated","ttl","version","data"]},"station_information.json":{"description":"List of all stations, their capacities and locations. REQUIRED of systems utilizing docks.","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Array that contains one object per station as defined below.","type":"object","properties":{"stations":{"type":"array","items":{"type":"object","properties":{"station_id":{"description":"Identifier of a station.","type":"string"},"name":{"description":"Public name of the station.","type":"string"},"short_name":{"description":"Short name or other type of identifier.","type":"string"},"lat":{"description":"The latitude of the station.","type":"number","minimum":-90,"maximum":90},"lon":{"description":"The longitude fo the station.","type":"number","minimum":-180,"maximum":180},"address":{"description":"Address where station is located.","type":"string"},"cross_street":{"description":"Cross street or landmark where the station is located.","type":"string"},"region_id":{"description":"Identifier of the region where the station is located.","type":"string"},"post_code":{"description":"Postal code where station is located.","type":"string"},"rental_methods":{"description":"Payment methods accepted at this station.","type":"array","items":{"type":"string","enum":["key","creditcard","paypass","applepay","androidpay","transitcard","accountnumber","phone"]},"minItems":1},"is_virtual_station":{"description":"Is this station a location with or without physical infrastructure? (added in v2.1-RC)","type":"boolean"},"station_area":{"description":"A multipolygon that describes the area of a virtual station (added in v2.1-RC).","type":"object","required":["type","coordinates"],"properties":{"type":{"type":"string","enum":["MultiPolygon"]},"coordinates":{"type":"array","items":{"type":"array","items":{"type":"array","minItems":4,"items":{"type":"array","minItems":2,"items":{"type":"number"}}}}}}},"parking_type":{"description":"Type of parking station. Added in v2.3","type":"string","enum":["parking_lot","street_parking","underground_parking","sidewalk_parking","other"]},"parking_hoop":{"description":"Are parking hoops present at this station? Added in v2.3","type":"boolean"},"contact_phone":{"description":"Contact phone of the station. Added in v2.3","type":"string"},"capacity":{"description":"Number of total docking points installed at this station, both available and unavailable.","type":"integer","minimum":0},"vehicle_capacity":{"description":"An object where each key is a vehicle_type_id and the value is a number presenting the total number of vehicles of this type that can park within the station_area (added in v2.1-RC).","type":"object","additionalProperties":{"type":"number"}},"is_valet_station":{"description":"Are valet services provided at this station? (added in v2.1-RC)","type":"boolean"},"is_charging_station":{"description":"Does the station support charging of electric vehicles? (added in v2.3-RC)","type":"boolean"},"rental_uris":{"description":"Contains rental uris for Android, iOS, and web in the android, ios, and web fields (added in v1.1).","type":"object","properties":{"android":{"description":"URI that can be passed to an Android app with an intent (added in v1.1).","type":"string","format":"uri"},"ios":{"description":"URI that can be used on iOS to launch the rental app for this station (added in v1.1).","type":"string","format":"uri"},"web":{"description":"URL that can be used by a web browser to show more information about renting a vehicle at this station (added in v1.1).","type":"string","format":"uri"}}},"vehicle_type_capacity":{"description":"An object where each key is a vehicle_type_id and the value is a number representing the total docking points installed at this station for each vehicle type (added in v2.1-RC).","type":"object","additionalProperties":{"type":"number"}}},"required":["station_id","name","lat","lon"]}}},"required":["stations"]}},"required":["last_updated","ttl","version","data"]},"station_status.json":{"description":"Describes the capacity and rental availability of the station","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Array that contains one object per station as defined below.","type":"object","properties":{"stations":{"type":"array","items":{"type":"object","properties":{"station_id":{"description":"Identifier of a station.","type":"string"},"num_bikes_available":{"description":"Number of vehicles of any type physically available for rental at the station.","type":"integer","minimum":0},"vehicle_types_available":{"description":"Array of objects displaying the total number of each vehicle type at the station (added in v2.1-RC).","type":"array","items":{"type":"object","properties":{"vehicle_type_id":{"description":"The vehicle_type_id of vehicle at the station (added in v2.1-RC).","type":"string"},"count":{"description":"A number representing the total amount of this vehicle type at the station (added in v2.1-RC).","type":"integer","minimum":0}},"required":["vehicle_type_id","count"]}},"num_bikes_disabled":{"description":"Number of disabled vehicles of any type at the station.","type":"integer","minimum":0},"num_docks_available":{"description":"Number of functional docks physically at the station.","type":"integer","minimum":0},"num_docks_disabled":{"description":"Number of empty but disabled docks at the station.","type":"integer","minimum":0},"is_installed":{"description":"Is the station currently on the street?","type":"boolean"},"is_renting":{"description":"Is the station currently renting vehicles?","type":"boolean"},"is_returning":{"description":"Is the station accepting vehicle returns?","type":"boolean"},"last_reported":{"description":"The last time this station reported its status to the operator's backend in POSIX time.","type":"integer","minimum":1450155600},"vehicle_docks_available":{"description":"Object displaying available docks by vehicle type (added in v2.1-RC).","type":"array","items":{"type":"object","properties":{"vehicle_type_ids":{"description":"An array of strings where each string represents a vehicle_type_id that is able to use a particular type of dock at the station (added in v2.1-RC).","type":"array","items":{"type":"string"}},"count":{"description":"A number representing the total number of available docks for the defined vehicle type (added in v2.1-RC).","type":"integer","minimum":0}},"required":["vehicle_type_ids","count"]}}},"required":["station_id","num_bikes_available","is_installed","is_renting","is_returning","last_reported"]}}},"required":["stations"]}},"required":["last_updated","ttl","version","data"]},"system_information.json":{"description":"Details including system operator, system location, year implemented, URL, contact info, time zone.","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Response data in the form of name:value pairs.","type":"object","properties":{"system_id":{"description":"Identifier for this vehicle share system. This should be globally unique (even between different systems).","type":"string"},"language":{"description":"The language that will be used throughout the rest of the files. It must match the value in the gbfs.json file.","type":"string","pattern":"^[a-z]{2,3}(-[A-Z]{2})?$"},"name":{"description":"Name of the system to be displayed to customers.","type":"string"},"short_name":{"description":"Optional abbreviation for a system.","type":"string"},"operator":{"description":"Name of the operator","type":"string"},"url":{"description":"The URL of the vehicle share system.","type":"string","format":"uri"},"purchase_url":{"description":"URL where a customer can purchase a membership.","type":"string","format":"uri"},"start_date":{"description":"Date that the system began operations.","type":"string","format":"date"},"phone_number":{"description":"A single voice telephone number for the specified system that presents the telephone number as typical for the system's service area.","type":"string"},"email":{"description":"Email address actively monitored by the operator's customer service department.","type":"string","format":"email"},"feed_contact_email":{"description":"A single contact email address for consumers of this feed to report technical issues (added in v1.1).","type":"string","format":"email"},"timezone":{"description":"The time zone where the system is located.","type":"string","enum":["Africa/Abidjan","Africa/Algiers","Africa/Bissau","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/El_Aaiun","Africa/Johannesburg","Africa/Juba","Africa/Khartoum","Africa/Lagos","Africa/Maputo","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Sao_Tome","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Asuncion","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Boa_Vista","America/Bogota","America/Boise","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Cayenne","America/Chicago","America/Chihuahua","America/Costa_Rica","America/Cuiaba","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Fort_Nelson","America/Fortaleza","America/Glace_Bay","America/Goose_Bay","America/Grand_Turk","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Inuvik","America/Iqaluit","America/Jamaica","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/La_Paz","America/Lima","America/Los_Angeles","America/Maceio","America/Managua","America/Manaus","America/Martinique","America/Matamoros","America/Mazatlan","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/New_York","America/Nipigon","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Nuuk","America/Ojinaga","America/Panama","America/Pangnirtung","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rainy_River","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Sitka","America/St_Johns","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Thunder_Bay","America/Tijuana","America/Toronto","America/Vancouver","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/Palmer","Antarctica/Rothera","Antarctica/Troll","Antarctica/Vostok","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Atyrau","Asia/Baghdad","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Chita","Asia/Choibalsan","Asia/Colombo","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kathmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Riyadh","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ulaanbaatar","Asia/Urumqi","Asia/Ust-Nera","Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faroe","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/Stanley","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/Perth","Australia/Sydney","CET","CST6CDT","EET","EST","EST5EDT","Etc/GMT","Etc/GMT-1","Etc/GMT-10","Etc/GMT-11","Etc/GMT-12","Etc/GMT-13","Etc/GMT-14","Etc/GMT-2","Etc/GMT-3","Etc/GMT-4","Etc/GMT-5","Etc/GMT-6","Etc/GMT-7","Etc/GMT-8","Etc/GMT-9","Etc/GMT+1","Etc/GMT+10","Etc/GMT+11","Etc/GMT+12","Etc/GMT+2","Etc/GMT+3","Etc/GMT+4","Etc/GMT+5","Etc/GMT+6","Etc/GMT+7","Etc/GMT+8","Etc/GMT+9","Etc/UTC","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belgrade","Europe/Berlin","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Helsinki","Europe/Istanbul","Europe/Kaliningrad","Europe/Kiev","Europe/Kirov","Europe/Lisbon","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Oslo","Europe/Paris","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/Saratov","Europe/Simferopol","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Ulyanovsk","Europe/Uzhgorod","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zaporozhye","Europe/Zurich","HST","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Reunion","MET","MST","MST7MDT","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Kanton","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Wake","Pacific/Wallis","PST8PDT","WET"]},"license_url":{"description":"A fully qualified URL of a page that defines the license terms for the GBFS data for this system.","type":"string","format":"uri"},"brand_assets":{"description":"An object where each key defines one of the items listed below (added in v2.3-RC).","type":"object","properties":{"brand_last_modified":{"description":"Date that indicates the last time any included brand assets were updated (added in v2.3-RC).","type":"string","format":"date"},"brand_terms_url":{"description":"A fully qualified URL pointing to the location of a page that defines the license terms of brand icons, colors or other trademark information (added in v2.3-RC).","type":"string","format":"uri"},"brand_image_url":{"description":"A fully qualified URL pointing to the location of a graphic file representing the brand for the service (added in v2.3-RC). ","type":"string","format":"uri"},"brand_image_url_dark":{"description":"A fully qualified URL pointing to the location of a graphic file representing the brand for the service for use in dark mode (added in v2.3-RC).","type":"string","format":"uri"},"color":{"description":"Color used to represent the brand for the service (added in v2.3-RC)","type":"string","pattern":"^#([a-fA-F0-9]{6})$"}},"required":["brand_last_modified","brand_image_url"]},"terms_url":{"description":"A fully qualified URL pointing to the terms of service (added in v2.3-RC)","type":"string","format":"uri"},"terms_last_updated":{"description":"The date that the terms of service provided at terms_url were last updated (added in v2.3-RC)","type":"string","format":"date"},"privacy_url":{"description":"A fully qualified URL pointing to the privacy policy for the service (added in v2.3-RC).","type":"string","format":"uri"},"privacy_last_updated":{"description":"The date that the privacy policy provided at privacy_url was last updated (added in v2.3-RC).","type":"string","format":"date"},"rental_apps":{"description":"Contains rental app information in the android and ios JSON objects (added in v1.1).","type":"object","properties":{"android":{"description":"Contains rental app download and app discovery information for the Android platform. (added in v1.1)","type":"object","properties":{"store_uri":{"description":"URI where the rental Android app can be downloaded from (added in v1.1).","type":"string","format":"uri"},"discovery_uri":{"description":"URI that can be used to discover if the rental Android app is installed on the device (added in v1.1).","type":"string","format":"uri"}},"required":["store_uri","discovery_uri"]},"ios":{"description":"Contains rental information for the iOS platform (added in v1.1).","type":"object","properties":{"store_uri":{"description":"URI where the rental iOS app can be downloaded from (added in v1.1).","type":"string","format":"uri"},"discovery_uri":{"description":"URI that can be used to discover if the rental iOS app is installed on the device (added in v1.1).","type":"string","format":"uri"}},"required":["store_uri","discovery_uri"]}}}},"required":["system_id","language","name","timezone"]}},"required":["last_updated","ttl","version","data"]},"free_bike_status.json":{"description":"Describes the vehicles that are available for rent (as of v2.1-RC2).","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Array that contains one object per bike as defined below.","type":"object","properties":{"bikes":{"type":"array","items":{"type":"object","properties":{"bike_id":{"description":"Rotating (as of v2.0) identifier of a vehicle.","type":"string"},"lat":{"description":"The latitude of the vehicle.","type":"number","minimum":-90,"maximum":90},"lon":{"description":"The longitude of the vehicle.","type":"number","minimum":-180,"maximum":180},"is_reserved":{"description":"Is the vehicle currently reserved?","type":"boolean"},"is_disabled":{"description":"Is the vehicle currently disabled (broken)?","type":"boolean"},"rental_uris":{"description":"Contains rental uris for Android, iOS, and web in the android, ios, and web fields (added in v1.1).","type":"object","properties":{"android":{"description":"URI that can be passed to an Android app with an intent (added in v1.1).","type":"string","format":"uri"},"ios":{"description":"URI that can be used on iOS to launch the rental app for this vehicle (added in v1.1).","type":"string","format":"uri"},"web":{"description":"URL that can be used by a web browser to show more information about renting this vehicle (added in v1.1).","type":"string","format":"uri"}}},"vehicle_type_id":{"description":"The vehicle_type_id of this vehicle (added in v2.1-RC).","type":"string"},"last_reported":{"description":"The last time this vehicle reported its status to the operator's backend in POSIX time (added in v2.1-RC).","type":"number","minimum":1450155600},"current_range_meters":{"description":"The furthest distance in meters that the vehicle can travel without recharging or refueling with the vehicle's current charge or fuel (added in v2.1-RC).","type":"number","minimum":0},"current_fuel_percent":{"description":"This value represents the current percentage, expressed from 0 to 1, of fuel or battery power remaining in the vehicle. Added in v2.3-RC.","type":"number","minimum":0},"station_id":{"description":"Identifier referencing the station_id if the vehicle is currently at a station (added in v2.1-RC2).","type":"string"},"home_station_id":{"description":"The station_id of the station this vehicle must be returned to (added in v2.3-RC).","type":"string"},"pricing_plan_id":{"description":"The plan_id of the pricing plan this vehicle is eligible for (added in v2.2).","type":"string"},"vehicle_equipment":{"description":"List of vehicle equipment provided by the operator in addition to the accessories already provided in the vehicle. Added in v2.3.","type":"array","items":{"enum":["child_seat_a","child_seat_b","child_seat_c","winter_tires","snow_chains"]}},"available_until":{"description":"The date and time when any rental of the vehicle must be completed. Added in v2.3.","type":"string","pattern":"^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(([+-]([0-9]{2}):([0-9]{2}))|Z)$"}},"required":["bike_id","is_reserved","is_disabled"]}}},"required":["bikes"]}},"required":["last_updated","ttl","version","data"]},"vehicle_types.json":{"description":"Describes the types of vehicles that System operator has available for rent (added in v2.1-RC).","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Response data in the form of name:value pairs.","type":"object","properties":{"vehicle_types":{"description":"Array that contains one object per vehicle type in the system as defined below.","type":"array","items":{"type":"object","properties":{"vehicle_type_id":{"description":"Unique identifier of a vehicle type.","type":"string"},"form_factor":{"description":"The vehicle's general form factor.","type":"string","enum":["bicycle","cargo_bicycle","car","moped","scooter_standing","scooter_seated","other","scooter"]},"rider_capacity":{"description":"The number of riders (driver included) the vehicle can legally accommodate","type":"integer","minimum":0},"cargo_volume_capacity":{"description":"Cargo volume available in the vehicle, expressed in liters.","type":"integer","minimum":0},"cargo_load_capacity":{"description":"The capacity of the vehicle cargo space (excluding passengers), expressed in kilograms.","type":"integer","minimum":0},"propulsion_type":{"description":"The primary propulsion type of the vehicle. Updated in v2.3 to represent car-sharing","type":"string","enum":["human","electric_assist","electric","combustion","combustion_diesel","hybrid","plug_in_hybrid","hydrogen_fuel_cell"]},"eco_label":{"description":"Vehicle air quality certificate. added in v2.3.","type":"array","items":{"type":"object","properties":{"country_code":{"description":" Country code following the ISO 3166-1 alpha-2 notation. Added in v2.3.","type":"string","pattern":"^[A-Z]{2}"},"eco_sticker":{"description":" Name of the eco label. Added in v2.3.","type":"string"}}},"required":["country_code","eco_sticker"]},"max_range_meters":{"description":"The furthest distance in meters that the vehicle can travel without recharging or refueling when it has the maximum amount of energy potential.","type":"number","minimum":0},"name":{"description":"The public name of this vehicle type.","type":"string"},"vehicle_accessories":{"description":"Description of accessories available in the vehicle.","type":"array","items":{"enum":["air_conditioning","automatic","manual","convertible","cruise_control","doors_2","doors_3","doors_4","doors_5","navigation"]}},"g_CO2_km":{"description":"Maximum quantity of CO2, in grams, emitted per kilometer, according to the WLTP. Added in v2.3","type":"integer","minimum":0},"vehicle_image":{"description":"URL to an image that would assist the user in identifying the vehicle. JPEG or PNG. Added in v2.3","type":"string","format":"uri"},"make":{"description":"The name of the vehicle manufacturer. Added in v2.3","type":"string"},"model":{"description":"The name of the vehicle model. Added in v2.3","type":"string"},"color":{"description":"The color of the vehicle. Added in v2.3","type":"string"},"wheel_count":{"description":"Number of wheels this vehicle type has. Added in v2.3","type":"integer","minimum":0},"max_permitted_speed":{"description":"The maximum speed in kilometers per hour this vehicle is permitted to reach in accordance with local permit and regulations. Added in v2.3","type":"integer","minimum":0},"rated_power":{"description":"The rated power of the motor for this vehicle type in watts. Added in v2.3","type":"integer","minimum":0},"default_reserve_time":{"description":"Maximum time in minutes that a vehicle can be reserved before a rental begins added in v2.3-RC.","type":"integer","minimum":0},"return_constraint":{"description":"The conditions for returning the vehicle at the end of the trip. Added in v2.3-RC as return_type, and updated to return_constraint in v2.3.","type":"string","enum":["free_floating","roundtrip_station","any_station","hybrid"]},"vehicle_assets":{"description":"An object where each key defines one of the items listed below added in v2.3-RC.","type":"object","properties":{"icon_url":{"description":"A fully qualified URL pointing to the location of a graphic icon file that MAY be used to represent this vehicle type on maps and in other applications added in v2.3-RC.","type":"string","format":"uri"},"icon_url_dark":{"description":"A fully qualified URL pointing to the location of a graphic icon file to be used to represent this vehicle type when in dark mode added in v2.3-RC.","type":"string","format":"uri"},"icon_last_modified":{"description":"Date that indicates the last time any included vehicle icon images were modified or updated added in v2.3-RC.","type":"string","format":"date"}},"required":["icon_url","icon_last_modified"]},"default_pricing_plan_id":{"description":"A plan_id as defined in system_pricing_plans.json added in v2.3-RC.","type":"string"},"pricing_plan_ids":{"description":"Array of all pricing plan IDs as defined in system_pricing_plans.json added in v2.3-RC.","type":"array","items":{"type":"string"}}},"required":["vehicle_type_id","form_factor","propulsion_type"]}}},"required":["vehicle_types"]}},"required":["last_updated","ttl","version","data"]}}},"paths":{"/api/gbfs/feed/3.0/manifest.json":{"get":{"operationId":"/api/gbfs/feed/3.0/manifest.json","externalDocs":{"description":"GBFS v3.0 manifest.json reference.","url":"https://github.com/MobilityData/gbfs/blob/v3.0/gbfs.md#manifestjson"},"tags":["gbfs"],"summary":"manifest.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v3.0/gbfs.md#manifestjson\">GBFS v3.0 manifest.json reference</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GbfsManifest"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/gbfs.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/gbfs.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"gbfs.json","description":"See <a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#gbfsjson\">GBFS v2.3 gbfs.json</a>.","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/gbfs.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/station_information.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/station_information.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"station_information.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#station_informationjson\">GBFS v2.3 station_information.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/station_information.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/station_status.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/station_status.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"station_status.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#station_statusjson\">GBFS v2.3 station_status.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/station_status.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/system_information.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/systeminformation.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"system_information.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#system_informationjson\">GBFS v2.3 system_information.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/system_information.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/free_bike_status.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/free_bike_status.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"free_bike_status.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#free_bike_statusjson\">GBFS v2.3 free_bike_status.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/free_bike_status.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/vehicle_types.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/vehicle_types.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"vehicle_types.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#vehicle_typesjson\">GBFS v2.3 vehicle_types.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/vehicle_types.json"}}}}}}}}},"apim":{"path":"/api/gbfs","serviceUrl":"http://localhost:80/api/gbfs"}},"apiGbfsFeed3EnSystemInformationJsonEndpoint":{"apiType":"http","path":"/api/gbfs/feed/2.3/en/:agency/system_information.json","dependencies":["pgPool"],"httpVerb":"get","openapi":{"openapi":"3.1.0","info":{"title":"BMC gbfs api","description":"BMC gbfs api","version":"3.1.0"},"components":{"schemas":{"HTTP400Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"cause":{"type":"object","properties":{"id":{"type":"number"},"message":{"type":"string"},"msg":{"type":"string"}}}}}},"example":{"error":{"message":"Mock message for error 409","cause":{"id":409,"message":"Mock message for error 409","msg":"Mock msg for error 409"}}}},"HTTP400InvalidParamError":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message","parameter"],"properties":{"message":{"type":"string","example":"Invalid someParameterName parameter. Supported values are: foo, bar."},"parameter":{"type":"string","example":"someParameterName"},"acceptedValues":{"type":"array","items":{"type":"string"},"example":["foo","bar"]},"acceptedFormats":{"type":"array","items":{"type":"string"}}}}}},"GbfsManifest":{"description":"An index of gbfs.json URLs for each GBFS data set produced by a publisher. A single instance of this file should be published at a single stable URL, for example: https://example.com/gbfs/manifest.json.","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in RFC3339 format.","type":"string","format":"date-time"},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"type":"object","properties":{"datasets":{"description":"An array of objects, each containing the keys below.","type":"array","items":{"type":"object","properties":{"system_id":{"description":"The system_id from system_information.json for the corresponding data set(s).","type":"string"},"versions":{"description":"Contains one object, as defined below, for each of the available versions of a feed. The array MUST be sorted by increasing MAJOR and MINOR version number.","type":"array","items":{"type":"object","properties":{"version":{"description":"The semantic version of the feed in the form X.Y","type":"string","enum":["1.0","1.1","2.0","2.1","2.2","2.3","3.0"]},"url":{"description":"URL of the corresponding gbfs.json endpoint","type":"string","format":"uri"}},"required":["version","url"]}}},"required":["system_id","versions"]}}},"required":["datasets"],"additionalProperties":false}},"required":["last_updated","ttl","version","data"]},"gbfs.json":{"description":"Auto-discovery file that links to all of the other files published by the system.","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Response data in the form of name:value pairs.","type":"object","minProperties":1,"additionalProperties":false,"properties":{"en":{"type":"object","properties":{"feeds":{"description":"An array of all of the feeds that are published by the auto-discovery file. Each element in the array is an object with the keys below.","type":"array","items":{"type":"object","properties":{"name":{"description":"Key identifying the type of feed this is. The key must be the base file name defined in the spec for the corresponding feed type.","type":"string","enum":["gbfs","gbfs_versions","system_information","vehicle_types","station_information","station_status","free_bike_status","system_hours","system_alerts","system_calendar","system_regions","system_pricing_plans","geofencing_zones"]},"url":{"description":"URL for the feed.","type":"string","format":"uri"}},"required":["name","url"]}}},"required":["feeds"]}}}},"required":["last_updated","ttl","version","data"]},"station_information.json":{"description":"List of all stations, their capacities and locations. REQUIRED of systems utilizing docks.","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Array that contains one object per station as defined below.","type":"object","properties":{"stations":{"type":"array","items":{"type":"object","properties":{"station_id":{"description":"Identifier of a station.","type":"string"},"name":{"description":"Public name of the station.","type":"string"},"short_name":{"description":"Short name or other type of identifier.","type":"string"},"lat":{"description":"The latitude of the station.","type":"number","minimum":-90,"maximum":90},"lon":{"description":"The longitude fo the station.","type":"number","minimum":-180,"maximum":180},"address":{"description":"Address where station is located.","type":"string"},"cross_street":{"description":"Cross street or landmark where the station is located.","type":"string"},"region_id":{"description":"Identifier of the region where the station is located.","type":"string"},"post_code":{"description":"Postal code where station is located.","type":"string"},"rental_methods":{"description":"Payment methods accepted at this station.","type":"array","items":{"type":"string","enum":["key","creditcard","paypass","applepay","androidpay","transitcard","accountnumber","phone"]},"minItems":1},"is_virtual_station":{"description":"Is this station a location with or without physical infrastructure? (added in v2.1-RC)","type":"boolean"},"station_area":{"description":"A multipolygon that describes the area of a virtual station (added in v2.1-RC).","type":"object","required":["type","coordinates"],"properties":{"type":{"type":"string","enum":["MultiPolygon"]},"coordinates":{"type":"array","items":{"type":"array","items":{"type":"array","minItems":4,"items":{"type":"array","minItems":2,"items":{"type":"number"}}}}}}},"parking_type":{"description":"Type of parking station. Added in v2.3","type":"string","enum":["parking_lot","street_parking","underground_parking","sidewalk_parking","other"]},"parking_hoop":{"description":"Are parking hoops present at this station? Added in v2.3","type":"boolean"},"contact_phone":{"description":"Contact phone of the station. Added in v2.3","type":"string"},"capacity":{"description":"Number of total docking points installed at this station, both available and unavailable.","type":"integer","minimum":0},"vehicle_capacity":{"description":"An object where each key is a vehicle_type_id and the value is a number presenting the total number of vehicles of this type that can park within the station_area (added in v2.1-RC).","type":"object","additionalProperties":{"type":"number"}},"is_valet_station":{"description":"Are valet services provided at this station? (added in v2.1-RC)","type":"boolean"},"is_charging_station":{"description":"Does the station support charging of electric vehicles? (added in v2.3-RC)","type":"boolean"},"rental_uris":{"description":"Contains rental uris for Android, iOS, and web in the android, ios, and web fields (added in v1.1).","type":"object","properties":{"android":{"description":"URI that can be passed to an Android app with an intent (added in v1.1).","type":"string","format":"uri"},"ios":{"description":"URI that can be used on iOS to launch the rental app for this station (added in v1.1).","type":"string","format":"uri"},"web":{"description":"URL that can be used by a web browser to show more information about renting a vehicle at this station (added in v1.1).","type":"string","format":"uri"}}},"vehicle_type_capacity":{"description":"An object where each key is a vehicle_type_id and the value is a number representing the total docking points installed at this station for each vehicle type (added in v2.1-RC).","type":"object","additionalProperties":{"type":"number"}}},"required":["station_id","name","lat","lon"]}}},"required":["stations"]}},"required":["last_updated","ttl","version","data"]},"station_status.json":{"description":"Describes the capacity and rental availability of the station","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Array that contains one object per station as defined below.","type":"object","properties":{"stations":{"type":"array","items":{"type":"object","properties":{"station_id":{"description":"Identifier of a station.","type":"string"},"num_bikes_available":{"description":"Number of vehicles of any type physically available for rental at the station.","type":"integer","minimum":0},"vehicle_types_available":{"description":"Array of objects displaying the total number of each vehicle type at the station (added in v2.1-RC).","type":"array","items":{"type":"object","properties":{"vehicle_type_id":{"description":"The vehicle_type_id of vehicle at the station (added in v2.1-RC).","type":"string"},"count":{"description":"A number representing the total amount of this vehicle type at the station (added in v2.1-RC).","type":"integer","minimum":0}},"required":["vehicle_type_id","count"]}},"num_bikes_disabled":{"description":"Number of disabled vehicles of any type at the station.","type":"integer","minimum":0},"num_docks_available":{"description":"Number of functional docks physically at the station.","type":"integer","minimum":0},"num_docks_disabled":{"description":"Number of empty but disabled docks at the station.","type":"integer","minimum":0},"is_installed":{"description":"Is the station currently on the street?","type":"boolean"},"is_renting":{"description":"Is the station currently renting vehicles?","type":"boolean"},"is_returning":{"description":"Is the station accepting vehicle returns?","type":"boolean"},"last_reported":{"description":"The last time this station reported its status to the operator's backend in POSIX time.","type":"integer","minimum":1450155600},"vehicle_docks_available":{"description":"Object displaying available docks by vehicle type (added in v2.1-RC).","type":"array","items":{"type":"object","properties":{"vehicle_type_ids":{"description":"An array of strings where each string represents a vehicle_type_id that is able to use a particular type of dock at the station (added in v2.1-RC).","type":"array","items":{"type":"string"}},"count":{"description":"A number representing the total number of available docks for the defined vehicle type (added in v2.1-RC).","type":"integer","minimum":0}},"required":["vehicle_type_ids","count"]}}},"required":["station_id","num_bikes_available","is_installed","is_renting","is_returning","last_reported"]}}},"required":["stations"]}},"required":["last_updated","ttl","version","data"]},"system_information.json":{"description":"Details including system operator, system location, year implemented, URL, contact info, time zone.","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Response data in the form of name:value pairs.","type":"object","properties":{"system_id":{"description":"Identifier for this vehicle share system. This should be globally unique (even between different systems).","type":"string"},"language":{"description":"The language that will be used throughout the rest of the files. It must match the value in the gbfs.json file.","type":"string","pattern":"^[a-z]{2,3}(-[A-Z]{2})?$"},"name":{"description":"Name of the system to be displayed to customers.","type":"string"},"short_name":{"description":"Optional abbreviation for a system.","type":"string"},"operator":{"description":"Name of the operator","type":"string"},"url":{"description":"The URL of the vehicle share system.","type":"string","format":"uri"},"purchase_url":{"description":"URL where a customer can purchase a membership.","type":"string","format":"uri"},"start_date":{"description":"Date that the system began operations.","type":"string","format":"date"},"phone_number":{"description":"A single voice telephone number for the specified system that presents the telephone number as typical for the system's service area.","type":"string"},"email":{"description":"Email address actively monitored by the operator's customer service department.","type":"string","format":"email"},"feed_contact_email":{"description":"A single contact email address for consumers of this feed to report technical issues (added in v1.1).","type":"string","format":"email"},"timezone":{"description":"The time zone where the system is located.","type":"string","enum":["Africa/Abidjan","Africa/Algiers","Africa/Bissau","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/El_Aaiun","Africa/Johannesburg","Africa/Juba","Africa/Khartoum","Africa/Lagos","Africa/Maputo","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Sao_Tome","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Asuncion","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Boa_Vista","America/Bogota","America/Boise","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Cayenne","America/Chicago","America/Chihuahua","America/Costa_Rica","America/Cuiaba","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Fort_Nelson","America/Fortaleza","America/Glace_Bay","America/Goose_Bay","America/Grand_Turk","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Inuvik","America/Iqaluit","America/Jamaica","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/La_Paz","America/Lima","America/Los_Angeles","America/Maceio","America/Managua","America/Manaus","America/Martinique","America/Matamoros","America/Mazatlan","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/New_York","America/Nipigon","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Nuuk","America/Ojinaga","America/Panama","America/Pangnirtung","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rainy_River","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Sitka","America/St_Johns","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Thunder_Bay","America/Tijuana","America/Toronto","America/Vancouver","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/Palmer","Antarctica/Rothera","Antarctica/Troll","Antarctica/Vostok","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Atyrau","Asia/Baghdad","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Chita","Asia/Choibalsan","Asia/Colombo","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kathmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Riyadh","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ulaanbaatar","Asia/Urumqi","Asia/Ust-Nera","Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faroe","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/Stanley","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/Perth","Australia/Sydney","CET","CST6CDT","EET","EST","EST5EDT","Etc/GMT","Etc/GMT-1","Etc/GMT-10","Etc/GMT-11","Etc/GMT-12","Etc/GMT-13","Etc/GMT-14","Etc/GMT-2","Etc/GMT-3","Etc/GMT-4","Etc/GMT-5","Etc/GMT-6","Etc/GMT-7","Etc/GMT-8","Etc/GMT-9","Etc/GMT+1","Etc/GMT+10","Etc/GMT+11","Etc/GMT+12","Etc/GMT+2","Etc/GMT+3","Etc/GMT+4","Etc/GMT+5","Etc/GMT+6","Etc/GMT+7","Etc/GMT+8","Etc/GMT+9","Etc/UTC","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belgrade","Europe/Berlin","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Helsinki","Europe/Istanbul","Europe/Kaliningrad","Europe/Kiev","Europe/Kirov","Europe/Lisbon","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Oslo","Europe/Paris","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/Saratov","Europe/Simferopol","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Ulyanovsk","Europe/Uzhgorod","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zaporozhye","Europe/Zurich","HST","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Reunion","MET","MST","MST7MDT","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Kanton","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Wake","Pacific/Wallis","PST8PDT","WET"]},"license_url":{"description":"A fully qualified URL of a page that defines the license terms for the GBFS data for this system.","type":"string","format":"uri"},"brand_assets":{"description":"An object where each key defines one of the items listed below (added in v2.3-RC).","type":"object","properties":{"brand_last_modified":{"description":"Date that indicates the last time any included brand assets were updated (added in v2.3-RC).","type":"string","format":"date"},"brand_terms_url":{"description":"A fully qualified URL pointing to the location of a page that defines the license terms of brand icons, colors or other trademark information (added in v2.3-RC).","type":"string","format":"uri"},"brand_image_url":{"description":"A fully qualified URL pointing to the location of a graphic file representing the brand for the service (added in v2.3-RC). ","type":"string","format":"uri"},"brand_image_url_dark":{"description":"A fully qualified URL pointing to the location of a graphic file representing the brand for the service for use in dark mode (added in v2.3-RC).","type":"string","format":"uri"},"color":{"description":"Color used to represent the brand for the service (added in v2.3-RC)","type":"string","pattern":"^#([a-fA-F0-9]{6})$"}},"required":["brand_last_modified","brand_image_url"]},"terms_url":{"description":"A fully qualified URL pointing to the terms of service (added in v2.3-RC)","type":"string","format":"uri"},"terms_last_updated":{"description":"The date that the terms of service provided at terms_url were last updated (added in v2.3-RC)","type":"string","format":"date"},"privacy_url":{"description":"A fully qualified URL pointing to the privacy policy for the service (added in v2.3-RC).","type":"string","format":"uri"},"privacy_last_updated":{"description":"The date that the privacy policy provided at privacy_url was last updated (added in v2.3-RC).","type":"string","format":"date"},"rental_apps":{"description":"Contains rental app information in the android and ios JSON objects (added in v1.1).","type":"object","properties":{"android":{"description":"Contains rental app download and app discovery information for the Android platform. (added in v1.1)","type":"object","properties":{"store_uri":{"description":"URI where the rental Android app can be downloaded from (added in v1.1).","type":"string","format":"uri"},"discovery_uri":{"description":"URI that can be used to discover if the rental Android app is installed on the device (added in v1.1).","type":"string","format":"uri"}},"required":["store_uri","discovery_uri"]},"ios":{"description":"Contains rental information for the iOS platform (added in v1.1).","type":"object","properties":{"store_uri":{"description":"URI where the rental iOS app can be downloaded from (added in v1.1).","type":"string","format":"uri"},"discovery_uri":{"description":"URI that can be used to discover if the rental iOS app is installed on the device (added in v1.1).","type":"string","format":"uri"}},"required":["store_uri","discovery_uri"]}}}},"required":["system_id","language","name","timezone"]}},"required":["last_updated","ttl","version","data"]},"free_bike_status.json":{"description":"Describes the vehicles that are available for rent (as of v2.1-RC2).","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Array that contains one object per bike as defined below.","type":"object","properties":{"bikes":{"type":"array","items":{"type":"object","properties":{"bike_id":{"description":"Rotating (as of v2.0) identifier of a vehicle.","type":"string"},"lat":{"description":"The latitude of the vehicle.","type":"number","minimum":-90,"maximum":90},"lon":{"description":"The longitude of the vehicle.","type":"number","minimum":-180,"maximum":180},"is_reserved":{"description":"Is the vehicle currently reserved?","type":"boolean"},"is_disabled":{"description":"Is the vehicle currently disabled (broken)?","type":"boolean"},"rental_uris":{"description":"Contains rental uris for Android, iOS, and web in the android, ios, and web fields (added in v1.1).","type":"object","properties":{"android":{"description":"URI that can be passed to an Android app with an intent (added in v1.1).","type":"string","format":"uri"},"ios":{"description":"URI that can be used on iOS to launch the rental app for this vehicle (added in v1.1).","type":"string","format":"uri"},"web":{"description":"URL that can be used by a web browser to show more information about renting this vehicle (added in v1.1).","type":"string","format":"uri"}}},"vehicle_type_id":{"description":"The vehicle_type_id of this vehicle (added in v2.1-RC).","type":"string"},"last_reported":{"description":"The last time this vehicle reported its status to the operator's backend in POSIX time (added in v2.1-RC).","type":"number","minimum":1450155600},"current_range_meters":{"description":"The furthest distance in meters that the vehicle can travel without recharging or refueling with the vehicle's current charge or fuel (added in v2.1-RC).","type":"number","minimum":0},"current_fuel_percent":{"description":"This value represents the current percentage, expressed from 0 to 1, of fuel or battery power remaining in the vehicle. Added in v2.3-RC.","type":"number","minimum":0},"station_id":{"description":"Identifier referencing the station_id if the vehicle is currently at a station (added in v2.1-RC2).","type":"string"},"home_station_id":{"description":"The station_id of the station this vehicle must be returned to (added in v2.3-RC).","type":"string"},"pricing_plan_id":{"description":"The plan_id of the pricing plan this vehicle is eligible for (added in v2.2).","type":"string"},"vehicle_equipment":{"description":"List of vehicle equipment provided by the operator in addition to the accessories already provided in the vehicle. Added in v2.3.","type":"array","items":{"enum":["child_seat_a","child_seat_b","child_seat_c","winter_tires","snow_chains"]}},"available_until":{"description":"The date and time when any rental of the vehicle must be completed. Added in v2.3.","type":"string","pattern":"^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(([+-]([0-9]{2}):([0-9]{2}))|Z)$"}},"required":["bike_id","is_reserved","is_disabled"]}}},"required":["bikes"]}},"required":["last_updated","ttl","version","data"]},"vehicle_types.json":{"description":"Describes the types of vehicles that System operator has available for rent (added in v2.1-RC).","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Response data in the form of name:value pairs.","type":"object","properties":{"vehicle_types":{"description":"Array that contains one object per vehicle type in the system as defined below.","type":"array","items":{"type":"object","properties":{"vehicle_type_id":{"description":"Unique identifier of a vehicle type.","type":"string"},"form_factor":{"description":"The vehicle's general form factor.","type":"string","enum":["bicycle","cargo_bicycle","car","moped","scooter_standing","scooter_seated","other","scooter"]},"rider_capacity":{"description":"The number of riders (driver included) the vehicle can legally accommodate","type":"integer","minimum":0},"cargo_volume_capacity":{"description":"Cargo volume available in the vehicle, expressed in liters.","type":"integer","minimum":0},"cargo_load_capacity":{"description":"The capacity of the vehicle cargo space (excluding passengers), expressed in kilograms.","type":"integer","minimum":0},"propulsion_type":{"description":"The primary propulsion type of the vehicle. Updated in v2.3 to represent car-sharing","type":"string","enum":["human","electric_assist","electric","combustion","combustion_diesel","hybrid","plug_in_hybrid","hydrogen_fuel_cell"]},"eco_label":{"description":"Vehicle air quality certificate. added in v2.3.","type":"array","items":{"type":"object","properties":{"country_code":{"description":" Country code following the ISO 3166-1 alpha-2 notation. Added in v2.3.","type":"string","pattern":"^[A-Z]{2}"},"eco_sticker":{"description":" Name of the eco label. Added in v2.3.","type":"string"}}},"required":["country_code","eco_sticker"]},"max_range_meters":{"description":"The furthest distance in meters that the vehicle can travel without recharging or refueling when it has the maximum amount of energy potential.","type":"number","minimum":0},"name":{"description":"The public name of this vehicle type.","type":"string"},"vehicle_accessories":{"description":"Description of accessories available in the vehicle.","type":"array","items":{"enum":["air_conditioning","automatic","manual","convertible","cruise_control","doors_2","doors_3","doors_4","doors_5","navigation"]}},"g_CO2_km":{"description":"Maximum quantity of CO2, in grams, emitted per kilometer, according to the WLTP. Added in v2.3","type":"integer","minimum":0},"vehicle_image":{"description":"URL to an image that would assist the user in identifying the vehicle. JPEG or PNG. Added in v2.3","type":"string","format":"uri"},"make":{"description":"The name of the vehicle manufacturer. Added in v2.3","type":"string"},"model":{"description":"The name of the vehicle model. Added in v2.3","type":"string"},"color":{"description":"The color of the vehicle. Added in v2.3","type":"string"},"wheel_count":{"description":"Number of wheels this vehicle type has. Added in v2.3","type":"integer","minimum":0},"max_permitted_speed":{"description":"The maximum speed in kilometers per hour this vehicle is permitted to reach in accordance with local permit and regulations. Added in v2.3","type":"integer","minimum":0},"rated_power":{"description":"The rated power of the motor for this vehicle type in watts. Added in v2.3","type":"integer","minimum":0},"default_reserve_time":{"description":"Maximum time in minutes that a vehicle can be reserved before a rental begins added in v2.3-RC.","type":"integer","minimum":0},"return_constraint":{"description":"The conditions for returning the vehicle at the end of the trip. Added in v2.3-RC as return_type, and updated to return_constraint in v2.3.","type":"string","enum":["free_floating","roundtrip_station","any_station","hybrid"]},"vehicle_assets":{"description":"An object where each key defines one of the items listed below added in v2.3-RC.","type":"object","properties":{"icon_url":{"description":"A fully qualified URL pointing to the location of a graphic icon file that MAY be used to represent this vehicle type on maps and in other applications added in v2.3-RC.","type":"string","format":"uri"},"icon_url_dark":{"description":"A fully qualified URL pointing to the location of a graphic icon file to be used to represent this vehicle type when in dark mode added in v2.3-RC.","type":"string","format":"uri"},"icon_last_modified":{"description":"Date that indicates the last time any included vehicle icon images were modified or updated added in v2.3-RC.","type":"string","format":"date"}},"required":["icon_url","icon_last_modified"]},"default_pricing_plan_id":{"description":"A plan_id as defined in system_pricing_plans.json added in v2.3-RC.","type":"string"},"pricing_plan_ids":{"description":"Array of all pricing plan IDs as defined in system_pricing_plans.json added in v2.3-RC.","type":"array","items":{"type":"string"}}},"required":["vehicle_type_id","form_factor","propulsion_type"]}}},"required":["vehicle_types"]}},"required":["last_updated","ttl","version","data"]}}},"paths":{"/api/gbfs/feed/3.0/manifest.json":{"get":{"operationId":"/api/gbfs/feed/3.0/manifest.json","externalDocs":{"description":"GBFS v3.0 manifest.json reference.","url":"https://github.com/MobilityData/gbfs/blob/v3.0/gbfs.md#manifestjson"},"tags":["gbfs"],"summary":"manifest.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v3.0/gbfs.md#manifestjson\">GBFS v3.0 manifest.json reference</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GbfsManifest"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/gbfs.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/gbfs.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"gbfs.json","description":"See <a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#gbfsjson\">GBFS v2.3 gbfs.json</a>.","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/gbfs.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/station_information.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/station_information.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"station_information.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#station_informationjson\">GBFS v2.3 station_information.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/station_information.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/station_status.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/station_status.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"station_status.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#station_statusjson\">GBFS v2.3 station_status.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/station_status.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/system_information.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/systeminformation.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"system_information.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#system_informationjson\">GBFS v2.3 system_information.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/system_information.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/free_bike_status.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/free_bike_status.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"free_bike_status.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#free_bike_statusjson\">GBFS v2.3 free_bike_status.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/free_bike_status.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/vehicle_types.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/vehicle_types.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"vehicle_types.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#vehicle_typesjson\">GBFS v2.3 vehicle_types.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/vehicle_types.json"}}}}}}}}},"apim":{"path":"/api/gbfs","serviceUrl":"http://localhost:80/api/gbfs"}},"apiGbfsFeed3EnVehicleTypesJsonEndpoint":{"apiType":"http","path":"/api/gbfs/feed/2.3/en/:agency/vehicle_types.json","dependencies":["pgPool"],"httpVerb":"get","openapi":{"openapi":"3.1.0","info":{"title":"BMC gbfs api","description":"BMC gbfs api","version":"3.1.0"},"components":{"schemas":{"HTTP400Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"cause":{"type":"object","properties":{"id":{"type":"number"},"message":{"type":"string"},"msg":{"type":"string"}}}}}},"example":{"error":{"message":"Mock message for error 409","cause":{"id":409,"message":"Mock message for error 409","msg":"Mock msg for error 409"}}}},"HTTP400InvalidParamError":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message","parameter"],"properties":{"message":{"type":"string","example":"Invalid someParameterName parameter. Supported values are: foo, bar."},"parameter":{"type":"string","example":"someParameterName"},"acceptedValues":{"type":"array","items":{"type":"string"},"example":["foo","bar"]},"acceptedFormats":{"type":"array","items":{"type":"string"}}}}}},"GbfsManifest":{"description":"An index of gbfs.json URLs for each GBFS data set produced by a publisher. A single instance of this file should be published at a single stable URL, for example: https://example.com/gbfs/manifest.json.","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in RFC3339 format.","type":"string","format":"date-time"},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"type":"object","properties":{"datasets":{"description":"An array of objects, each containing the keys below.","type":"array","items":{"type":"object","properties":{"system_id":{"description":"The system_id from system_information.json for the corresponding data set(s).","type":"string"},"versions":{"description":"Contains one object, as defined below, for each of the available versions of a feed. The array MUST be sorted by increasing MAJOR and MINOR version number.","type":"array","items":{"type":"object","properties":{"version":{"description":"The semantic version of the feed in the form X.Y","type":"string","enum":["1.0","1.1","2.0","2.1","2.2","2.3","3.0"]},"url":{"description":"URL of the corresponding gbfs.json endpoint","type":"string","format":"uri"}},"required":["version","url"]}}},"required":["system_id","versions"]}}},"required":["datasets"],"additionalProperties":false}},"required":["last_updated","ttl","version","data"]},"gbfs.json":{"description":"Auto-discovery file that links to all of the other files published by the system.","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Response data in the form of name:value pairs.","type":"object","minProperties":1,"additionalProperties":false,"properties":{"en":{"type":"object","properties":{"feeds":{"description":"An array of all of the feeds that are published by the auto-discovery file. Each element in the array is an object with the keys below.","type":"array","items":{"type":"object","properties":{"name":{"description":"Key identifying the type of feed this is. The key must be the base file name defined in the spec for the corresponding feed type.","type":"string","enum":["gbfs","gbfs_versions","system_information","vehicle_types","station_information","station_status","free_bike_status","system_hours","system_alerts","system_calendar","system_regions","system_pricing_plans","geofencing_zones"]},"url":{"description":"URL for the feed.","type":"string","format":"uri"}},"required":["name","url"]}}},"required":["feeds"]}}}},"required":["last_updated","ttl","version","data"]},"station_information.json":{"description":"List of all stations, their capacities and locations. REQUIRED of systems utilizing docks.","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Array that contains one object per station as defined below.","type":"object","properties":{"stations":{"type":"array","items":{"type":"object","properties":{"station_id":{"description":"Identifier of a station.","type":"string"},"name":{"description":"Public name of the station.","type":"string"},"short_name":{"description":"Short name or other type of identifier.","type":"string"},"lat":{"description":"The latitude of the station.","type":"number","minimum":-90,"maximum":90},"lon":{"description":"The longitude fo the station.","type":"number","minimum":-180,"maximum":180},"address":{"description":"Address where station is located.","type":"string"},"cross_street":{"description":"Cross street or landmark where the station is located.","type":"string"},"region_id":{"description":"Identifier of the region where the station is located.","type":"string"},"post_code":{"description":"Postal code where station is located.","type":"string"},"rental_methods":{"description":"Payment methods accepted at this station.","type":"array","items":{"type":"string","enum":["key","creditcard","paypass","applepay","androidpay","transitcard","accountnumber","phone"]},"minItems":1},"is_virtual_station":{"description":"Is this station a location with or without physical infrastructure? (added in v2.1-RC)","type":"boolean"},"station_area":{"description":"A multipolygon that describes the area of a virtual station (added in v2.1-RC).","type":"object","required":["type","coordinates"],"properties":{"type":{"type":"string","enum":["MultiPolygon"]},"coordinates":{"type":"array","items":{"type":"array","items":{"type":"array","minItems":4,"items":{"type":"array","minItems":2,"items":{"type":"number"}}}}}}},"parking_type":{"description":"Type of parking station. Added in v2.3","type":"string","enum":["parking_lot","street_parking","underground_parking","sidewalk_parking","other"]},"parking_hoop":{"description":"Are parking hoops present at this station? Added in v2.3","type":"boolean"},"contact_phone":{"description":"Contact phone of the station. Added in v2.3","type":"string"},"capacity":{"description":"Number of total docking points installed at this station, both available and unavailable.","type":"integer","minimum":0},"vehicle_capacity":{"description":"An object where each key is a vehicle_type_id and the value is a number presenting the total number of vehicles of this type that can park within the station_area (added in v2.1-RC).","type":"object","additionalProperties":{"type":"number"}},"is_valet_station":{"description":"Are valet services provided at this station? (added in v2.1-RC)","type":"boolean"},"is_charging_station":{"description":"Does the station support charging of electric vehicles? (added in v2.3-RC)","type":"boolean"},"rental_uris":{"description":"Contains rental uris for Android, iOS, and web in the android, ios, and web fields (added in v1.1).","type":"object","properties":{"android":{"description":"URI that can be passed to an Android app with an intent (added in v1.1).","type":"string","format":"uri"},"ios":{"description":"URI that can be used on iOS to launch the rental app for this station (added in v1.1).","type":"string","format":"uri"},"web":{"description":"URL that can be used by a web browser to show more information about renting a vehicle at this station (added in v1.1).","type":"string","format":"uri"}}},"vehicle_type_capacity":{"description":"An object where each key is a vehicle_type_id and the value is a number representing the total docking points installed at this station for each vehicle type (added in v2.1-RC).","type":"object","additionalProperties":{"type":"number"}}},"required":["station_id","name","lat","lon"]}}},"required":["stations"]}},"required":["last_updated","ttl","version","data"]},"station_status.json":{"description":"Describes the capacity and rental availability of the station","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Array that contains one object per station as defined below.","type":"object","properties":{"stations":{"type":"array","items":{"type":"object","properties":{"station_id":{"description":"Identifier of a station.","type":"string"},"num_bikes_available":{"description":"Number of vehicles of any type physically available for rental at the station.","type":"integer","minimum":0},"vehicle_types_available":{"description":"Array of objects displaying the total number of each vehicle type at the station (added in v2.1-RC).","type":"array","items":{"type":"object","properties":{"vehicle_type_id":{"description":"The vehicle_type_id of vehicle at the station (added in v2.1-RC).","type":"string"},"count":{"description":"A number representing the total amount of this vehicle type at the station (added in v2.1-RC).","type":"integer","minimum":0}},"required":["vehicle_type_id","count"]}},"num_bikes_disabled":{"description":"Number of disabled vehicles of any type at the station.","type":"integer","minimum":0},"num_docks_available":{"description":"Number of functional docks physically at the station.","type":"integer","minimum":0},"num_docks_disabled":{"description":"Number of empty but disabled docks at the station.","type":"integer","minimum":0},"is_installed":{"description":"Is the station currently on the street?","type":"boolean"},"is_renting":{"description":"Is the station currently renting vehicles?","type":"boolean"},"is_returning":{"description":"Is the station accepting vehicle returns?","type":"boolean"},"last_reported":{"description":"The last time this station reported its status to the operator's backend in POSIX time.","type":"integer","minimum":1450155600},"vehicle_docks_available":{"description":"Object displaying available docks by vehicle type (added in v2.1-RC).","type":"array","items":{"type":"object","properties":{"vehicle_type_ids":{"description":"An array of strings where each string represents a vehicle_type_id that is able to use a particular type of dock at the station (added in v2.1-RC).","type":"array","items":{"type":"string"}},"count":{"description":"A number representing the total number of available docks for the defined vehicle type (added in v2.1-RC).","type":"integer","minimum":0}},"required":["vehicle_type_ids","count"]}}},"required":["station_id","num_bikes_available","is_installed","is_renting","is_returning","last_reported"]}}},"required":["stations"]}},"required":["last_updated","ttl","version","data"]},"system_information.json":{"description":"Details including system operator, system location, year implemented, URL, contact info, time zone.","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Response data in the form of name:value pairs.","type":"object","properties":{"system_id":{"description":"Identifier for this vehicle share system. This should be globally unique (even between different systems).","type":"string"},"language":{"description":"The language that will be used throughout the rest of the files. It must match the value in the gbfs.json file.","type":"string","pattern":"^[a-z]{2,3}(-[A-Z]{2})?$"},"name":{"description":"Name of the system to be displayed to customers.","type":"string"},"short_name":{"description":"Optional abbreviation for a system.","type":"string"},"operator":{"description":"Name of the operator","type":"string"},"url":{"description":"The URL of the vehicle share system.","type":"string","format":"uri"},"purchase_url":{"description":"URL where a customer can purchase a membership.","type":"string","format":"uri"},"start_date":{"description":"Date that the system began operations.","type":"string","format":"date"},"phone_number":{"description":"A single voice telephone number for the specified system that presents the telephone number as typical for the system's service area.","type":"string"},"email":{"description":"Email address actively monitored by the operator's customer service department.","type":"string","format":"email"},"feed_contact_email":{"description":"A single contact email address for consumers of this feed to report technical issues (added in v1.1).","type":"string","format":"email"},"timezone":{"description":"The time zone where the system is located.","type":"string","enum":["Africa/Abidjan","Africa/Algiers","Africa/Bissau","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/El_Aaiun","Africa/Johannesburg","Africa/Juba","Africa/Khartoum","Africa/Lagos","Africa/Maputo","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Sao_Tome","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Asuncion","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Boa_Vista","America/Bogota","America/Boise","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Cayenne","America/Chicago","America/Chihuahua","America/Costa_Rica","America/Cuiaba","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Fort_Nelson","America/Fortaleza","America/Glace_Bay","America/Goose_Bay","America/Grand_Turk","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Inuvik","America/Iqaluit","America/Jamaica","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/La_Paz","America/Lima","America/Los_Angeles","America/Maceio","America/Managua","America/Manaus","America/Martinique","America/Matamoros","America/Mazatlan","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/New_York","America/Nipigon","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Nuuk","America/Ojinaga","America/Panama","America/Pangnirtung","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rainy_River","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Sitka","America/St_Johns","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Thunder_Bay","America/Tijuana","America/Toronto","America/Vancouver","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/Palmer","Antarctica/Rothera","Antarctica/Troll","Antarctica/Vostok","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Atyrau","Asia/Baghdad","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Chita","Asia/Choibalsan","Asia/Colombo","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kathmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Riyadh","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ulaanbaatar","Asia/Urumqi","Asia/Ust-Nera","Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faroe","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/Stanley","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/Perth","Australia/Sydney","CET","CST6CDT","EET","EST","EST5EDT","Etc/GMT","Etc/GMT-1","Etc/GMT-10","Etc/GMT-11","Etc/GMT-12","Etc/GMT-13","Etc/GMT-14","Etc/GMT-2","Etc/GMT-3","Etc/GMT-4","Etc/GMT-5","Etc/GMT-6","Etc/GMT-7","Etc/GMT-8","Etc/GMT-9","Etc/GMT+1","Etc/GMT+10","Etc/GMT+11","Etc/GMT+12","Etc/GMT+2","Etc/GMT+3","Etc/GMT+4","Etc/GMT+5","Etc/GMT+6","Etc/GMT+7","Etc/GMT+8","Etc/GMT+9","Etc/UTC","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belgrade","Europe/Berlin","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Helsinki","Europe/Istanbul","Europe/Kaliningrad","Europe/Kiev","Europe/Kirov","Europe/Lisbon","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Oslo","Europe/Paris","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/Saratov","Europe/Simferopol","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Ulyanovsk","Europe/Uzhgorod","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zaporozhye","Europe/Zurich","HST","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Reunion","MET","MST","MST7MDT","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Kanton","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Wake","Pacific/Wallis","PST8PDT","WET"]},"license_url":{"description":"A fully qualified URL of a page that defines the license terms for the GBFS data for this system.","type":"string","format":"uri"},"brand_assets":{"description":"An object where each key defines one of the items listed below (added in v2.3-RC).","type":"object","properties":{"brand_last_modified":{"description":"Date that indicates the last time any included brand assets were updated (added in v2.3-RC).","type":"string","format":"date"},"brand_terms_url":{"description":"A fully qualified URL pointing to the location of a page that defines the license terms of brand icons, colors or other trademark information (added in v2.3-RC).","type":"string","format":"uri"},"brand_image_url":{"description":"A fully qualified URL pointing to the location of a graphic file representing the brand for the service (added in v2.3-RC). ","type":"string","format":"uri"},"brand_image_url_dark":{"description":"A fully qualified URL pointing to the location of a graphic file representing the brand for the service for use in dark mode (added in v2.3-RC).","type":"string","format":"uri"},"color":{"description":"Color used to represent the brand for the service (added in v2.3-RC)","type":"string","pattern":"^#([a-fA-F0-9]{6})$"}},"required":["brand_last_modified","brand_image_url"]},"terms_url":{"description":"A fully qualified URL pointing to the terms of service (added in v2.3-RC)","type":"string","format":"uri"},"terms_last_updated":{"description":"The date that the terms of service provided at terms_url were last updated (added in v2.3-RC)","type":"string","format":"date"},"privacy_url":{"description":"A fully qualified URL pointing to the privacy policy for the service (added in v2.3-RC).","type":"string","format":"uri"},"privacy_last_updated":{"description":"The date that the privacy policy provided at privacy_url was last updated (added in v2.3-RC).","type":"string","format":"date"},"rental_apps":{"description":"Contains rental app information in the android and ios JSON objects (added in v1.1).","type":"object","properties":{"android":{"description":"Contains rental app download and app discovery information for the Android platform. (added in v1.1)","type":"object","properties":{"store_uri":{"description":"URI where the rental Android app can be downloaded from (added in v1.1).","type":"string","format":"uri"},"discovery_uri":{"description":"URI that can be used to discover if the rental Android app is installed on the device (added in v1.1).","type":"string","format":"uri"}},"required":["store_uri","discovery_uri"]},"ios":{"description":"Contains rental information for the iOS platform (added in v1.1).","type":"object","properties":{"store_uri":{"description":"URI where the rental iOS app can be downloaded from (added in v1.1).","type":"string","format":"uri"},"discovery_uri":{"description":"URI that can be used to discover if the rental iOS app is installed on the device (added in v1.1).","type":"string","format":"uri"}},"required":["store_uri","discovery_uri"]}}}},"required":["system_id","language","name","timezone"]}},"required":["last_updated","ttl","version","data"]},"free_bike_status.json":{"description":"Describes the vehicles that are available for rent (as of v2.1-RC2).","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Array that contains one object per bike as defined below.","type":"object","properties":{"bikes":{"type":"array","items":{"type":"object","properties":{"bike_id":{"description":"Rotating (as of v2.0) identifier of a vehicle.","type":"string"},"lat":{"description":"The latitude of the vehicle.","type":"number","minimum":-90,"maximum":90},"lon":{"description":"The longitude of the vehicle.","type":"number","minimum":-180,"maximum":180},"is_reserved":{"description":"Is the vehicle currently reserved?","type":"boolean"},"is_disabled":{"description":"Is the vehicle currently disabled (broken)?","type":"boolean"},"rental_uris":{"description":"Contains rental uris for Android, iOS, and web in the android, ios, and web fields (added in v1.1).","type":"object","properties":{"android":{"description":"URI that can be passed to an Android app with an intent (added in v1.1).","type":"string","format":"uri"},"ios":{"description":"URI that can be used on iOS to launch the rental app for this vehicle (added in v1.1).","type":"string","format":"uri"},"web":{"description":"URL that can be used by a web browser to show more information about renting this vehicle (added in v1.1).","type":"string","format":"uri"}}},"vehicle_type_id":{"description":"The vehicle_type_id of this vehicle (added in v2.1-RC).","type":"string"},"last_reported":{"description":"The last time this vehicle reported its status to the operator's backend in POSIX time (added in v2.1-RC).","type":"number","minimum":1450155600},"current_range_meters":{"description":"The furthest distance in meters that the vehicle can travel without recharging or refueling with the vehicle's current charge or fuel (added in v2.1-RC).","type":"number","minimum":0},"current_fuel_percent":{"description":"This value represents the current percentage, expressed from 0 to 1, of fuel or battery power remaining in the vehicle. Added in v2.3-RC.","type":"number","minimum":0},"station_id":{"description":"Identifier referencing the station_id if the vehicle is currently at a station (added in v2.1-RC2).","type":"string"},"home_station_id":{"description":"The station_id of the station this vehicle must be returned to (added in v2.3-RC).","type":"string"},"pricing_plan_id":{"description":"The plan_id of the pricing plan this vehicle is eligible for (added in v2.2).","type":"string"},"vehicle_equipment":{"description":"List of vehicle equipment provided by the operator in addition to the accessories already provided in the vehicle. Added in v2.3.","type":"array","items":{"enum":["child_seat_a","child_seat_b","child_seat_c","winter_tires","snow_chains"]}},"available_until":{"description":"The date and time when any rental of the vehicle must be completed. Added in v2.3.","type":"string","pattern":"^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(([+-]([0-9]{2}):([0-9]{2}))|Z)$"}},"required":["bike_id","is_reserved","is_disabled"]}}},"required":["bikes"]}},"required":["last_updated","ttl","version","data"]},"vehicle_types.json":{"description":"Describes the types of vehicles that System operator has available for rent (added in v2.1-RC).","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Response data in the form of name:value pairs.","type":"object","properties":{"vehicle_types":{"description":"Array that contains one object per vehicle type in the system as defined below.","type":"array","items":{"type":"object","properties":{"vehicle_type_id":{"description":"Unique identifier of a vehicle type.","type":"string"},"form_factor":{"description":"The vehicle's general form factor.","type":"string","enum":["bicycle","cargo_bicycle","car","moped","scooter_standing","scooter_seated","other","scooter"]},"rider_capacity":{"description":"The number of riders (driver included) the vehicle can legally accommodate","type":"integer","minimum":0},"cargo_volume_capacity":{"description":"Cargo volume available in the vehicle, expressed in liters.","type":"integer","minimum":0},"cargo_load_capacity":{"description":"The capacity of the vehicle cargo space (excluding passengers), expressed in kilograms.","type":"integer","minimum":0},"propulsion_type":{"description":"The primary propulsion type of the vehicle. Updated in v2.3 to represent car-sharing","type":"string","enum":["human","electric_assist","electric","combustion","combustion_diesel","hybrid","plug_in_hybrid","hydrogen_fuel_cell"]},"eco_label":{"description":"Vehicle air quality certificate. added in v2.3.","type":"array","items":{"type":"object","properties":{"country_code":{"description":" Country code following the ISO 3166-1 alpha-2 notation. Added in v2.3.","type":"string","pattern":"^[A-Z]{2}"},"eco_sticker":{"description":" Name of the eco label. Added in v2.3.","type":"string"}}},"required":["country_code","eco_sticker"]},"max_range_meters":{"description":"The furthest distance in meters that the vehicle can travel without recharging or refueling when it has the maximum amount of energy potential.","type":"number","minimum":0},"name":{"description":"The public name of this vehicle type.","type":"string"},"vehicle_accessories":{"description":"Description of accessories available in the vehicle.","type":"array","items":{"enum":["air_conditioning","automatic","manual","convertible","cruise_control","doors_2","doors_3","doors_4","doors_5","navigation"]}},"g_CO2_km":{"description":"Maximum quantity of CO2, in grams, emitted per kilometer, according to the WLTP. Added in v2.3","type":"integer","minimum":0},"vehicle_image":{"description":"URL to an image that would assist the user in identifying the vehicle. JPEG or PNG. Added in v2.3","type":"string","format":"uri"},"make":{"description":"The name of the vehicle manufacturer. Added in v2.3","type":"string"},"model":{"description":"The name of the vehicle model. Added in v2.3","type":"string"},"color":{"description":"The color of the vehicle. Added in v2.3","type":"string"},"wheel_count":{"description":"Number of wheels this vehicle type has. Added in v2.3","type":"integer","minimum":0},"max_permitted_speed":{"description":"The maximum speed in kilometers per hour this vehicle is permitted to reach in accordance with local permit and regulations. Added in v2.3","type":"integer","minimum":0},"rated_power":{"description":"The rated power of the motor for this vehicle type in watts. Added in v2.3","type":"integer","minimum":0},"default_reserve_time":{"description":"Maximum time in minutes that a vehicle can be reserved before a rental begins added in v2.3-RC.","type":"integer","minimum":0},"return_constraint":{"description":"The conditions for returning the vehicle at the end of the trip. Added in v2.3-RC as return_type, and updated to return_constraint in v2.3.","type":"string","enum":["free_floating","roundtrip_station","any_station","hybrid"]},"vehicle_assets":{"description":"An object where each key defines one of the items listed below added in v2.3-RC.","type":"object","properties":{"icon_url":{"description":"A fully qualified URL pointing to the location of a graphic icon file that MAY be used to represent this vehicle type on maps and in other applications added in v2.3-RC.","type":"string","format":"uri"},"icon_url_dark":{"description":"A fully qualified URL pointing to the location of a graphic icon file to be used to represent this vehicle type when in dark mode added in v2.3-RC.","type":"string","format":"uri"},"icon_last_modified":{"description":"Date that indicates the last time any included vehicle icon images were modified or updated added in v2.3-RC.","type":"string","format":"date"}},"required":["icon_url","icon_last_modified"]},"default_pricing_plan_id":{"description":"A plan_id as defined in system_pricing_plans.json added in v2.3-RC.","type":"string"},"pricing_plan_ids":{"description":"Array of all pricing plan IDs as defined in system_pricing_plans.json added in v2.3-RC.","type":"array","items":{"type":"string"}}},"required":["vehicle_type_id","form_factor","propulsion_type"]}}},"required":["vehicle_types"]}},"required":["last_updated","ttl","version","data"]}}},"paths":{"/api/gbfs/feed/3.0/manifest.json":{"get":{"operationId":"/api/gbfs/feed/3.0/manifest.json","externalDocs":{"description":"GBFS v3.0 manifest.json reference.","url":"https://github.com/MobilityData/gbfs/blob/v3.0/gbfs.md#manifestjson"},"tags":["gbfs"],"summary":"manifest.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v3.0/gbfs.md#manifestjson\">GBFS v3.0 manifest.json reference</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GbfsManifest"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/gbfs.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/gbfs.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"gbfs.json","description":"See <a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#gbfsjson\">GBFS v2.3 gbfs.json</a>.","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/gbfs.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/station_information.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/station_information.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"station_information.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#station_informationjson\">GBFS v2.3 station_information.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/station_information.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/station_status.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/station_status.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"station_status.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#station_statusjson\">GBFS v2.3 station_status.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/station_status.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/system_information.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/systeminformation.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"system_information.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#system_informationjson\">GBFS v2.3 system_information.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/system_information.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/free_bike_status.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/free_bike_status.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"free_bike_status.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#free_bike_statusjson\">GBFS v2.3 free_bike_status.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/free_bike_status.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/vehicle_types.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/vehicle_types.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"vehicle_types.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#vehicle_typesjson\">GBFS v2.3 vehicle_types.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/vehicle_types.json"}}}}}}}}},"apim":{"path":"/api/gbfs","serviceUrl":"http://localhost:80/api/gbfs"}},"apiGbfsFeed3EnManifestJsonEndpoint":{"apiType":"http","path":"/api/gbfs/feed/3.0/manifest.json","dependencies":["pgPool"],"httpVerb":"get","openapi":{"openapi":"3.1.0","info":{"title":"BMC gbfs api","description":"BMC gbfs api","version":"3.1.0"},"components":{"schemas":{"HTTP400Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"cause":{"type":"object","properties":{"id":{"type":"number"},"message":{"type":"string"},"msg":{"type":"string"}}}}}},"example":{"error":{"message":"Mock message for error 409","cause":{"id":409,"message":"Mock message for error 409","msg":"Mock msg for error 409"}}}},"HTTP400InvalidParamError":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message","parameter"],"properties":{"message":{"type":"string","example":"Invalid someParameterName parameter. Supported values are: foo, bar."},"parameter":{"type":"string","example":"someParameterName"},"acceptedValues":{"type":"array","items":{"type":"string"},"example":["foo","bar"]},"acceptedFormats":{"type":"array","items":{"type":"string"}}}}}},"GbfsManifest":{"description":"An index of gbfs.json URLs for each GBFS data set produced by a publisher. A single instance of this file should be published at a single stable URL, for example: https://example.com/gbfs/manifest.json.","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in RFC3339 format.","type":"string","format":"date-time"},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"type":"object","properties":{"datasets":{"description":"An array of objects, each containing the keys below.","type":"array","items":{"type":"object","properties":{"system_id":{"description":"The system_id from system_information.json for the corresponding data set(s).","type":"string"},"versions":{"description":"Contains one object, as defined below, for each of the available versions of a feed. The array MUST be sorted by increasing MAJOR and MINOR version number.","type":"array","items":{"type":"object","properties":{"version":{"description":"The semantic version of the feed in the form X.Y","type":"string","enum":["1.0","1.1","2.0","2.1","2.2","2.3","3.0"]},"url":{"description":"URL of the corresponding gbfs.json endpoint","type":"string","format":"uri"}},"required":["version","url"]}}},"required":["system_id","versions"]}}},"required":["datasets"],"additionalProperties":false}},"required":["last_updated","ttl","version","data"]},"gbfs.json":{"description":"Auto-discovery file that links to all of the other files published by the system.","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Response data in the form of name:value pairs.","type":"object","minProperties":1,"additionalProperties":false,"properties":{"en":{"type":"object","properties":{"feeds":{"description":"An array of all of the feeds that are published by the auto-discovery file. Each element in the array is an object with the keys below.","type":"array","items":{"type":"object","properties":{"name":{"description":"Key identifying the type of feed this is. The key must be the base file name defined in the spec for the corresponding feed type.","type":"string","enum":["gbfs","gbfs_versions","system_information","vehicle_types","station_information","station_status","free_bike_status","system_hours","system_alerts","system_calendar","system_regions","system_pricing_plans","geofencing_zones"]},"url":{"description":"URL for the feed.","type":"string","format":"uri"}},"required":["name","url"]}}},"required":["feeds"]}}}},"required":["last_updated","ttl","version","data"]},"station_information.json":{"description":"List of all stations, their capacities and locations. REQUIRED of systems utilizing docks.","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Array that contains one object per station as defined below.","type":"object","properties":{"stations":{"type":"array","items":{"type":"object","properties":{"station_id":{"description":"Identifier of a station.","type":"string"},"name":{"description":"Public name of the station.","type":"string"},"short_name":{"description":"Short name or other type of identifier.","type":"string"},"lat":{"description":"The latitude of the station.","type":"number","minimum":-90,"maximum":90},"lon":{"description":"The longitude fo the station.","type":"number","minimum":-180,"maximum":180},"address":{"description":"Address where station is located.","type":"string"},"cross_street":{"description":"Cross street or landmark where the station is located.","type":"string"},"region_id":{"description":"Identifier of the region where the station is located.","type":"string"},"post_code":{"description":"Postal code where station is located.","type":"string"},"rental_methods":{"description":"Payment methods accepted at this station.","type":"array","items":{"type":"string","enum":["key","creditcard","paypass","applepay","androidpay","transitcard","accountnumber","phone"]},"minItems":1},"is_virtual_station":{"description":"Is this station a location with or without physical infrastructure? (added in v2.1-RC)","type":"boolean"},"station_area":{"description":"A multipolygon that describes the area of a virtual station (added in v2.1-RC).","type":"object","required":["type","coordinates"],"properties":{"type":{"type":"string","enum":["MultiPolygon"]},"coordinates":{"type":"array","items":{"type":"array","items":{"type":"array","minItems":4,"items":{"type":"array","minItems":2,"items":{"type":"number"}}}}}}},"parking_type":{"description":"Type of parking station. Added in v2.3","type":"string","enum":["parking_lot","street_parking","underground_parking","sidewalk_parking","other"]},"parking_hoop":{"description":"Are parking hoops present at this station? Added in v2.3","type":"boolean"},"contact_phone":{"description":"Contact phone of the station. Added in v2.3","type":"string"},"capacity":{"description":"Number of total docking points installed at this station, both available and unavailable.","type":"integer","minimum":0},"vehicle_capacity":{"description":"An object where each key is a vehicle_type_id and the value is a number presenting the total number of vehicles of this type that can park within the station_area (added in v2.1-RC).","type":"object","additionalProperties":{"type":"number"}},"is_valet_station":{"description":"Are valet services provided at this station? (added in v2.1-RC)","type":"boolean"},"is_charging_station":{"description":"Does the station support charging of electric vehicles? (added in v2.3-RC)","type":"boolean"},"rental_uris":{"description":"Contains rental uris for Android, iOS, and web in the android, ios, and web fields (added in v1.1).","type":"object","properties":{"android":{"description":"URI that can be passed to an Android app with an intent (added in v1.1).","type":"string","format":"uri"},"ios":{"description":"URI that can be used on iOS to launch the rental app for this station (added in v1.1).","type":"string","format":"uri"},"web":{"description":"URL that can be used by a web browser to show more information about renting a vehicle at this station (added in v1.1).","type":"string","format":"uri"}}},"vehicle_type_capacity":{"description":"An object where each key is a vehicle_type_id and the value is a number representing the total docking points installed at this station for each vehicle type (added in v2.1-RC).","type":"object","additionalProperties":{"type":"number"}}},"required":["station_id","name","lat","lon"]}}},"required":["stations"]}},"required":["last_updated","ttl","version","data"]},"station_status.json":{"description":"Describes the capacity and rental availability of the station","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Array that contains one object per station as defined below.","type":"object","properties":{"stations":{"type":"array","items":{"type":"object","properties":{"station_id":{"description":"Identifier of a station.","type":"string"},"num_bikes_available":{"description":"Number of vehicles of any type physically available for rental at the station.","type":"integer","minimum":0},"vehicle_types_available":{"description":"Array of objects displaying the total number of each vehicle type at the station (added in v2.1-RC).","type":"array","items":{"type":"object","properties":{"vehicle_type_id":{"description":"The vehicle_type_id of vehicle at the station (added in v2.1-RC).","type":"string"},"count":{"description":"A number representing the total amount of this vehicle type at the station (added in v2.1-RC).","type":"integer","minimum":0}},"required":["vehicle_type_id","count"]}},"num_bikes_disabled":{"description":"Number of disabled vehicles of any type at the station.","type":"integer","minimum":0},"num_docks_available":{"description":"Number of functional docks physically at the station.","type":"integer","minimum":0},"num_docks_disabled":{"description":"Number of empty but disabled docks at the station.","type":"integer","minimum":0},"is_installed":{"description":"Is the station currently on the street?","type":"boolean"},"is_renting":{"description":"Is the station currently renting vehicles?","type":"boolean"},"is_returning":{"description":"Is the station accepting vehicle returns?","type":"boolean"},"last_reported":{"description":"The last time this station reported its status to the operator's backend in POSIX time.","type":"integer","minimum":1450155600},"vehicle_docks_available":{"description":"Object displaying available docks by vehicle type (added in v2.1-RC).","type":"array","items":{"type":"object","properties":{"vehicle_type_ids":{"description":"An array of strings where each string represents a vehicle_type_id that is able to use a particular type of dock at the station (added in v2.1-RC).","type":"array","items":{"type":"string"}},"count":{"description":"A number representing the total number of available docks for the defined vehicle type (added in v2.1-RC).","type":"integer","minimum":0}},"required":["vehicle_type_ids","count"]}}},"required":["station_id","num_bikes_available","is_installed","is_renting","is_returning","last_reported"]}}},"required":["stations"]}},"required":["last_updated","ttl","version","data"]},"system_information.json":{"description":"Details including system operator, system location, year implemented, URL, contact info, time zone.","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Response data in the form of name:value pairs.","type":"object","properties":{"system_id":{"description":"Identifier for this vehicle share system. This should be globally unique (even between different systems).","type":"string"},"language":{"description":"The language that will be used throughout the rest of the files. It must match the value in the gbfs.json file.","type":"string","pattern":"^[a-z]{2,3}(-[A-Z]{2})?$"},"name":{"description":"Name of the system to be displayed to customers.","type":"string"},"short_name":{"description":"Optional abbreviation for a system.","type":"string"},"operator":{"description":"Name of the operator","type":"string"},"url":{"description":"The URL of the vehicle share system.","type":"string","format":"uri"},"purchase_url":{"description":"URL where a customer can purchase a membership.","type":"string","format":"uri"},"start_date":{"description":"Date that the system began operations.","type":"string","format":"date"},"phone_number":{"description":"A single voice telephone number for the specified system that presents the telephone number as typical for the system's service area.","type":"string"},"email":{"description":"Email address actively monitored by the operator's customer service department.","type":"string","format":"email"},"feed_contact_email":{"description":"A single contact email address for consumers of this feed to report technical issues (added in v1.1).","type":"string","format":"email"},"timezone":{"description":"The time zone where the system is located.","type":"string","enum":["Africa/Abidjan","Africa/Algiers","Africa/Bissau","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/El_Aaiun","Africa/Johannesburg","Africa/Juba","Africa/Khartoum","Africa/Lagos","Africa/Maputo","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Sao_Tome","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Asuncion","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Boa_Vista","America/Bogota","America/Boise","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Cayenne","America/Chicago","America/Chihuahua","America/Costa_Rica","America/Cuiaba","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Fort_Nelson","America/Fortaleza","America/Glace_Bay","America/Goose_Bay","America/Grand_Turk","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Inuvik","America/Iqaluit","America/Jamaica","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/La_Paz","America/Lima","America/Los_Angeles","America/Maceio","America/Managua","America/Manaus","America/Martinique","America/Matamoros","America/Mazatlan","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/New_York","America/Nipigon","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Nuuk","America/Ojinaga","America/Panama","America/Pangnirtung","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rainy_River","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Sitka","America/St_Johns","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Thunder_Bay","America/Tijuana","America/Toronto","America/Vancouver","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/Palmer","Antarctica/Rothera","Antarctica/Troll","Antarctica/Vostok","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Atyrau","Asia/Baghdad","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Chita","Asia/Choibalsan","Asia/Colombo","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kathmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Riyadh","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ulaanbaatar","Asia/Urumqi","Asia/Ust-Nera","Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faroe","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/Stanley","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/Perth","Australia/Sydney","CET","CST6CDT","EET","EST","EST5EDT","Etc/GMT","Etc/GMT-1","Etc/GMT-10","Etc/GMT-11","Etc/GMT-12","Etc/GMT-13","Etc/GMT-14","Etc/GMT-2","Etc/GMT-3","Etc/GMT-4","Etc/GMT-5","Etc/GMT-6","Etc/GMT-7","Etc/GMT-8","Etc/GMT-9","Etc/GMT+1","Etc/GMT+10","Etc/GMT+11","Etc/GMT+12","Etc/GMT+2","Etc/GMT+3","Etc/GMT+4","Etc/GMT+5","Etc/GMT+6","Etc/GMT+7","Etc/GMT+8","Etc/GMT+9","Etc/UTC","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belgrade","Europe/Berlin","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Helsinki","Europe/Istanbul","Europe/Kaliningrad","Europe/Kiev","Europe/Kirov","Europe/Lisbon","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Oslo","Europe/Paris","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/Saratov","Europe/Simferopol","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Ulyanovsk","Europe/Uzhgorod","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zaporozhye","Europe/Zurich","HST","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Reunion","MET","MST","MST7MDT","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Kanton","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Wake","Pacific/Wallis","PST8PDT","WET"]},"license_url":{"description":"A fully qualified URL of a page that defines the license terms for the GBFS data for this system.","type":"string","format":"uri"},"brand_assets":{"description":"An object where each key defines one of the items listed below (added in v2.3-RC).","type":"object","properties":{"brand_last_modified":{"description":"Date that indicates the last time any included brand assets were updated (added in v2.3-RC).","type":"string","format":"date"},"brand_terms_url":{"description":"A fully qualified URL pointing to the location of a page that defines the license terms of brand icons, colors or other trademark information (added in v2.3-RC).","type":"string","format":"uri"},"brand_image_url":{"description":"A fully qualified URL pointing to the location of a graphic file representing the brand for the service (added in v2.3-RC). ","type":"string","format":"uri"},"brand_image_url_dark":{"description":"A fully qualified URL pointing to the location of a graphic file representing the brand for the service for use in dark mode (added in v2.3-RC).","type":"string","format":"uri"},"color":{"description":"Color used to represent the brand for the service (added in v2.3-RC)","type":"string","pattern":"^#([a-fA-F0-9]{6})$"}},"required":["brand_last_modified","brand_image_url"]},"terms_url":{"description":"A fully qualified URL pointing to the terms of service (added in v2.3-RC)","type":"string","format":"uri"},"terms_last_updated":{"description":"The date that the terms of service provided at terms_url were last updated (added in v2.3-RC)","type":"string","format":"date"},"privacy_url":{"description":"A fully qualified URL pointing to the privacy policy for the service (added in v2.3-RC).","type":"string","format":"uri"},"privacy_last_updated":{"description":"The date that the privacy policy provided at privacy_url was last updated (added in v2.3-RC).","type":"string","format":"date"},"rental_apps":{"description":"Contains rental app information in the android and ios JSON objects (added in v1.1).","type":"object","properties":{"android":{"description":"Contains rental app download and app discovery information for the Android platform. (added in v1.1)","type":"object","properties":{"store_uri":{"description":"URI where the rental Android app can be downloaded from (added in v1.1).","type":"string","format":"uri"},"discovery_uri":{"description":"URI that can be used to discover if the rental Android app is installed on the device (added in v1.1).","type":"string","format":"uri"}},"required":["store_uri","discovery_uri"]},"ios":{"description":"Contains rental information for the iOS platform (added in v1.1).","type":"object","properties":{"store_uri":{"description":"URI where the rental iOS app can be downloaded from (added in v1.1).","type":"string","format":"uri"},"discovery_uri":{"description":"URI that can be used to discover if the rental iOS app is installed on the device (added in v1.1).","type":"string","format":"uri"}},"required":["store_uri","discovery_uri"]}}}},"required":["system_id","language","name","timezone"]}},"required":["last_updated","ttl","version","data"]},"free_bike_status.json":{"description":"Describes the vehicles that are available for rent (as of v2.1-RC2).","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Array that contains one object per bike as defined below.","type":"object","properties":{"bikes":{"type":"array","items":{"type":"object","properties":{"bike_id":{"description":"Rotating (as of v2.0) identifier of a vehicle.","type":"string"},"lat":{"description":"The latitude of the vehicle.","type":"number","minimum":-90,"maximum":90},"lon":{"description":"The longitude of the vehicle.","type":"number","minimum":-180,"maximum":180},"is_reserved":{"description":"Is the vehicle currently reserved?","type":"boolean"},"is_disabled":{"description":"Is the vehicle currently disabled (broken)?","type":"boolean"},"rental_uris":{"description":"Contains rental uris for Android, iOS, and web in the android, ios, and web fields (added in v1.1).","type":"object","properties":{"android":{"description":"URI that can be passed to an Android app with an intent (added in v1.1).","type":"string","format":"uri"},"ios":{"description":"URI that can be used on iOS to launch the rental app for this vehicle (added in v1.1).","type":"string","format":"uri"},"web":{"description":"URL that can be used by a web browser to show more information about renting this vehicle (added in v1.1).","type":"string","format":"uri"}}},"vehicle_type_id":{"description":"The vehicle_type_id of this vehicle (added in v2.1-RC).","type":"string"},"last_reported":{"description":"The last time this vehicle reported its status to the operator's backend in POSIX time (added in v2.1-RC).","type":"number","minimum":1450155600},"current_range_meters":{"description":"The furthest distance in meters that the vehicle can travel without recharging or refueling with the vehicle's current charge or fuel (added in v2.1-RC).","type":"number","minimum":0},"current_fuel_percent":{"description":"This value represents the current percentage, expressed from 0 to 1, of fuel or battery power remaining in the vehicle. Added in v2.3-RC.","type":"number","minimum":0},"station_id":{"description":"Identifier referencing the station_id if the vehicle is currently at a station (added in v2.1-RC2).","type":"string"},"home_station_id":{"description":"The station_id of the station this vehicle must be returned to (added in v2.3-RC).","type":"string"},"pricing_plan_id":{"description":"The plan_id of the pricing plan this vehicle is eligible for (added in v2.2).","type":"string"},"vehicle_equipment":{"description":"List of vehicle equipment provided by the operator in addition to the accessories already provided in the vehicle. Added in v2.3.","type":"array","items":{"enum":["child_seat_a","child_seat_b","child_seat_c","winter_tires","snow_chains"]}},"available_until":{"description":"The date and time when any rental of the vehicle must be completed. Added in v2.3.","type":"string","pattern":"^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(([+-]([0-9]{2}):([0-9]{2}))|Z)$"}},"required":["bike_id","is_reserved","is_disabled"]}}},"required":["bikes"]}},"required":["last_updated","ttl","version","data"]},"vehicle_types.json":{"description":"Describes the types of vehicles that System operator has available for rent (added in v2.1-RC).","type":"object","properties":{"last_updated":{"description":"Last time the data in the feed was updated in POSIX time.","type":"integer","minimum":1450155600},"ttl":{"description":"Number of seconds before the data in the feed will be updated again (0 if the data should always be refreshed).","type":"integer","minimum":0},"version":{"type":"string","enum":["2.3"]},"data":{"description":"Response data in the form of name:value pairs.","type":"object","properties":{"vehicle_types":{"description":"Array that contains one object per vehicle type in the system as defined below.","type":"array","items":{"type":"object","properties":{"vehicle_type_id":{"description":"Unique identifier of a vehicle type.","type":"string"},"form_factor":{"description":"The vehicle's general form factor.","type":"string","enum":["bicycle","cargo_bicycle","car","moped","scooter_standing","scooter_seated","other","scooter"]},"rider_capacity":{"description":"The number of riders (driver included) the vehicle can legally accommodate","type":"integer","minimum":0},"cargo_volume_capacity":{"description":"Cargo volume available in the vehicle, expressed in liters.","type":"integer","minimum":0},"cargo_load_capacity":{"description":"The capacity of the vehicle cargo space (excluding passengers), expressed in kilograms.","type":"integer","minimum":0},"propulsion_type":{"description":"The primary propulsion type of the vehicle. Updated in v2.3 to represent car-sharing","type":"string","enum":["human","electric_assist","electric","combustion","combustion_diesel","hybrid","plug_in_hybrid","hydrogen_fuel_cell"]},"eco_label":{"description":"Vehicle air quality certificate. added in v2.3.","type":"array","items":{"type":"object","properties":{"country_code":{"description":" Country code following the ISO 3166-1 alpha-2 notation. Added in v2.3.","type":"string","pattern":"^[A-Z]{2}"},"eco_sticker":{"description":" Name of the eco label. Added in v2.3.","type":"string"}}},"required":["country_code","eco_sticker"]},"max_range_meters":{"description":"The furthest distance in meters that the vehicle can travel without recharging or refueling when it has the maximum amount of energy potential.","type":"number","minimum":0},"name":{"description":"The public name of this vehicle type.","type":"string"},"vehicle_accessories":{"description":"Description of accessories available in the vehicle.","type":"array","items":{"enum":["air_conditioning","automatic","manual","convertible","cruise_control","doors_2","doors_3","doors_4","doors_5","navigation"]}},"g_CO2_km":{"description":"Maximum quantity of CO2, in grams, emitted per kilometer, according to the WLTP. Added in v2.3","type":"integer","minimum":0},"vehicle_image":{"description":"URL to an image that would assist the user in identifying the vehicle. JPEG or PNG. Added in v2.3","type":"string","format":"uri"},"make":{"description":"The name of the vehicle manufacturer. Added in v2.3","type":"string"},"model":{"description":"The name of the vehicle model. Added in v2.3","type":"string"},"color":{"description":"The color of the vehicle. Added in v2.3","type":"string"},"wheel_count":{"description":"Number of wheels this vehicle type has. Added in v2.3","type":"integer","minimum":0},"max_permitted_speed":{"description":"The maximum speed in kilometers per hour this vehicle is permitted to reach in accordance with local permit and regulations. Added in v2.3","type":"integer","minimum":0},"rated_power":{"description":"The rated power of the motor for this vehicle type in watts. Added in v2.3","type":"integer","minimum":0},"default_reserve_time":{"description":"Maximum time in minutes that a vehicle can be reserved before a rental begins added in v2.3-RC.","type":"integer","minimum":0},"return_constraint":{"description":"The conditions for returning the vehicle at the end of the trip. Added in v2.3-RC as return_type, and updated to return_constraint in v2.3.","type":"string","enum":["free_floating","roundtrip_station","any_station","hybrid"]},"vehicle_assets":{"description":"An object where each key defines one of the items listed below added in v2.3-RC.","type":"object","properties":{"icon_url":{"description":"A fully qualified URL pointing to the location of a graphic icon file that MAY be used to represent this vehicle type on maps and in other applications added in v2.3-RC.","type":"string","format":"uri"},"icon_url_dark":{"description":"A fully qualified URL pointing to the location of a graphic icon file to be used to represent this vehicle type when in dark mode added in v2.3-RC.","type":"string","format":"uri"},"icon_last_modified":{"description":"Date that indicates the last time any included vehicle icon images were modified or updated added in v2.3-RC.","type":"string","format":"date"}},"required":["icon_url","icon_last_modified"]},"default_pricing_plan_id":{"description":"A plan_id as defined in system_pricing_plans.json added in v2.3-RC.","type":"string"},"pricing_plan_ids":{"description":"Array of all pricing plan IDs as defined in system_pricing_plans.json added in v2.3-RC.","type":"array","items":{"type":"string"}}},"required":["vehicle_type_id","form_factor","propulsion_type"]}}},"required":["vehicle_types"]}},"required":["last_updated","ttl","version","data"]}}},"paths":{"/api/gbfs/feed/3.0/manifest.json":{"get":{"operationId":"/api/gbfs/feed/3.0/manifest.json","externalDocs":{"description":"GBFS v3.0 manifest.json reference.","url":"https://github.com/MobilityData/gbfs/blob/v3.0/gbfs.md#manifestjson"},"tags":["gbfs"],"summary":"manifest.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v3.0/gbfs.md#manifestjson\">GBFS v3.0 manifest.json reference</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GbfsManifest"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/gbfs.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/gbfs.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"gbfs.json","description":"See <a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#gbfsjson\">GBFS v2.3 gbfs.json</a>.","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/gbfs.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/station_information.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/station_information.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"station_information.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#station_informationjson\">GBFS v2.3 station_information.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/station_information.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/station_status.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/station_status.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"station_status.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#station_statusjson\">GBFS v2.3 station_status.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/station_status.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/system_information.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/systeminformation.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"system_information.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#system_informationjson\">GBFS v2.3 system_information.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/system_information.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/free_bike_status.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/free_bike_status.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"free_bike_status.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#free_bike_statusjson\">GBFS v2.3 free_bike_status.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/free_bike_status.json"}}}}}}},"/api/gbfs/feed/2.3/en/{agency}/vehicle_types.json":{"get":{"operationId":"/api/gbfs/feed/2.3/en/{agency}/vehicle_types.json","tags":["gbfs"],"parameters":[{"name":"agency","in":"path","required":true,"schema":{"type":"string","description":"One public transport agency.\nConsult the gbfs manifest endpoint to get a list of valid agency."},"example":"bluebike"}],"summary":"vehicle_types.json","description":"<a href=\"https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md#vehicle_typesjson\">GBFS v2.3 vehicle_types.json</a>","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/vehicle_types.json"}}}}}}}}},"apim":{"path":"/api/gbfs","serviceUrl":"http://localhost:80/api/gbfs"}}},"map":{"apiMapStaticTilesEndpoint":{"apiType":"http","path":"/api/map/static/tiles/:layers/:z/:y/:x","dependencies":[],"httpVerb":"get","openapi":{"openapi":"3.1.0","info":{"title":"BMC static map tiles api","description":"BMC static map tiles api","version":"9.86.51"},"components":{"schemas":{}},"paths":{"/api/map/static/tiles/{layers}/{z}/{y}/{x}":{"get":{"operationId":"/api/map/static/tiles/{layers}/{z}/{y}/{x}","tags":["map"],"parameters":[{"name":"layers","in":"path","required":true,"schema":{"type":"string","description":"Source Layers. See mapStyle.json."},"example":"maps_main_landusages,maps_main_waterareas,maps_main_countries,maps_main_countries,maps_main_regions,maps_main_regions,maps_main_oceans,maps_main_aeroways,maps_main_walkways,maps_main_walkways,maps_main_roads,maps_main_roads,maps_main_primaries,maps_main_primaries,maps_main_railways,maps_main_railwayslightrail,maps_main_motorways,maps_main_motorways,maps_main_motorwaysref,maps_main_primariesref,maps_main_primariesref,maps_main_roadslabels,maps_main_walkways,maps_main_roads,maps_main_countries,maps_main_regions,maps_main_landusageslabelshospitals,maps_main_transitstops,maps_main_aeroways,maps_main_pointsofinterest,maps_main_placeshamlets,maps_main_placestowns,maps_main_placescountries,maps_main_placescities"},{"name":"z","in":"path","required":true,"schema":{"type":"number","description":"Zoom level. See mapStyle.json."},"example":15},{"name":"y","in":"path","required":true,"schema":{"type":"number","description":"y axis grid. See mapStyle.json."},"example":16869},{"name":"x","in":"path","required":true,"schema":{"type":"number","description":"z axis grid. See mapStyle.json."},"example":11090}],"summary":"BMC static map tiles api","description":"BMC static map tiles api","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{}}}}}}}}},"apim":{"path":"/api/map/static/tiles","serviceUrl":"https://maps-cached.api.staging.belgianmobility.io"}},"apiMapRtTilesEndpoint":{"apiType":"http","path":"/api/map/rt/tiles/:layers/:z/:y/:x","dependencies":[],"httpVerb":"get","openapi":{"openapi":"3.1.0","info":{"title":"BMC rt map tiles api","description":"BMC rt map tiles api","version":"9.86.51"},"components":{"schemas":{}},"paths":{"/api/map/rt/tiles/{layers}/{z}/{y}/{x}":{"get":{"operationId":"/api/map/rt/tiles/{layers}/{z}/{y}/{x}","tags":["map"],"parameters":[{"name":"layers","in":"path","required":true,"schema":{"type":"string","description":"Source Layers. See mapStyle.json."},"example":"maps_main_landusages,maps_main_waterareas,maps_main_countries,maps_main_countries,maps_main_regions,maps_main_regions,maps_main_oceans,maps_main_aeroways,maps_main_walkways,maps_main_walkways,maps_main_roads,maps_main_roads,maps_main_primaries,maps_main_primaries,maps_main_railways,maps_main_railwayslightrail,maps_main_motorways,maps_main_motorways,maps_main_motorwaysref,maps_main_primariesref,maps_main_primariesref,maps_main_roadslabels,maps_main_walkways,maps_main_roads,maps_main_countries,maps_main_regions,maps_main_landusageslabelshospitals,maps_main_transitstops,maps_main_aeroways,maps_main_pointsofinterest,maps_main_placeshamlets,maps_main_placestowns,maps_main_placescountries,maps_main_placescities"},{"name":"z","in":"path","required":true,"schema":{"type":"number","description":"Zoom level. See mapStyle.json."},"example":15},{"name":"y","in":"path","required":true,"schema":{"type":"number","description":"y axis grid. See mapStyle.json."},"example":16869},{"name":"x","in":"path","required":true,"schema":{"type":"number","description":"z axis grid. See mapStyle.json."},"example":11090}],"summary":"BMC rt map tiles api","description":"BMC rt map tiles api","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{}}}}}}}}},"apim":{"path":"/api/map/rt/tiles","serviceUrl":"https://maps.api.staging.belgianmobility.io"}}},"map.static-tiles":{"apiMapStaticTilesEndpoint":{"apiType":"http","path":"/api/map/static/tiles/:layers/:z/:y/:x","dependencies":[],"httpVerb":"get","openapi":{"openapi":"3.1.0","info":{"title":"BMC static map tiles api","description":"BMC static map tiles api","version":"9.86.51"},"components":{"schemas":{}},"paths":{"/api/map/static/tiles/{layers}/{z}/{y}/{x}":{"get":{"operationId":"/api/map/static/tiles/{layers}/{z}/{y}/{x}","tags":["map"],"parameters":[{"name":"layers","in":"path","required":true,"schema":{"type":"string","description":"Source Layers. See mapStyle.json."},"example":"maps_main_landusages,maps_main_waterareas,maps_main_countries,maps_main_countries,maps_main_regions,maps_main_regions,maps_main_oceans,maps_main_aeroways,maps_main_walkways,maps_main_walkways,maps_main_roads,maps_main_roads,maps_main_primaries,maps_main_primaries,maps_main_railways,maps_main_railwayslightrail,maps_main_motorways,maps_main_motorways,maps_main_motorwaysref,maps_main_primariesref,maps_main_primariesref,maps_main_roadslabels,maps_main_walkways,maps_main_roads,maps_main_countries,maps_main_regions,maps_main_landusageslabelshospitals,maps_main_transitstops,maps_main_aeroways,maps_main_pointsofinterest,maps_main_placeshamlets,maps_main_placestowns,maps_main_placescountries,maps_main_placescities"},{"name":"z","in":"path","required":true,"schema":{"type":"number","description":"Zoom level. See mapStyle.json."},"example":15},{"name":"y","in":"path","required":true,"schema":{"type":"number","description":"y axis grid. See mapStyle.json."},"example":16869},{"name":"x","in":"path","required":true,"schema":{"type":"number","description":"z axis grid. See mapStyle.json."},"example":11090}],"summary":"BMC static map tiles api","description":"BMC static map tiles api","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{}}}}}}}}},"apim":{"path":"/api/map/static/tiles","serviceUrl":"https://maps-cached.api.staging.belgianmobility.io"}}},"map.rt-tiles":{"apiMapRtTilesEndpoint":{"apiType":"http","path":"/api/map/rt/tiles/:layers/:z/:y/:x","dependencies":[],"httpVerb":"get","openapi":{"openapi":"3.1.0","info":{"title":"BMC rt map tiles api","description":"BMC rt map tiles api","version":"9.86.51"},"components":{"schemas":{}},"paths":{"/api/map/rt/tiles/{layers}/{z}/{y}/{x}":{"get":{"operationId":"/api/map/rt/tiles/{layers}/{z}/{y}/{x}","tags":["map"],"parameters":[{"name":"layers","in":"path","required":true,"schema":{"type":"string","description":"Source Layers. See mapStyle.json."},"example":"maps_main_landusages,maps_main_waterareas,maps_main_countries,maps_main_countries,maps_main_regions,maps_main_regions,maps_main_oceans,maps_main_aeroways,maps_main_walkways,maps_main_walkways,maps_main_roads,maps_main_roads,maps_main_primaries,maps_main_primaries,maps_main_railways,maps_main_railwayslightrail,maps_main_motorways,maps_main_motorways,maps_main_motorwaysref,maps_main_primariesref,maps_main_primariesref,maps_main_roadslabels,maps_main_walkways,maps_main_roads,maps_main_countries,maps_main_regions,maps_main_landusageslabelshospitals,maps_main_transitstops,maps_main_aeroways,maps_main_pointsofinterest,maps_main_placeshamlets,maps_main_placestowns,maps_main_placescountries,maps_main_placescities"},{"name":"z","in":"path","required":true,"schema":{"type":"number","description":"Zoom level. See mapStyle.json."},"example":15},{"name":"y","in":"path","required":true,"schema":{"type":"number","description":"y axis grid. See mapStyle.json."},"example":16869},{"name":"x","in":"path","required":true,"schema":{"type":"number","description":"z axis grid. See mapStyle.json."},"example":11090}],"summary":"BMC rt map tiles api","description":"BMC rt map tiles api","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{}}}}}}}}},"apim":{"path":"/api/map/rt/tiles","serviceUrl":"https://maps.api.staging.belgianmobility.io"}}},"gtfs-static":{"apiGtfsFeedDelijnStaticEndpoint":{"apiType":"http","path":"/api/gtfs/feed/delijn/static","dependencies":[],"httpVerb":"get","openapi":{"openapi":"3.1.0","info":{"title":"BMC static schedule feed API for De Lijn","version":"9.86.51"},"paths":{"/api/gtfs/feed/delijn/static":{"get":{"operationId":"/api/gtfs/feed/delijn/static","tags":["gtfs-static"],"summary":"BMC static schedule feed API for De Lijn","description":"BMC static schedule feed API for De Lijn. See <a href=\"https://gtfs.org/documentation/schedule/reference\">gtfs.org/documentation/schedule/reference</a> for the complete gtfs static schedule feed reference.","responses":{"200":{"description":"The static gtfs data bundle in ZIP format.","content":{"application/zip":{}}}}}}}}},"apiGtfsFeedNmbssncbStaticEndpoint":{"apiType":"http","path":"/api/gtfs/feed/nmbssncb/static","dependencies":[],"httpVerb":"get","openapi":{"openapi":"3.1.0","info":{"title":"BMC static schedule feed API for NMBS-SNCB","version":"9.86.51"},"paths":{"/api/gtfs/feed/nmbssncb/static":{"get":{"operationId":"/api/gtfs/feed/nmbssncb/static","tags":["gtfs-static"],"summary":"BMC static schedule feed API for NMBS-SNCB","description":"BMC static schedule feed API for NMBS-SNCB. See <a href=\"https://gtfs.org/documentation/schedule/reference\">gtfs.org/documentation/schedule/reference</a> for the complete gtfs static schedule feed reference.","responses":{"200":{"description":"The static gtfs data bundle in ZIP format.","content":{"application/zip":{}}}}}}}}},"apiGtfsFeedTecStaticEndpoint":{"apiType":"http","path":"/api/gtfs/feed/tec/static","dependencies":[],"httpVerb":"get","openapi":{"openapi":"3.1.0","info":{"title":"BMC static schedule feed API for TEC","version":"9.86.51"},"paths":{"/api/gtfs/feed/tec/static":{"get":{"operationId":"/api/gtfs/feed/tec/static","tags":["gtfs-static"],"summary":"BMC static schedule feed API for TEC","description":"BMC static schedule feed API for TEC. See <a href=\"https://gtfs.org/documentation/schedule/reference\">gtfs.org/documentation/schedule/reference</a> for the complete gtfs static schedule feed reference.","responses":{"200":{"description":"The static gtfs data bundle in ZIP format.","content":{"application/zip":{}}}}}}}}},"apiGtfsFeedStibmivbStaticEndpoint":{"apiType":"http","path":"/api/gtfs/feed/stibmivb/static","dependencies":[],"httpVerb":"get","openapi":{"openapi":"3.1.0","info":{"title":"BMC static schedule feed API for STIB-MIVB","version":"9.86.51"},"paths":{"/api/gtfs/feed/stibmivb/static":{"get":{"operationId":"/api/gtfs/feed/stibmivb/static","tags":["gtfs-static"],"summary":"BMC static schedule feed API for STIB-MIVB","description":"BMC static schedule feed API for STIB-MIVB. See <a href=\"https://gtfs.org/documentation/schedule/reference\">gtfs.org/documentation/schedule/reference</a> for the complete gtfs static schedule feed reference.","responses":{"200":{"description":"The static gtfs data bundle in ZIP format.","content":{"application/zip":{}}}}}}}}}},"gtfs-rt":{"apiGtfsFeedTecRtAlertEndpoint":{"apiType":"http","path":"/api/gtfs/feed/tec/rt/alert","dependencies":["redis"],"httpVerb":"get","openapi":{"openapi":"3.1.0","info":{"title":"BMC gtfs-rt alert API for TEC","version":"9.86.51"},"paths":{"/api/gtfs/feed/tec/rt/alert":{"get":{"operationId":"/api/gtfs/feed/tec/rt/alert","tags":["gtfs-rt-alert"],"parameters":[{"name":"format","in":"query","required":false,"schema":{"type":"string","description":"Desired format of the response. Accepted values are `json`, `protobuf`.","enum":["json","protobuf"]},"example":"json"}],"summary":"BMC gtfs-rt alert API for TEC","description":"See <a href=\"https://gtfs.org/documentation/realtime/proto\">gtfs.org/documentation/realtime/proto</a> for more information on protobuf reference. See <a href=\"https://gtfs.org/documentation/realtime/reference/\">gtfs.org/documentation/realtime/reference</a> for more information on model reference.","responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Feed-unique identifier for this entity.","type":"string","example":"rs:tec:90a2253b-652d-4c2c-75ed-08dd0a2a52d7"},"alert":{"description":"Alert (returned when requested feedName is ServiceAlerts)","type":"object","properties":{"activePeriod":{"description":"Times when the alert should be shown to the user.","type":"array","items":{"description":"TimeRange","type":"object","properties":{"start":{"description":"The start time of the period.","type":"number","example":1734476400},"end":{"description":"The end time of the period.","type":"number","example":1734562799}}}},"informedEntity":{"description":"Entities whose users we should notify of this alert.","type":"array","items":{"description":"EntitySelector","type":"object","properties":{"agencyId":{"description":"The agency_id from the GTFS feed that this selector refers to.","type":"string","example":"tec"},"routeId":{"description":"The route_id from the GTFS that this selector refers to.","type":"string","example":"gr:tec:L0018-21780"},"routeType":{"description":"The route_type from the GTFS that this selector refers to.","type":"number","example":3},"trip":{"description":"TripDescriptor","type":"object","properties":{"tripId":{"description":"The trip_id from the GTFS feed that this selector refers to.","type":"string","example":"gt:tec:42999929-L_PA_2024-24_LG_ME-Mercredi-12"},"routeId":{"description":"The route_id from the GTFS that this selector refers to.","type":"string","example":"L0018-21780"},"startDate":{"description":"The start date of this trip instance in YYYYMMDD format.","type":"string","example":"20241218"},"startTime":{"description":"The initially scheduled start time of this trip instance.","type":"string","example":"08:27:00"},"scheduleRelationship":{"description":"The relation between this trip and the static schedule.","type":"number","example":3}}}}}},"cause":{"description":"The cause of the alert.","type":"number","example":2},"effect":{"description":"The effect of the alert.","type":"number","example":1},"headerText":{"description":"Header for the alert.","type":"object","properties":{"translation":{"type":"array","items":{"description":"Translation","type":"object","properties":{"language":{"description":"BCP-47 language code.","type":"string","example":"en"},"text":{"description":"A UTF-8 string containing the message.","type":"string","example":"Cancellations"}}}}}},"descriptionText":{"description":"Description for the alert.","type":"object","properties":{"translation":{"type":"array","items":{"description":"Translation","type":"object","properties":{"language":{"description":"BCP-47 language code.","type":"string","example":"en"},"text":{"description":"A UTF-8 string containing the message.","type":"string","example":"Disruption : Cancellation trip 18 - line 18"}}}}}},"url":{"description":"The URL which provides additional information about the alert.","type":"object","properties":{"translation":{"type":"array","items":{"description":"Translation","type":"object","properties":{"language":{"description":"BCP-47 language code.","type":"string","example":"en"},"text":{"description":"A UTF-8 string containing the message.","type":"string","example":"https://www.letec.be/Traffic/Detail/90a2253b-652d-4c2c-75ed-08dd0a2a52d7"}}}}}}}}}}}}}}}}}}}},"apiGtfsFeedNmbssncbRtAlertEndpoint":{"apiType":"http","path":"/api/gtfs/feed/nmbssncb/rt/alert","dependencies":["redis"],"httpVerb":"get","openapi":{"openapi":"3.1.0","info":{"title":"BMC gtfs-rt alert API for NMBS-SNCB","version":"9.86.51"},"paths":{"/api/gtfs/feed/nmbssncb/rt/alert":{"get":{"operationId":"/api/gtfs/feed/nmbssncb/rt/alert","tags":["gtfs-rt-alert"],"parameters":[{"name":"format","in":"query","required":false,"schema":{"type":"string","description":"Desired format of the response. Accepted values are `json`, `protobuf`.","enum":["json","protobuf"]},"example":"json"}],"summary":"BMC gtfs-rt alert API for NMBS-SNCB","description":"See <a href=\"https://gtfs.org/documentation/realtime/proto\">gtfs.org/documentation/realtime/proto</a> for more information on protobuf reference. See <a href=\"https://gtfs.org/documentation/realtime/reference/\">gtfs.org/documentation/realtime/reference</a> for more information on model reference.","responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Feed-unique identifier for this entity.","type":"string","example":"rs:tec:90a2253b-652d-4c2c-75ed-08dd0a2a52d7"},"alert":{"description":"Alert (returned when requested feedName is ServiceAlerts)","type":"object","properties":{"activePeriod":{"description":"Times when the alert should be shown to the user.","type":"array","items":{"description":"TimeRange","type":"object","properties":{"start":{"description":"The start time of the period.","type":"number","example":1734476400},"end":{"description":"The end time of the period.","type":"number","example":1734562799}}}},"informedEntity":{"description":"Entities whose users we should notify of this alert.","type":"array","items":{"description":"EntitySelector","type":"object","properties":{"agencyId":{"description":"The agency_id from the GTFS feed that this selector refers to.","type":"string","example":"tec"},"routeId":{"description":"The route_id from the GTFS that this selector refers to.","type":"string","example":"gr:tec:L0018-21780"},"routeType":{"description":"The route_type from the GTFS that this selector refers to.","type":"number","example":3},"trip":{"description":"TripDescriptor","type":"object","properties":{"tripId":{"description":"The trip_id from the GTFS feed that this selector refers to.","type":"string","example":"gt:tec:42999929-L_PA_2024-24_LG_ME-Mercredi-12"},"routeId":{"description":"The route_id from the GTFS that this selector refers to.","type":"string","example":"L0018-21780"},"startDate":{"description":"The start date of this trip instance in YYYYMMDD format.","type":"string","example":"20241218"},"startTime":{"description":"The initially scheduled start time of this trip instance.","type":"string","example":"08:27:00"},"scheduleRelationship":{"description":"The relation between this trip and the static schedule.","type":"number","example":3}}}}}},"cause":{"description":"The cause of the alert.","type":"number","example":2},"effect":{"description":"The effect of the alert.","type":"number","example":1},"headerText":{"description":"Header for the alert.","type":"object","properties":{"translation":{"type":"array","items":{"description":"Translation","type":"object","properties":{"language":{"description":"BCP-47 language code.","type":"string","example":"en"},"text":{"description":"A UTF-8 string containing the message.","type":"string","example":"Cancellations"}}}}}},"descriptionText":{"description":"Description for the alert.","type":"object","properties":{"translation":{"type":"array","items":{"description":"Translation","type":"object","properties":{"language":{"description":"BCP-47 language code.","type":"string","example":"en"},"text":{"description":"A UTF-8 string containing the message.","type":"string","example":"Disruption : Cancellation trip 18 - line 18"}}}}}},"url":{"description":"The URL which provides additional information about the alert.","type":"object","properties":{"translation":{"type":"array","items":{"description":"Translation","type":"object","properties":{"language":{"description":"BCP-47 language code.","type":"string","example":"en"},"text":{"description":"A UTF-8 string containing the message.","type":"string","example":"https://www.letec.be/Traffic/Detail/90a2253b-652d-4c2c-75ed-08dd0a2a52d7"}}}}}}}}}}}}}}}}}}}},"apiGtfsFeedDelijnRtAlertEndpoint":{"apiType":"http","path":"/api/gtfs/feed/delijn/rt/alert","dependencies":["redis"],"httpVerb":"get","openapi":{"openapi":"3.1.0","info":{"title":"BMC gtfs-rt alert API for De Lijn","version":"9.86.51"},"paths":{"/api/gtfs/feed/delijn/rt/alert":{"get":{"operationId":"/api/gtfs/feed/delijn/rt/alert","tags":["gtfs-rt-alert"],"parameters":[{"name":"format","in":"query","required":false,"schema":{"type":"string","description":"Desired format of the response. Accepted values are `json`, `protobuf`.","enum":["json","protobuf"]},"example":"json"}],"summary":"BMC gtfs-rt alert API for De Lijn","description":"See <a href=\"https://gtfs.org/documentation/realtime/proto\">gtfs.org/documentation/realtime/proto</a> for more information on protobuf reference. See <a href=\"https://gtfs.org/documentation/realtime/reference/\">gtfs.org/documentation/realtime/reference</a> for more information on model reference.","responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Feed-unique identifier for this entity.","type":"string","example":"rs:tec:90a2253b-652d-4c2c-75ed-08dd0a2a52d7"},"alert":{"description":"Alert (returned when requested feedName is ServiceAlerts)","type":"object","properties":{"activePeriod":{"description":"Times when the alert should be shown to the user.","type":"array","items":{"description":"TimeRange","type":"object","properties":{"start":{"description":"The start time of the period.","type":"number","example":1734476400},"end":{"description":"The end time of the period.","type":"number","example":1734562799}}}},"informedEntity":{"description":"Entities whose users we should notify of this alert.","type":"array","items":{"description":"EntitySelector","type":"object","properties":{"agencyId":{"description":"The agency_id from the GTFS feed that this selector refers to.","type":"string","example":"tec"},"routeId":{"description":"The route_id from the GTFS that this selector refers to.","type":"string","example":"gr:tec:L0018-21780"},"routeType":{"description":"The route_type from the GTFS that this selector refers to.","type":"number","example":3},"trip":{"description":"TripDescriptor","type":"object","properties":{"tripId":{"description":"The trip_id from the GTFS feed that this selector refers to.","type":"string","example":"gt:tec:42999929-L_PA_2024-24_LG_ME-Mercredi-12"},"routeId":{"description":"The route_id from the GTFS that this selector refers to.","type":"string","example":"L0018-21780"},"startDate":{"description":"The start date of this trip instance in YYYYMMDD format.","type":"string","example":"20241218"},"startTime":{"description":"The initially scheduled start time of this trip instance.","type":"string","example":"08:27:00"},"scheduleRelationship":{"description":"The relation between this trip and the static schedule.","type":"number","example":3}}}}}},"cause":{"description":"The cause of the alert.","type":"number","example":2},"effect":{"description":"The effect of the alert.","type":"number","example":1},"headerText":{"description":"Header for the alert.","type":"object","properties":{"translation":{"type":"array","items":{"description":"Translation","type":"object","properties":{"language":{"description":"BCP-47 language code.","type":"string","example":"en"},"text":{"description":"A UTF-8 string containing the message.","type":"string","example":"Cancellations"}}}}}},"descriptionText":{"description":"Description for the alert.","type":"object","properties":{"translation":{"type":"array","items":{"description":"Translation","type":"object","properties":{"language":{"description":"BCP-47 language code.","type":"string","example":"en"},"text":{"description":"A UTF-8 string containing the message.","type":"string","example":"Disruption : Cancellation trip 18 - line 18"}}}}}},"url":{"description":"The URL which provides additional information about the alert.","type":"object","properties":{"translation":{"type":"array","items":{"description":"Translation","type":"object","properties":{"language":{"description":"BCP-47 language code.","type":"string","example":"en"},"text":{"description":"A UTF-8 string containing the message.","type":"string","example":"https://www.letec.be/Traffic/Detail/90a2253b-652d-4c2c-75ed-08dd0a2a52d7"}}}}}}}}}}}}}}}}}}}},"apiGtfsFeedStibmivbRtAlertEndpoint":{"apiType":"http","path":"/api/gtfs/feed/stibmivb/rt/alert","dependencies":["redis"],"httpVerb":"get","openapi":{"openapi":"3.1.0","info":{"title":"BMC gtfs-rt alert API for STIB-MIVB","version":"9.86.51"},"paths":{"/api/gtfs/feed/stibmivb/rt/alert":{"get":{"operationId":"/api/gtfs/feed/stibmivb/rt/alert","tags":["gtfs-rt-alert"],"parameters":[{"name":"format","in":"query","required":false,"schema":{"type":"string","description":"Desired format of the response. Accepted values are `json`, `protobuf`.","enum":["json","protobuf"]},"example":"json"}],"summary":"BMC gtfs-rt alert API for STIB-MIVB","description":"See <a href=\"https://gtfs.org/documentation/realtime/proto\">gtfs.org/documentation/realtime/proto</a> for more information on protobuf reference. See <a href=\"https://gtfs.org/documentation/realtime/reference/\">gtfs.org/documentation/realtime/reference</a> for more information on model reference.","responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Feed-unique identifier for this entity.","type":"string","example":"rs:tec:90a2253b-652d-4c2c-75ed-08dd0a2a52d7"},"alert":{"description":"Alert (returned when requested feedName is ServiceAlerts)","type":"object","properties":{"activePeriod":{"description":"Times when the alert should be shown to the user.","type":"array","items":{"description":"TimeRange","type":"object","properties":{"start":{"description":"The start time of the period.","type":"number","example":1734476400},"end":{"description":"The end time of the period.","type":"number","example":1734562799}}}},"informedEntity":{"description":"Entities whose users we should notify of this alert.","type":"array","items":{"description":"EntitySelector","type":"object","properties":{"agencyId":{"description":"The agency_id from the GTFS feed that this selector refers to.","type":"string","example":"tec"},"routeId":{"description":"The route_id from the GTFS that this selector refers to.","type":"string","example":"gr:tec:L0018-21780"},"routeType":{"description":"The route_type from the GTFS that this selector refers to.","type":"number","example":3},"trip":{"description":"TripDescriptor","type":"object","properties":{"tripId":{"description":"The trip_id from the GTFS feed that this selector refers to.","type":"string","example":"gt:tec:42999929-L_PA_2024-24_LG_ME-Mercredi-12"},"routeId":{"description":"The route_id from the GTFS that this selector refers to.","type":"string","example":"L0018-21780"},"startDate":{"description":"The start date of this trip instance in YYYYMMDD format.","type":"string","example":"20241218"},"startTime":{"description":"The initially scheduled start time of this trip instance.","type":"string","example":"08:27:00"},"scheduleRelationship":{"description":"The relation between this trip and the static schedule.","type":"number","example":3}}}}}},"cause":{"description":"The cause of the alert.","type":"number","example":2},"effect":{"description":"The effect of the alert.","type":"number","example":1},"headerText":{"description":"Header for the alert.","type":"object","properties":{"translation":{"type":"array","items":{"description":"Translation","type":"object","properties":{"language":{"description":"BCP-47 language code.","type":"string","example":"en"},"text":{"description":"A UTF-8 string containing the message.","type":"string","example":"Cancellations"}}}}}},"descriptionText":{"description":"Description for the alert.","type":"object","properties":{"translation":{"type":"array","items":{"description":"Translation","type":"object","properties":{"language":{"description":"BCP-47 language code.","type":"string","example":"en"},"text":{"description":"A UTF-8 string containing the message.","type":"string","example":"Disruption : Cancellation trip 18 - line 18"}}}}}},"url":{"description":"The URL which provides additional information about the alert.","type":"object","properties":{"translation":{"type":"array","items":{"description":"Translation","type":"object","properties":{"language":{"description":"BCP-47 language code.","type":"string","example":"en"},"text":{"description":"A UTF-8 string containing the message.","type":"string","example":"https://www.letec.be/Traffic/Detail/90a2253b-652d-4c2c-75ed-08dd0a2a52d7"}}}}}}}}}}}}}}}}}}}},"apiGtfsFeedTecRtTripUpdateEndpoint":{"apiType":"http","path":"/api/gtfs/feed/tec/rt/trip-update","dependencies":["redis"],"httpVerb":"get","openapi":{"openapi":"3.1.0","info":{"title":"BMC gtfs-rt trip-update API for TEC","version":"9.86.51"},"paths":{"/api/gtfs/feed/tec/rt/trip-update":{"get":{"operationId":"/api/gtfs/feed/tec/rt/trip-update","tags":["gtfs-rt-trip-update"],"parameters":[{"name":"format","in":"query","required":false,"schema":{"type":"string","description":"Desired format of the response. Accepted values are `json`, `protobuf`.","enum":["json","protobuf"]},"example":"json"}],"summary":"BMC gtfs-rt trip-update API for TEC","description":"See <a href=\"https://gtfs.org/documentation/realtime/proto\">gtfs.org/documentation/realtime/proto</a> for more information on protobuf reference. See <a href=\"https://gtfs.org/documentation/realtime/reference/\">gtfs.org/documentation/realtime/reference</a> for more information on model reference.","responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Feed-unique identifier for this entity.","type":"string","example":"rs:tec:90a2253b-652d-4c2c-75ed-08dd0a2a52d7"},"tripUpdate":{"description":"TripUpdate (returned when requested feedName is TripUpdates)","type":"object","properties":{"trip":{"description":"TripDescriptor","type":"object","properties":{"tripId":{"description":"The trip_id from the GTFS feed that this selector refers to.","type":"string","example":"gt:tec:42999929-L_PA_2024-24_LG_ME-Mercredi-12"},"routeId":{"description":"The route_id from the GTFS that this selector refers to.","type":"string","example":"L0018-21780"},"startDate":{"description":"The start date of this trip instance in YYYYMMDD format.","type":"string","example":"20241218"},"startTime":{"description":"The initially scheduled start time of this trip instance.","type":"string","example":"08:27:00"},"scheduleRelationship":{"description":"The relation between this trip and the static schedule.","type":"number","example":3}}},"vehicle":{"description":"Vehicle descriptor for this trip.","type":"object","properties":{"id":{"description":"Internal system identification of the vehicle.","type":"string","example":"1234"},"label":{"description":"User visible label, e.g., bus number.","type":"string","example":"Bus 12"},"licensePlate":{"description":"License plate of the vehicle.","type":"string","example":"1-ABC-234"}}},"stopTimeUpdate":{"description":"Updates to StopTimes for this trip.","type":"array","items":{"type":"object","properties":{"stopSequence":{"description":"Sequence of the stop in the trip.","type":"number","example":5},"stopId":{"description":"ID of the stop.","type":"string","example":"TEC:STP:12345"},"arrival":{"type":"object","properties":{"time":{"description":"Arrival time in POSIX format.","type":"number","example":1734477000},"delay":{"description":"Arrival delay in seconds.","type":"number","example":60}}},"departure":{"type":"object","properties":{"time":{"description":"Departure time in POSIX format.","type":"number","example":1734477060},"delay":{"description":"Departure delay in seconds.","type":"number","example":45}}},"scheduleRelationship":{"description":"The relation of this stop time to the static schedule.","type":"string","enum":["SCHEDULED","SKIPPED","NO_DATA"],"example":"SCHEDULED"}}}},"timestamp":{"description":"The update time of this TripUpdate.","type":"number","example":1734476500},"delay":{"description":"Overall delay in seconds.","type":"number","example":120}}}}}}}}}}}}}}},"apiGtfsFeedNmbssncbRtTripUpdateEndpoint":{"apiType":"http","path":"/api/gtfs/feed/nmbssncb/rt/trip-update","dependencies":["redis"],"httpVerb":"get","openapi":{"openapi":"3.1.0","info":{"title":"BMC gtfs-rt trip-update API for NMBS-SNCB","version":"9.86.51"},"paths":{"/api/gtfs/feed/nmbssncb/rt/trip-update":{"get":{"operationId":"/api/gtfs/feed/nmbssncb/rt/trip-update","tags":["gtfs-rt-trip-update"],"parameters":[{"name":"format","in":"query","required":false,"schema":{"type":"string","description":"Desired format of the response. Accepted values are `json`, `protobuf`.","enum":["json","protobuf"]},"example":"json"}],"summary":"BMC gtfs-rt trip-update API for NMBS-SNCB","description":"See <a href=\"https://gtfs.org/documentation/realtime/proto\">gtfs.org/documentation/realtime/proto</a> for more information on protobuf reference. See <a href=\"https://gtfs.org/documentation/realtime/reference/\">gtfs.org/documentation/realtime/reference</a> for more information on model reference.","responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Feed-unique identifier for this entity.","type":"string","example":"rs:tec:90a2253b-652d-4c2c-75ed-08dd0a2a52d7"},"tripUpdate":{"description":"TripUpdate (returned when requested feedName is TripUpdates)","type":"object","properties":{"trip":{"description":"TripDescriptor","type":"object","properties":{"tripId":{"description":"The trip_id from the GTFS feed that this selector refers to.","type":"string","example":"gt:tec:42999929-L_PA_2024-24_LG_ME-Mercredi-12"},"routeId":{"description":"The route_id from the GTFS that this selector refers to.","type":"string","example":"L0018-21780"},"startDate":{"description":"The start date of this trip instance in YYYYMMDD format.","type":"string","example":"20241218"},"startTime":{"description":"The initially scheduled start time of this trip instance.","type":"string","example":"08:27:00"},"scheduleRelationship":{"description":"The relation between this trip and the static schedule.","type":"number","example":3}}},"vehicle":{"description":"Vehicle descriptor for this trip.","type":"object","properties":{"id":{"description":"Internal system identification of the vehicle.","type":"string","example":"1234"},"label":{"description":"User visible label, e.g., bus number.","type":"string","example":"Bus 12"},"licensePlate":{"description":"License plate of the vehicle.","type":"string","example":"1-ABC-234"}}},"stopTimeUpdate":{"description":"Updates to StopTimes for this trip.","type":"array","items":{"type":"object","properties":{"stopSequence":{"description":"Sequence of the stop in the trip.","type":"number","example":5},"stopId":{"description":"ID of the stop.","type":"string","example":"TEC:STP:12345"},"arrival":{"type":"object","properties":{"time":{"description":"Arrival time in POSIX format.","type":"number","example":1734477000},"delay":{"description":"Arrival delay in seconds.","type":"number","example":60}}},"departure":{"type":"object","properties":{"time":{"description":"Departure time in POSIX format.","type":"number","example":1734477060},"delay":{"description":"Departure delay in seconds.","type":"number","example":45}}},"scheduleRelationship":{"description":"The relation of this stop time to the static schedule.","type":"string","enum":["SCHEDULED","SKIPPED","NO_DATA"],"example":"SCHEDULED"}}}},"timestamp":{"description":"The update time of this TripUpdate.","type":"number","example":1734476500},"delay":{"description":"Overall delay in seconds.","type":"number","example":120}}}}}}}}}}}}}}},"apiGtfsFeedDelijnRtTripUpdateEndpoint":{"apiType":"http","path":"/api/gtfs/feed/delijn/rt/trip-update","dependencies":["redis"],"httpVerb":"get","openapi":{"openapi":"3.1.0","info":{"title":"BMC gtfs-rt trip-update API for De Lijn","version":"9.86.51"},"paths":{"/api/gtfs/feed/delijn/rt/trip-update":{"get":{"operationId":"/api/gtfs/feed/delijn/rt/trip-update","tags":["gtfs-rt-trip-update"],"parameters":[{"name":"format","in":"query","required":false,"schema":{"type":"string","description":"Desired format of the response. Accepted values are `json`, `protobuf`.","enum":["json","protobuf"]},"example":"json"}],"summary":"BMC gtfs-rt trip-update API for De Lijn","description":"See <a href=\"https://gtfs.org/documentation/realtime/proto\">gtfs.org/documentation/realtime/proto</a> for more information on protobuf reference. See <a href=\"https://gtfs.org/documentation/realtime/reference/\">gtfs.org/documentation/realtime/reference</a> for more information on model reference.","responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Feed-unique identifier for this entity.","type":"string","example":"rs:tec:90a2253b-652d-4c2c-75ed-08dd0a2a52d7"},"tripUpdate":{"description":"TripUpdate (returned when requested feedName is TripUpdates)","type":"object","properties":{"trip":{"description":"TripDescriptor","type":"object","properties":{"tripId":{"description":"The trip_id from the GTFS feed that this selector refers to.","type":"string","example":"gt:tec:42999929-L_PA_2024-24_LG_ME-Mercredi-12"},"routeId":{"description":"The route_id from the GTFS that this selector refers to.","type":"string","example":"L0018-21780"},"startDate":{"description":"The start date of this trip instance in YYYYMMDD format.","type":"string","example":"20241218"},"startTime":{"description":"The initially scheduled start time of this trip instance.","type":"string","example":"08:27:00"},"scheduleRelationship":{"description":"The relation between this trip and the static schedule.","type":"number","example":3}}},"vehicle":{"description":"Vehicle descriptor for this trip.","type":"object","properties":{"id":{"description":"Internal system identification of the vehicle.","type":"string","example":"1234"},"label":{"description":"User visible label, e.g., bus number.","type":"string","example":"Bus 12"},"licensePlate":{"description":"License plate of the vehicle.","type":"string","example":"1-ABC-234"}}},"stopTimeUpdate":{"description":"Updates to StopTimes for this trip.","type":"array","items":{"type":"object","properties":{"stopSequence":{"description":"Sequence of the stop in the trip.","type":"number","example":5},"stopId":{"description":"ID of the stop.","type":"string","example":"TEC:STP:12345"},"arrival":{"type":"object","properties":{"time":{"description":"Arrival time in POSIX format.","type":"number","example":1734477000},"delay":{"description":"Arrival delay in seconds.","type":"number","example":60}}},"departure":{"type":"object","properties":{"time":{"description":"Departure time in POSIX format.","type":"number","example":1734477060},"delay":{"description":"Departure delay in seconds.","type":"number","example":45}}},"scheduleRelationship":{"description":"The relation of this stop time to the static schedule.","type":"string","enum":["SCHEDULED","SKIPPED","NO_DATA"],"example":"SCHEDULED"}}}},"timestamp":{"description":"The update time of this TripUpdate.","type":"number","example":1734476500},"delay":{"description":"Overall delay in seconds.","type":"number","example":120}}}}}}}}}}}}}}},"apiGtfsFeedStibmivbRtTripUpdateEndpoint":{"apiType":"http","path":"/api/gtfs/feed/stibmivb/rt/trip-update","dependencies":["redis"],"httpVerb":"get","openapi":{"openapi":"3.1.0","info":{"title":"BMC gtfs-rt trip-update API for STIB-MIVB","version":"9.86.51"},"paths":{"/api/gtfs/feed/stibmivb/rt/trip-update":{"get":{"operationId":"/api/gtfs/feed/stibmivb/rt/trip-update","tags":["gtfs-rt-trip-update"],"parameters":[{"name":"format","in":"query","required":false,"schema":{"type":"string","description":"Desired format of the response. Accepted values are `json`, `protobuf`.","enum":["json","protobuf"]},"example":"json"}],"summary":"BMC gtfs-rt trip-update API for STIB-MIVB","description":"See <a href=\"https://gtfs.org/documentation/realtime/proto\">gtfs.org/documentation/realtime/proto</a> for more information on protobuf reference. See <a href=\"https://gtfs.org/documentation/realtime/reference/\">gtfs.org/documentation/realtime/reference</a> for more information on model reference.","responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Feed-unique identifier for this entity.","type":"string","example":"rs:tec:90a2253b-652d-4c2c-75ed-08dd0a2a52d7"},"tripUpdate":{"description":"TripUpdate (returned when requested feedName is TripUpdates)","type":"object","properties":{"trip":{"description":"TripDescriptor","type":"object","properties":{"tripId":{"description":"The trip_id from the GTFS feed that this selector refers to.","type":"string","example":"gt:tec:42999929-L_PA_2024-24_LG_ME-Mercredi-12"},"routeId":{"description":"The route_id from the GTFS that this selector refers to.","type":"string","example":"L0018-21780"},"startDate":{"description":"The start date of this trip instance in YYYYMMDD format.","type":"string","example":"20241218"},"startTime":{"description":"The initially scheduled start time of this trip instance.","type":"string","example":"08:27:00"},"scheduleRelationship":{"description":"The relation between this trip and the static schedule.","type":"number","example":3}}},"vehicle":{"description":"Vehicle descriptor for this trip.","type":"object","properties":{"id":{"description":"Internal system identification of the vehicle.","type":"string","example":"1234"},"label":{"description":"User visible label, e.g., bus number.","type":"string","example":"Bus 12"},"licensePlate":{"description":"License plate of the vehicle.","type":"string","example":"1-ABC-234"}}},"stopTimeUpdate":{"description":"Updates to StopTimes for this trip.","type":"array","items":{"type":"object","properties":{"stopSequence":{"description":"Sequence of the stop in the trip.","type":"number","example":5},"stopId":{"description":"ID of the stop.","type":"string","example":"TEC:STP:12345"},"arrival":{"type":"object","properties":{"time":{"description":"Arrival time in POSIX format.","type":"number","example":1734477000},"delay":{"description":"Arrival delay in seconds.","type":"number","example":60}}},"departure":{"type":"object","properties":{"time":{"description":"Departure time in POSIX format.","type":"number","example":1734477060},"delay":{"description":"Departure delay in seconds.","type":"number","example":45}}},"scheduleRelationship":{"description":"The relation of this stop time to the static schedule.","type":"string","enum":["SCHEDULED","SKIPPED","NO_DATA"],"example":"SCHEDULED"}}}},"timestamp":{"description":"The update time of this TripUpdate.","type":"number","example":1734476500},"delay":{"description":"Overall delay in seconds.","type":"number","example":120}}}}}}}}}}}}}}}},"stibmivb-rt":{"apiDatasetsEndpoint":{"apiType":"http","path":"/api/datasets/:filename.json","dependencies":["redis"],"openapi":{"openapi":"3.1.0","info":{"title":"BMC datasets api","description":"BMC datasets api","version":"3.1.0"},"paths":{"/api/datasets/{filename}.json":{"get":{"summary":"Query dataset with ODSQL-inspired syntax","description":"Retrieve and query datasets from Redis using ODSQL-inspired query syntax with comprehensive filtering, aggregation, sorting, and field selection capabilities.\n\n## Query Language Features\n\n### SELECT Clause\nChoose specific fields, create aliases, and apply aggregation functions:\n- Field selection: `name,category,timestamp`\n- Aliases: `name as title, category as type`\n- Aggregations: `count(*) as total, sum(amount), avg(price), min(value), max(value), median(score)`\n\n### WHERE Clause\nFilter records using comparison and pattern matching:\n- Operators: `=`, `!=`, `<`, `>`, `<=`, `>=`\n- Pattern matching: `name LIKE \"%transport%\"`\n- Examples: `status=\"active\"`, `price>100`, `category LIKE \"bus%\"`\n\n### GROUP BY Clause\nAggregate data by field values, works with SELECT aggregations:\n- Single field: `category`\n- Multiple fields: `category,status`\n- With aggregation: `?select=category,count(*) as total&group_by=category`\n\n### ORDER BY Clause\nSort results by field values:\n- Single field: `name` (ASC default)\n- With direction: `timestamp DESC`\n- Multiple fields: `category ASC, timestamp DESC`\n\n### Pagination\nUse `limit` (max 1000) and `offset` for result pagination.\n\n## Complex Query Examples\n\n**Transit analysis:**\n`?select=stop_name,avg(waiting_time) as avg_wait&where=route_type=\"bus\"&group_by=stop_name&order_by=avg_wait DESC&limit=10`\n\n**Vehicle monitoring:**\n`?select=route_id,count(*) as vehicles,avg(speed) as avg_speed&where=status=\"active\"&group_by=route_id`","operationId":"datasets","tags":["Datasets"],"parameters":[{"name":"filename","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-zA-Z0-9_-]+$"},"description":"The filename (without .json extension) to use as Redis key"},{"name":"select","in":"query","required":false,"schema":{"type":"string"},"description":"SELECT clause: comma-separated field names, supports aliases with \"as\" keyword and aggregation functions (count, sum, avg, min, max, median)","example":"field1, field2 as alias, count(*) as total"},{"name":"where","in":"query","required":false,"schema":{"type":"string"},"description":"WHERE clause: filter expression using =, !=, <, >, <=, >=, LIKE operators","example":"status = \"active\" OR category LIKE \"%transport%\""},{"name":"group_by","in":"query","required":false,"schema":{"type":"string"},"description":"GROUP BY clause: comma-separated field names for aggregation","example":"category, status"},{"name":"order_by","in":"query","required":false,"schema":{"type":"string"},"description":"ORDER BY clause: comma-separated field names with optional ASC/DESC","example":"timestamp DESC, name ASC"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000},"description":"Maximum number of records to return (max 1000)","example":100},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Number of records to skip for pagination","example":20}],"responses":{"200":{"description":"Dataset retrieved and processed successfully with ODSQL-inspired query processing. Response includes processed records, metadata about the operation, and applied parameters.","content":{"application/json":{"schema":{"type":"object","properties":{"records":{"type":"array","items":{"type":"object"},"description":"Array of data records after query processing (filtering, aggregation, sorting, field selection)","example":[{"stop_name":"Central Station","avg_wait":5.2},{"stop_name":"Airport","avg_wait":8.1}]},"total_count":{"type":"integer","description":"Total number of records after processing (before pagination)","example":25},"parameters":{"type":"object","properties":{"select":{"type":"array","items":{"type":"string"}},"where":{"type":"string"},"group_by":{"type":"array","items":{"type":"string"}},"order_by":{"type":"string"},"limit":{"type":"integer"},"offset":{"type":"integer"}},"description":"Applied query parameters for transparency","example":{"select":["stop_name","avg(waiting_time) as avg_wait"],"where":"route_type=\"bus\"","group_by":["stop_name"],"order_by":"avg_wait DESC","limit":10}},"metadata":{"type":"object","properties":{"fields":{"type":"array","items":{"type":"string"},"description":"Available field names in the result set"},"data_processed_count":{"type":"integer","description":"Original number of records in the dataset"},"filtered_count":{"type":"integer","description":"Number of records after WHERE filtering"}},"description":"Processing metadata and statistics","example":{"fields":["stop_name","avg_wait"],"data_processed_count":5000,"filtered_count":250}}},"required":["records","total_count"]}}}},"400":{"description":"Bad request - invalid filename","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"403":{"description":"Forbidden - filename not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Data not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}}}}}},"httpVerb":"get","apim":{"path":"/api/datasets","serviceUrl":"http://localhost:80/api/datasets"}}},"search":{"apiSearchGeocoderRecipeBmcEndpoint":{"apiType":"http","path":"/api/search/geocoder/recipe/bmc","dependencies":["esClient"],"openapi":{"openapi":"3.1.0","info":{"title":"Search","description":"Search for addresses, points of interests, municipalities, transit routes and stops... anywhere in Belgium","version":"9.86.51"},"components":{"schemas":{"HTTP400Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"cause":{"type":"object","properties":{"id":{"type":"number"},"message":{"type":"string"},"msg":{"type":"string"}}}}}},"example":{"error":{"message":"Mock message for error 409","cause":{"id":409,"message":"Mock message for error 409","msg":"Mock msg for error 409"}}}},"HTTP400InvalidParamError":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message","parameter"],"properties":{"message":{"type":"string","example":"Invalid someParameterName parameter. Supported values are: foo, bar."},"parameter":{"type":"string","example":"someParameterName"},"acceptedValues":{"type":"array","items":{"type":"string"},"example":["foo","bar"]},"acceptedFormats":{"type":"array","items":{"type":"string"}}}}}},"SearchResponse":{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/SearchResult"}}}},"SearchResult":{"description":"Search results","type":"object","required":["id","score","category","type","title","subtitle","location"],"properties":{"id":{"type":"string","description":"ID of the result","example":"tec:s-liegethierligecoles"},"score":{"type":"integer","description":"The score for this specific result. The higher the better.","example":35.876433},"category":{"type":"string","description":"The category of this specific result. See 'categories' endpoint.","example":"poi"},"type":{"type":"string","description":"The category of this specific result. See 'types' endpoint.","example":"restaurant"},"agencyId":{"enum":["tec","stibmivb","delijn","nmbssncb"],"type":"string","description":"ID of the public transport agency for the result. Only available for transit_route and transit_stop result."},"title":{"type":"string","description":"Name of the result.","example":"LIEGE Thier à Liège écoles"},"subtitle":{"type":"string","description":"extra data related to the result. it could be a type, a municipality, an agency, depending on the case","example":"LIEGE Thier à Liège écoles"},"location":{"type":"array","items":{"type":"number"},"description":"The geolocation for this result, using format `[longitude, latitude]`"},"extra":{"type":"object","properties":{"routeShortName":{"type":"string","description":"Short name of a route. This will often be a short identifiers that riders use to identify a route. Only available for transit_route documents.","example":"5"},"routeLongName":{"type":"string","description":"Long name of a route. This will often be the list of main places this route goes to, not matter the direction. Only available for transit_route documents","example":"Erasme - De Brouckère"},"color":{"type":"string","description":"Route color designation used in on-street mapping, headsigns,... Only available for transit_route documents","example":"#FF00FF"},"textColor":{"type":"string","description":"Color to be used to draw the shortName against a background color of routeColor. Usually white or black.Only available for transit_route documents","example":"#000000"},"headsigns0":{"type":"array","items":{"type":"string"},"description":"List of specific terminus the route might be headed to for direction '0'. Only available for transit_route documents","example":["Erasme","De Brouckère"]},"headsigns1":{"type":"array","items":{"type":"string"},"description":"List of specific terminus the route might be headed to for direction '1'. Only available for transit_route documents","example":["De Brouckère","Erasme"]},"municipality":{"type":"string","description":"ID of the municipality this documents belongs to. The same ID can be used in our GraphQL API. Available on POI.","example":"wallonia:25031"},"child_municipality":{"type":"string","description":"ID of the child_municipality this documents belongs to. The same ID can be used in our GraphQL API. Available on POI.","example":"wallonia:25031"},"street":{"type":"string","description":"ID of the street this documents belongs to. The same ID can be used in our GraphQL API. Available on POI","example":"wallonia:25031"},"houseNumber":{"type":"string","description":"house number of the address this point is closest to. The same ID can be used in our GraphQL API. Available on POI","example":"42b"}}}}},"SearchGeocoderBmcError":{"type":"object","required":["name","type","description"],"properties":{"error":{"type":"object","properties":{"message":{"type":"string","description":"Error name","example":"Bad Request"},"type":{"type":"string","description":"Error identifier","example":"MISSING_PARAMETER","enum":["MISSING_PARAMETER","INVALID_PARAMETER"]},"description":{"type":"string","description":"Human readable error description","example":"The request is missing required parameter \"query\"."},"parameter":{"type":"string","description":"In case of invalid/missing parameter, the name of the parameter.","example":"query","enum":["query","lat","lon","language","types","groupBy","bannedAgencies"]}}}}}}},"paths":{"/api/search/geocoder/recipe/bmc":{"get":{"operationId":"/api/search/geocoder/recipe/bmc","tags":["search"],"summary":"Search","description":"Search for addresses, points of interests, municipalities, transit routes and stops... anywhere in Belgium","parameters":[{"name":"query","in":"query","description":"Your query string (max allowed length is 96 characters)","required":true,"schema":{"type":"string"},"example":"namur"},{"name":"lat","in":"query","description":"A valid latitude (y) value (float) for a location in coordinate system EPSG:4326. Example: BMC HQ lat=`50.847329`.\nSorts results by proximity when a correct location (valid lat+lon) is provided.","schema":{"type":"number","format":"float","maximum":90,"minimum":-90}},{"name":"lon","in":"query","description":"A valid longitude (x) value (float) for a location in coordinate system EPSG:4326. Example: BMC HQ lon=`4.362583`.\nSorts results by proximity when a correct location (valid lat+lon) is provided.","schema":{"type":"number","format":"float","maximum":90,"minimum":-90}},{"name":"language","in":"query","required":false,"description":"Choose in which language the result are returned. Allowed value: Accepted values are `de`, `en`, `fr`, `nl`.","schema":{"type":"string","enum":["de","en","fr","nl"]}},{"name":"types","in":"query","required":false,"description":"List of types to be returned from the search query. Accepted values are `address`, `child_municipality`, `municipality`, `poi`, `street`, `transit_route`, `transit_station`, `transit_stop`. The default value for this parameter includes all types BUT transit_route.","schema":{"type":"array","items":{"type":"string","enum":["address","child_municipality","municipality","poi","street","transit_route","transit_station","transit_stop"]},"default":["address","child_municipality","municipality","poi","street","transit_station","transit_stop"]},"style":"form","explode":true},{"name":"groupBy","in":"query","description":"If present, groups search result by the requested property. Allowed value: Accepted values are `type`, `entityType`.","required":false,"schema":{"type":"string","enum":["type","entityType"]}},{"name":"bannedAgencies","in":"query","required":false,"description":"Public transport agencies to ban from the results. Accepted values are `delijn`, `nmbssncb`, `stibmivb`, `tec`.","schema":{"type":"array","items":{"type":"string","enum":["delijn","nmbssncb","stibmivb","tec"]}},"style":"form","explode":true}],"responses":{"200":{"description":"Search results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchResponse"}}}},"400":{"description":"Client Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchGeocoderBmcError"}}}},"401":{"description":"Unauthorized"},"500":{"description":"Server Error"},"502":{"description":"Bad Gateway"},"503":{"description":"Service Unavailable"},"504":{"description":"Gateway Timeout"}}}}}},"httpVerb":"get","middlewares":[null]},"apiSearchReverseGeocoderRecipeBmcEndpoint":{"apiType":"http","path":"/api/search/reverse-geocoder/recipe/bmc","dependencies":["esClient"],"openapi":{"openapi":"3.1.0","info":{"title":"Search Engine","description":"Search for addresses, points of interests, municipalities, transit routes and stops,... anywhere in Belgium","version":"9.86.51"},"components":{"schemas":{"HTTP400Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"cause":{"type":"object","properties":{"id":{"type":"number"},"message":{"type":"string"},"msg":{"type":"string"}}}}}},"example":{"error":{"message":"Mock message for error 409","cause":{"id":409,"message":"Mock message for error 409","msg":"Mock msg for error 409"}}}},"HTTP400InvalidParamError":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message","parameter"],"properties":{"message":{"type":"string","example":"Invalid someParameterName parameter. Supported values are: foo, bar."},"parameter":{"type":"string","example":"someParameterName"},"acceptedValues":{"type":"array","items":{"type":"string"},"example":["foo","bar"]},"acceptedFormats":{"type":"array","items":{"type":"string"}}}}}},"SearchReverseGeocoderBmcTransitStationError":{"type":"object","required":["name","type","description"],"properties":{"error":{"type":"object","properties":{"message":{"type":"string","description":"Error name","example":"Bad Request"},"type":{"type":"string","description":"Error identifier","example":"MISSING_PARAMETER","enum":["MISSING_PARAMETER","INVALID_PARAMETER"]},"description":{"type":"string","description":"Human readable error description","example":"The request is missing required parameter \"query\"."},"parameter":{"type":"string","description":"In case of invalid/missing parameter, the name of the parameter.","example":"query","enum":["lon","lat","language"]}}}}},"SearchResponse":{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/SearchResult"}}}},"SearchResult":{"description":"Search results","type":"object","required":["id","score","category","type","title","subtitle","location"],"properties":{"id":{"type":"string","description":"ID of the result","example":"tec:s-liegethierligecoles"},"score":{"type":"integer","description":"The score for this specific result. The higher the better.","example":35.876433},"category":{"type":"string","description":"The category of this specific result. See 'categories' endpoint.","example":"poi"},"type":{"type":"string","description":"The category of this specific result. See 'types' endpoint.","example":"restaurant"},"agencyId":{"enum":["tec","stibmivb","delijn","nmbssncb"],"type":"string","description":"ID of the public transport agency for the result. Only available for transit_route and transit_stop result."},"title":{"type":"string","description":"Name of the result.","example":"LIEGE Thier à Liège écoles"},"subtitle":{"type":"string","description":"extra data related to the result. it could be a type, a municipality, an agency, depending on the case","example":"LIEGE Thier à Liège écoles"},"location":{"type":"array","items":{"type":"number"},"description":"The geolocation for this result, using format `[longitude, latitude]`"},"extra":{"type":"object","properties":{"routeShortName":{"type":"string","description":"Short name of a route. This will often be a short identifiers that riders use to identify a route. Only available for transit_route documents.","example":"5"},"routeLongName":{"type":"string","description":"Long name of a route. This will often be the list of main places this route goes to, not matter the direction. Only available for transit_route documents","example":"Erasme - De Brouckère"},"color":{"type":"string","description":"Route color designation used in on-street mapping, headsigns,... Only available for transit_route documents","example":"#FF00FF"},"textColor":{"type":"string","description":"Color to be used to draw the shortName against a background color of routeColor. Usually white or black.Only available for transit_route documents","example":"#000000"},"headsigns0":{"type":"array","items":{"type":"string"},"description":"List of specific terminus the route might be headed to for direction '0'. Only available for transit_route documents","example":["Erasme","De Brouckère"]},"headsigns1":{"type":"array","items":{"type":"string"},"description":"List of specific terminus the route might be headed to for direction '1'. Only available for transit_route documents","example":["De Brouckère","Erasme"]},"municipality":{"type":"string","description":"ID of the municipality this documents belongs to. The same ID can be used in our GraphQL API. Available on POI.","example":"wallonia:25031"},"child_municipality":{"type":"string","description":"ID of the child_municipality this documents belongs to. The same ID can be used in our GraphQL API. Available on POI.","example":"wallonia:25031"},"street":{"type":"string","description":"ID of the street this documents belongs to. The same ID can be used in our GraphQL API. Available on POI","example":"wallonia:25031"},"houseNumber":{"type":"string","description":"house number of the address this point is closest to. The same ID can be used in our GraphQL API. Available on POI","example":"42b"}}}}}}},"paths":{"/api/search/reverse-geocoder/recipe/bmc":{"get":{"tags":["reverse-geocoder"],"summary":"Reverse geocoder","description":"This endpoint expose our Reverse geocoder Engine.\nIt will allow you to get relevant results in Belgium for any query.\nSupported results types address component includes :\n- Country\n- Region\n- State\n- Municipality\n- Street\n- House number","operationId":"/api/search/reverse-geocoder/recipe/bmc","parameters":[{"name":"lon","in":"query","description":"A valid longitude (x) value (float) for a location in coordinate system EPSG:4326. Example: BMC HQ lon=`4.362583`.","schema":{"type":"number","format":"float","maximum":180,"minimum":-180,"example":4.362583},"example":4.362583},{"name":"lat","in":"query","description":"A valid latitude (y) value (float) for a location in coordinate system EPSG:4326. Example: BMC HQ lat=`50.847329`.","schema":{"type":"number","format":"float","maximum":90,"minimum":-90,"example":50.847329},"example":50.847329},{"name":"language","in":"query","required":false,"description":"Choose in which language the result are returned. Allowed value: Accepted values are `de`, `en`, `fr`, `nl`.","schema":{"type":"string","enum":["de","en","fr","nl"]}}],"responses":{"200":{"description":"Search results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchResponse"}}}},"400":{"description":"Client Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchReverseGeocoderBmcTransitStationError"}}}},"401":{"description":"Unauthorized"},"500":{"description":"Server Error"},"502":{"description":"Bad Gateway"},"503":{"description":"Service Unavailable"},"504":{"description":"Gateway Timeout"}}}}}},"httpVerb":"get","middlewares":[null]},"apiSearchAutocompleteRecipeBmcEndpoint":{"apiType":"http","path":"/api/search/autocomplete/recipe/bmc","dependencies":["esClient"],"openapi":{"openapi":"3.1.0","info":{"title":"Search autocomplete/correct","description":"Search autocomplete/correct for addresses, points of interests, municipalities, transit stops... anywhere in Belgium","version":"9.86.51"},"components":{"schemas":{"HTTP400Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"cause":{"type":"object","properties":{"id":{"type":"number"},"message":{"type":"string"},"msg":{"type":"string"}}}}}},"example":{"error":{"message":"Mock message for error 409","cause":{"id":409,"message":"Mock message for error 409","msg":"Mock msg for error 409"}}}},"HTTP400InvalidParamError":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message","parameter"],"properties":{"message":{"type":"string","example":"Invalid someParameterName parameter. Supported values are: foo, bar."},"parameter":{"type":"string","example":"someParameterName"},"acceptedValues":{"type":"array","items":{"type":"string"},"example":["foo","bar"]},"acceptedFormats":{"type":"array","items":{"type":"string"}}}}}},"AutocompleteBmcResponse":{"type":"object","properties":{"corrections":{"type":"array","items":{"$ref":"#/components/schemas/SearchCorrection"}},"completions":{"type":"array","items":{"$ref":"#/components/schemas/SearchResult"}}}},"SearchAutocompleteBmcError":{"type":"object","required":["name","type","description"],"properties":{"error":{"type":"object","properties":{"message":{"type":"string","description":"Error name","example":"Bad Request"},"type":{"type":"string","description":"Error identifier","example":"MISSING_PARAMETER","enum":["MISSING_PARAMETER","INVALID_PARAMETER"]},"description":{"type":"string","description":"Human readable error description","example":"The request is missing required parameter \"query\"."},"parameter":{"type":"string","description":"In case of invalid/missing parameter, the name of the parameter.","example":"query","enum":["query","types","language"]}}}}},"SearchCorrection":{"type":"object","properties":{"text":{"type":"string","description":"The subject token from the query being corrected"},"offset":{"type":"integer","description":"The start position of the subject token in the query being corrected"},"length":{"type":"integer","description":"The length of the subject token in the query being corrected"},"options":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string","description":"The corrected token"},"score":{"type":"number","description":"The score for this specific correction. The higher the better."},"highlighted":{"type":"string","description":"The corrected token with the correction highlighted using `<em>` tags"}}}}}},"SearchResult":{"description":"Search results","type":"object","required":["id","score","category","type","title","subtitle","location"],"properties":{"id":{"type":"string","description":"ID of the result","example":"tec:s-liegethierligecoles"},"score":{"type":"integer","description":"The score for this specific result. The higher the better.","example":35.876433},"category":{"type":"string","description":"The category of this specific result. See 'categories' endpoint.","example":"poi"},"type":{"type":"string","description":"The category of this specific result. See 'types' endpoint.","example":"restaurant"},"agencyId":{"enum":["tec","stibmivb","delijn","nmbssncb"],"type":"string","description":"ID of the public transport agency for the result. Only available for transit_route and transit_stop result."},"title":{"type":"string","description":"Name of the result.","example":"LIEGE Thier à Liège écoles"},"subtitle":{"type":"string","description":"extra data related to the result. it could be a type, a municipality, an agency, depending on the case","example":"LIEGE Thier à Liège écoles"},"location":{"type":"array","items":{"type":"number"},"description":"The geolocation for this result, using format `[longitude, latitude]`"},"extra":{"type":"object","properties":{"routeShortName":{"type":"string","description":"Short name of a route. This will often be a short identifiers that riders use to identify a route. Only available for transit_route documents.","example":"5"},"routeLongName":{"type":"string","description":"Long name of a route. This will often be the list of main places this route goes to, not matter the direction. Only available for transit_route documents","example":"Erasme - De Brouckère"},"color":{"type":"string","description":"Route color designation used in on-street mapping, headsigns,... Only available for transit_route documents","example":"#FF00FF"},"textColor":{"type":"string","description":"Color to be used to draw the shortName against a background color of routeColor. Usually white or black.Only available for transit_route documents","example":"#000000"},"headsigns0":{"type":"array","items":{"type":"string"},"description":"List of specific terminus the route might be headed to for direction '0'. Only available for transit_route documents","example":["Erasme","De Brouckère"]},"headsigns1":{"type":"array","items":{"type":"string"},"description":"List of specific terminus the route might be headed to for direction '1'. Only available for transit_route documents","example":["De Brouckère","Erasme"]},"municipality":{"type":"string","description":"ID of the municipality this documents belongs to. The same ID can be used in our GraphQL API. Available on POI.","example":"wallonia:25031"},"child_municipality":{"type":"string","description":"ID of the child_municipality this documents belongs to. The same ID can be used in our GraphQL API. Available on POI.","example":"wallonia:25031"},"street":{"type":"string","description":"ID of the street this documents belongs to. The same ID can be used in our GraphQL API. Available on POI","example":"wallonia:25031"},"houseNumber":{"type":"string","description":"house number of the address this point is closest to. The same ID can be used in our GraphQL API. Available on POI","example":"42b"}}}}}}},"paths":{"/api/search/autocomplete/recipe/bmc":{"get":{"operationId":"/api/search/autocomplete/recipe/bmc","tags":["autocomplete"],"summary":"Search","description":"Search for addresses, points of interests, municipalities, transit routes and stops... anywhere in Belgium","parameters":[{"name":"query","in":"query","description":"Your query string (max allowed length is 96 characters)","required":true,"schema":{"type":"string"},"example":"nam"},{"name":"types","in":"query","required":false,"description":"List of types to be returned from the autocomplete query. Accepted values are `child_municipality`, `municipality`, `poi`, `street`, `transit_station`, `transit_stop`. The default value for this parameter includes all autocomplete types.","schema":{"type":"array","items":{"type":"string","enum":["child_municipality","municipality","poi","street","transit_station","transit_stop"]},"default":["child_municipality","municipality","poi","street","transit_station","transit_stop"]},"style":"form","explode":true},{"name":"language","in":"query","required":false,"description":"Choose in which language the result are returned. Allowed value: Accepted values are `de`, `en`, `fr`, `nl`.","schema":{"type":"string","enum":["de","en","fr","nl"]}}],"responses":{"200":{"description":"Search autocomplete results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutocompleteBmcResponse"}}}},"400":{"description":"Client Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchAutocompleteBmcError"}}}},"401":{"description":"Unauthorized"},"500":{"description":"Server Error"},"502":{"description":"Bad Gateway"},"503":{"description":"Service Unavailable"},"504":{"description":"Gateway Timeout"}}}}}},"httpVerb":"get"},"apiSearchAutocompleteRecipeCompletionEndpoint":{"apiType":"http","path":"/api/search/autocomplete/recipe/completion","dependencies":["esClient"],"openapi":{"openapi":"3.1.0","info":{"title":"Search autocomplete","description":"Search autocomplete for addresses, points of interests, municipalities, transit stops... anywhere in Belgium","version":"9.86.51"},"components":{"schemas":{"HTTP400Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"cause":{"type":"object","properties":{"id":{"type":"number"},"message":{"type":"string"},"msg":{"type":"string"}}}}}},"example":{"error":{"message":"Mock message for error 409","cause":{"id":409,"message":"Mock message for error 409","msg":"Mock msg for error 409"}}}},"HTTP400InvalidParamError":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message","parameter"],"properties":{"message":{"type":"string","example":"Invalid someParameterName parameter. Supported values are: foo, bar."},"parameter":{"type":"string","example":"someParameterName"},"acceptedValues":{"type":"array","items":{"type":"string"},"example":["foo","bar"]},"acceptedFormats":{"type":"array","items":{"type":"string"}}}}}},"SearchAutocompleteCompletionError":{"type":"object","required":["name","type","description"],"properties":{"error":{"type":"object","properties":{"message":{"type":"string","description":"Error name","example":"Bad Request"},"type":{"type":"string","description":"Error identifier","example":"MISSING_PARAMETER","enum":["MISSING_PARAMETER","INVALID_PARAMETER"]},"description":{"type":"string","description":"Human readable error description","example":"The request is missing required parameter \"query\"."},"parameter":{"type":"string","description":"In case of invalid/missing parameter, the name of the parameter.","example":"query","enum":["query","types","language"]}}}}},"AutocompleteCompletionResponse":{"type":"object","properties":{"completions":{"type":"array","items":{"$ref":"#/components/schemas/SearchResult"}}}},"SearchResult":{"description":"Search results","type":"object","required":["id","score","category","type","title","subtitle","location"],"properties":{"id":{"type":"string","description":"ID of the result","example":"tec:s-liegethierligecoles"},"score":{"type":"integer","description":"The score for this specific result. The higher the better.","example":35.876433},"category":{"type":"string","description":"The category of this specific result. See 'categories' endpoint.","example":"poi"},"type":{"type":"string","description":"The category of this specific result. See 'types' endpoint.","example":"restaurant"},"agencyId":{"enum":["tec","stibmivb","delijn","nmbssncb"],"type":"string","description":"ID of the public transport agency for the result. Only available for transit_route and transit_stop result."},"title":{"type":"string","description":"Name of the result.","example":"LIEGE Thier à Liège écoles"},"subtitle":{"type":"string","description":"extra data related to the result. it could be a type, a municipality, an agency, depending on the case","example":"LIEGE Thier à Liège écoles"},"location":{"type":"array","items":{"type":"number"},"description":"The geolocation for this result, using format `[longitude, latitude]`"},"extra":{"type":"object","properties":{"routeShortName":{"type":"string","description":"Short name of a route. This will often be a short identifiers that riders use to identify a route. Only available for transit_route documents.","example":"5"},"routeLongName":{"type":"string","description":"Long name of a route. This will often be the list of main places this route goes to, not matter the direction. Only available for transit_route documents","example":"Erasme - De Brouckère"},"color":{"type":"string","description":"Route color designation used in on-street mapping, headsigns,... Only available for transit_route documents","example":"#FF00FF"},"textColor":{"type":"string","description":"Color to be used to draw the shortName against a background color of routeColor. Usually white or black.Only available for transit_route documents","example":"#000000"},"headsigns0":{"type":"array","items":{"type":"string"},"description":"List of specific terminus the route might be headed to for direction '0'. Only available for transit_route documents","example":["Erasme","De Brouckère"]},"headsigns1":{"type":"array","items":{"type":"string"},"description":"List of specific terminus the route might be headed to for direction '1'. Only available for transit_route documents","example":["De Brouckère","Erasme"]},"municipality":{"type":"string","description":"ID of the municipality this documents belongs to. The same ID can be used in our GraphQL API. Available on POI.","example":"wallonia:25031"},"child_municipality":{"type":"string","description":"ID of the child_municipality this documents belongs to. The same ID can be used in our GraphQL API. Available on POI.","example":"wallonia:25031"},"street":{"type":"string","description":"ID of the street this documents belongs to. The same ID can be used in our GraphQL API. Available on POI","example":"wallonia:25031"},"houseNumber":{"type":"string","description":"house number of the address this point is closest to. The same ID can be used in our GraphQL API. Available on POI","example":"42b"}}}}}}},"paths":{"/api/search/autocomplete/recipe/completion":{"get":{"operationId":"/api/search/autocomplete/recipe/completion","tags":["autocomplete"],"summary":"Autocomplete","description":"Autocomplete for addresses, points of interests, municipalities, transit routes and stops... anywhere in Belgium","parameters":[{"name":"query","in":"query","description":"Your query string (max allowed length is 96 characters)","required":true,"schema":{"type":"string"},"example":"nam"},{"name":"types","in":"query","required":false,"description":"List of types to be returned from the autocomplete query. Accepted values are `child_municipality`, `municipality`, `poi`, `street`, `transit_station`, `transit_stop`. The default value for this parameter includes all autocomplete types.","schema":{"type":"array","items":{"type":"string","enum":["child_municipality","municipality","poi","street","transit_station","transit_stop"]},"default":["child_municipality","municipality","poi","street","transit_station","transit_stop"]},"style":"form","explode":true},{"name":"language","in":"query","required":false,"description":"Choose in which language the result are returned. Allowed value: Accepted values are `de`, `en`, `fr`, `nl`.","schema":{"type":"string","enum":["de","en","fr","nl"]}}],"responses":{"200":{"description":"Search autocomplete results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutocompleteCompletionResponse"}}}},"400":{"description":"Client Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchAutocompleteCompletionError"}}}},"401":{"description":"Unauthorized"},"500":{"description":"Server Error"},"502":{"description":"Bad Gateway"},"503":{"description":"Service Unavailable"},"504":{"description":"Gateway Timeout"}}}}}},"httpVerb":"get"},"apiSearchAutocompleteRecipeCorrectionEndpoint":{"apiType":"http","path":"/api/search/autocomplete/recipe/correction","dependencies":["esClient"],"openapi":{"openapi":"3.1.0","info":{"title":"Search autocomplete corrections","description":"Search autocomplete corrections for addresses, points of interests, municipalities, transit stops... anywhere in Belgium","version":"9.86.51"},"components":{"schemas":{"HTTP400Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"cause":{"type":"object","properties":{"id":{"type":"number"},"message":{"type":"string"},"msg":{"type":"string"}}}}}},"example":{"error":{"message":"Mock message for error 409","cause":{"id":409,"message":"Mock message for error 409","msg":"Mock msg for error 409"}}}},"HTTP400InvalidParamError":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message","parameter"],"properties":{"message":{"type":"string","example":"Invalid someParameterName parameter. Supported values are: foo, bar."},"parameter":{"type":"string","example":"someParameterName"},"acceptedValues":{"type":"array","items":{"type":"string"},"example":["foo","bar"]},"acceptedFormats":{"type":"array","items":{"type":"string"}}}}}},"SearchAutocompleteCorrectionError":{"type":"object","required":["name","type","description"],"properties":{"error":{"type":"object","properties":{"message":{"type":"string","description":"Error name","example":"Bad Request"},"type":{"type":"string","description":"Error identifier","example":"MISSING_PARAMETER","enum":["MISSING_PARAMETER","INVALID_PARAMETER"]},"description":{"type":"string","description":"Human readable error description","example":"The request is missing required parameter \"query\"."},"parameter":{"type":"string","description":"In case of invalid/missing parameter, the name of the parameter.","example":"query","enum":["query","language"]}}}}},"AutocompleteCorrectionResponse":{"type":"object","properties":{"corrections":{"type":"array","items":{"$ref":"#/components/schemas/SearchCorrection"}}}},"SearchCorrection":{"type":"object","properties":{"text":{"type":"string","description":"The subject token from the query being corrected"},"offset":{"type":"integer","description":"The start position of the subject token in the query being corrected"},"length":{"type":"integer","description":"The length of the subject token in the query being corrected"},"options":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string","description":"The corrected token"},"score":{"type":"number","description":"The score for this specific correction. The higher the better."},"highlighted":{"type":"string","description":"The corrected token with the correction highlighted using `<em>` tags"}}}}}}}},"paths":{"/api/search/autocomplete/recipe/correction":{"get":{"operationId":"/api/search/autocomplete/recipe/correction","tags":["autocomplete"],"summary":"Autocomplete corrections","description":"Autocomplete corrections for addresses, points of interests, municipalities, transit routes and stops... anywhere in Belgium","parameters":[{"name":"query","in":"query","description":"Your query string (max allowed length is 96 characters)","required":true,"schema":{"type":"string"},"example":"namru"},{"name":"language","in":"query","required":false,"description":"Choose in which language the result are returned. Allowed value: Accepted values are `de`, `en`, `fr`, `nl`.","schema":{"type":"string","enum":["de","en","fr","nl"]}}],"responses":{"200":{"description":"Search autocomplete results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutocompleteCorrectionResponse"}}}},"400":{"description":"Client Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchAutocompleteCorrectionError"}}}},"401":{"description":"Unauthorized"},"500":{"description":"Server Error"},"502":{"description":"Bad Gateway"},"503":{"description":"Service Unavailable"},"504":{"description":"Gateway Timeout"}}}}}},"httpVerb":"get"}},"routing":{"apiRoutingTripPlannerRecipeBmc4Endpoint":{"apiType":"http","path":"/api/routing/trip-planner/recipe/bmc-4","dependencies":["otp2","pgPool","gtfsTranslationsCache"],"httpVerb":"get","openapi":{"openapi":"3.1.0","info":{"title":"BMC trip planner api","description":"BMC trip planner api","version":"9.86.51"},"components":{"schemas":{"HTTP400Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message"],"properties":{"message":{"type":"string"},"cause":{"type":"object","properties":{"id":{"type":"number"},"message":{"type":"string"},"msg":{"type":"string"}}}}}},"example":{"error":{"message":"Mock message for error 409","cause":{"id":409,"message":"Mock message for error 409","msg":"Mock msg for error 409"}}}},"HTTP400InvalidParamError":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message","parameter"],"properties":{"message":{"type":"string","example":"Invalid someParameterName parameter. Supported values are: foo, bar."},"parameter":{"type":"string","example":"someParameterName"},"acceptedValues":{"type":"array","items":{"type":"string"},"example":["foo","bar"]},"acceptedFormats":{"type":"array","items":{"type":"string"}}}}}},"RoutingResult":{"type":"object","properties":{"plan":{"type":"object","properties":{"itineraries":{"type":"array","items":{"type":"object","properties":{"_source":{"type":"string","enum":["bemobile","bmc-otp1","bmc-otp2"]},"legs":{"type":"array","items":{"type":"object","properties":{"_source":{"type":"string","enum":["bemobile","bmc-otp1","bmc-otp2"]},"elevationGained":{"type":"number"},"elevationLost":{"type":"number"},"tooSloped":{"type":"boolean"},"walkDistance":{"type":"number"},"waitingTime":{"type":"number"}}}}}}}}}}}}},"paths":{"/api/routing/trip-planner/recipe/bmc-4":{"get":{"operationId":"/api/routing/trip-planner/recipe/bmc-4","tags":["routing"],"parameters":[{"name":"fromPlace","in":"query","required":true,"description":"The origin of the trip. Format: \"lat,lon\"","schema":{"type":"string"},"example":"50.847329,4.362583"},{"name":"toPlace","in":"query","required":true,"description":"The destination of the trip. Format: \"lat,lon\"","schema":{"type":"string"},"example":"50.859419353931806,4.358989336967956"},{"name":"arriveBy","in":"query","required":false,"description":"Whether the trip should depart or arrive at the specified date and time. Supported value are true|false on|off.","schema":{"type":"string"}},{"name":"date","in":"query","required":false,"description":"The date that the trip should depart (or arrive, for requests where arriveBy is true). The date is assumed to be in the local time for Europe/Brussels timezone. Use either datetime or the combination of date+time. If datetime is present it will take precedence over date+time. Example: `2025-10-30`","schema":{"type":"string","format":"YYYY-MM-DD"}},{"name":"datetime","in":"query","required":false,"description":"The datetime that the trip should depart (or arrive, for requests where arriveBy is true). An ISO 8601 string (`YYYY-MM-DDTHH:MM:SSZ`, `YYYY-MM-DDTHH:MM:SS.mmmZ`) or a timestamp in milliseconds (ms since epoch ie `1761831121088`). Use either datetime or the combination of date+time. If datetime is present it will take precedence over date+time. Example: `2025-10-30T13:32:01.088Z`","schema":{"type":"string","format":"date-time"}},{"name":"time","in":"query","required":false,"description":"The time that the trip should depart (or arrive, for requests where arriveBy is true). The time is assumes to be in the local time for Europe/Brussels timezone. Use either datetime or the combination of date+time. If datetime is present it will take precedence over date+time. Example: `13:32`","schema":{"type":"string","format":"hh:mm:?s?s?"}},{"name":"locale","in":"query","required":false,"description":"In which language should results be returned when translation are available.","schema":{"enum":["de","en","fr","nl"],"type":"string"}},{"name":"bannedAgencies","in":"query","required":false,"description":"Public transport agencies to ban from the results. Accepted values are `delijn`, `nmbssncb`, `stibmivb`, `tec`.","schema":{"type":"array","items":{"type":"string","enum":["delijn","nmbssncb","stibmivb","tec"]}},"style":"form","explode":true},{"name":"walkSpeed","in":"query","required":false,"description":"walk speed to use for routing. Defaults to 1.33 meter per second.","schema":{"type":"number"}},{"name":"waitReluctance","in":"query","required":false,"description":"An integer between 1 and 10 if present.","schema":{"type":"number"}},{"name":"walkReluctance","in":"query","required":false,"description":"An integer between 1 and 10 if present.","schema":{"type":"number"}},{"name":"maxTransfers","in":"query","required":false,"description":"Max amount of transfers allowed per journey.","schema":{"type":"number"}},{"name":"wheelchair","in":"query","required":false,"description":"Whether the trip must be wheelchair accessible. Supported value are true|false on|off","schema":{"type":"string"}},{"name":"minTransferTime","in":"query","required":false,"description":"The minimum time, in seconds, between successive trips on different vehicles. This is designed to allow for imperfect schedule adherence. This is a minimum; transfers over longer distances might use a longer time.","schema":{"type":"number"}},{"name":"mode","in":"query","required":false,"description":"List of transport modes to use for routing. Accepted values are `BUS`, `METRO`, `RAIL`, `TRAM`.","schema":{"type":"array","items":{"type":"string","enum":["BUS","METRO","RAIL","TRAM"]}},"style":"form","explode":true},{"name":"pageCursors","description":"Page cursor for pagination. A Json object stringified. the key that you can use will come the original response.\n\n`{  \"sole_query\": \"_GQP_PAGING_CURSOR_\"}`","in":"query","required":false,"schema":{"type":"string"}},{"name":"routingProfile","in":"query","required":false,"schema":{"type":"string","enum":["transit","multimodal","car"]},"example":"transit"}],"summary":"BMC trip planner api","description":"BMC trip planner api","responses":{"200":{"description":"TODO","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoutingResult"}}}}}}}}}}}},"workers":{"setup-apim":["/api/map/rt/tiles/:layers/:z/:y/:x","/api/map/static/tiles/:layers/:z/:y/:x","/api/routing/trip-planner/recipe/otp1","/api/routing/trip-planner/recipe/otp1-graphql","/api/routing/trip-planner/recipe/otp2","/api/routing/trip-planner/recipe/otp2-graphql-gtfs","/api/routing/trip-planner/recipe/otp2-graphql-transmodel"]},"apis":{"connector":["/api/connector/:filename.json","/api/version"],"customer-stibmivb":["/api/routing/trip-planner/recipe/stibmivb-v1"],"customer-tec":["/api/routing/trip-planner/recipe/tec-v1"],"datasets":["/api/datasets/:filename.json","/api/version"],"doc":["/api/connector/:filename.json","/api/datasets/:filename.json","/api/gbfs/feed/2.3/en/:agency/free_bike_status.json","/api/gbfs/feed/2.3/en/:agency/gbfs.json","/api/gbfs/feed/2.3/en/:agency/station_information.json","/api/gbfs/feed/2.3/en/:agency/station_status.json","/api/gbfs/feed/2.3/en/:agency/system_information.json","/api/gbfs/feed/2.3/en/:agency/vehicle_types.json","/api/gbfs/feed/3.0/manifest.json","/api/graphql","/api/gtfs/feed/delijn/rt/alert","/api/gtfs/feed/delijn/rt/trip-update","/api/gtfs/feed/delijn/static","/api/gtfs/feed/nmbssncb/rt/alert","/api/gtfs/feed/nmbssncb/rt/trip-update","/api/gtfs/feed/nmbssncb/static","/api/gtfs/feed/stibmivb/rt/alert","/api/gtfs/feed/stibmivb/rt/trip-update","/api/gtfs/feed/stibmivb/static","/api/gtfs/feed/tec/rt/alert","/api/gtfs/feed/tec/rt/trip-update","/api/gtfs/feed/tec/static","/api/map/rt/tiles/:layers/:z/:y/:x","/api/map/static/tiles/:layers/:z/:y/:x","/api/routing/trip-planner/recipe/bmc","/api/routing/trip-planner/recipe/bmc-4","/api/routing/trip-planner/recipe/otp2-graphql-transmodel","/api/search/autocomplete/recipe/bmc","/api/search/autocomplete/recipe/completion","/api/search/autocomplete/recipe/correction","/api/search/geocoder/recipe/bmc","/api/search/geocoder/recipe/bmc-transit","/api/search/geocoder/recipe/bmc-transit-station","/api/search/reverse-geocoder/recipe/bmc","/api/search/version","/api/version"],"doc-opendata":["/api/datasets/:filename.json","/api/gtfs/feed/delijn/rt/alert","/api/gtfs/feed/delijn/rt/trip-update","/api/gtfs/feed/delijn/static","/api/gtfs/feed/nmbssncb/rt/alert","/api/gtfs/feed/nmbssncb/rt/trip-update","/api/gtfs/feed/nmbssncb/static","/api/gtfs/feed/stibmivb/rt/alert","/api/gtfs/feed/stibmivb/rt/trip-update","/api/gtfs/feed/stibmivb/static","/api/gtfs/feed/tec/rt/alert","/api/gtfs/feed/tec/rt/trip-update","/api/gtfs/feed/tec/static"],"gbfs":["/api/gbfs/feed/2.3/en/:agency/free_bike_status.json","/api/gbfs/feed/2.3/en/:agency/gbfs.json","/api/gbfs/feed/2.3/en/:agency/station_information.json","/api/gbfs/feed/2.3/en/:agency/station_status.json","/api/gbfs/feed/2.3/en/:agency/system_information.json","/api/gbfs/feed/2.3/en/:agency/vehicle_types.json","/api/gbfs/feed/3.0/manifest.json","/api/version"],"geocoder":["/search/categories","/search/meta/es-stats","/search/recipe/:recipe/query/:query","/search/recipes","/search/types"],"geocoder2":["/api/search/autocomplete/recipe/bmc","/api/search/autocomplete/recipe/completion","/api/search/autocomplete/recipe/correction","/api/search/geocoder/recipe/bmc","/api/search/geocoder/recipe/bmc-transit","/api/search/geocoder/recipe/bmc-transit-station","/api/search/version","/api/version"],"graphql":["/graphiql","/graphql"],"graphql-playground":["/graphiql","/playground"],"gtfs-departures":["/gtfs-departures.json"],"gtfs-rt-v2":["/api/gtfs/feed/delijn/rt/alert","/api/gtfs/feed/delijn/rt/trip-update","/api/gtfs/feed/nmbssncb/rt/alert","/api/gtfs/feed/nmbssncb/rt/trip-update","/api/gtfs/feed/stibmivb/rt/alert","/api/gtfs/feed/stibmivb/rt/trip-update","/api/gtfs/feed/tec/rt/alert","/api/gtfs/feed/tec/rt/trip-update","/api/version"],"gtfs-static":["/api/gtfs/feed/delijn/static","/api/gtfs/feed/nmbssncb/static","/api/gtfs/feed/stibmivb/static","/api/gtfs/feed/tec/static","/api/version"],"opendata-datasets":["/api/datasets/:filename.json","/api/version"],"opendata-gtfs-rt":["/api/gtfs/feed/delijn/rt/alert","/api/gtfs/feed/delijn/rt/trip-update","/api/gtfs/feed/nmbssncb/rt/alert","/api/gtfs/feed/nmbssncb/rt/trip-update","/api/gtfs/feed/stibmivb/rt/alert","/api/gtfs/feed/stibmivb/rt/trip-update","/api/gtfs/feed/tec/rt/alert","/api/gtfs/feed/tec/rt/trip-update","/api/version"],"opendata-gtfs-static":["/api/gtfs/feed/delijn/static","/api/gtfs/feed/nmbssncb/static","/api/gtfs/feed/stibmivb/static","/api/gtfs/feed/tec/static","/api/version"],"reverse-geocoder":["/api/search/reverse-geocoder/recipe/bmc","/api/search/version","/api/version"],"reverse-geocoder-legacy":["/reverse-geocoder/:lon/:lat"],"trip-planner2":["/api/routing/trip-planner/recipe/bmc","/api/routing/trip-planner/recipe/bmc-4","/api/routing/trip-planner/recipe/bmc-realtime-traffic","/api/routing/trip-planner/recipe/bmc-wallonia","/api/version"]},"deploysByEndpoint":{"/api/connector/:filename.json":["connector","doc"],"/api/version":["connector","datasets","doc","gbfs","geocoder2","gtfs-rt-v2","gtfs-static","opendata-datasets","opendata-gtfs-rt","opendata-gtfs-static","reverse-geocoder","trip-planner2"],"/api/routing/trip-planner/recipe/stibmivb-v1":["customer-stibmivb"],"/api/routing/trip-planner/recipe/tec-v1":["customer-tec"],"/api/datasets/:filename.json":["datasets","doc","doc-opendata","opendata-datasets"],"/api/gbfs/feed/3.0/manifest.json":["doc","gbfs"],"/api/gbfs/feed/2.3/en/:agency/free_bike_status.json":["doc","gbfs"],"/api/gbfs/feed/2.3/en/:agency/gbfs.json":["doc","gbfs"],"/api/gbfs/feed/2.3/en/:agency/station_information.json":["doc","gbfs"],"/api/gbfs/feed/2.3/en/:agency/station_status.json":["doc","gbfs"],"/api/gbfs/feed/2.3/en/:agency/system_information.json":["doc","gbfs"],"/api/gbfs/feed/2.3/en/:agency/vehicle_types.json":["doc","gbfs"],"/api/graphql":["doc"],"/api/gtfs/feed/delijn/rt/alert":["doc","doc-opendata","gtfs-rt-v2","opendata-gtfs-rt"],"/api/gtfs/feed/nmbssncb/rt/alert":["doc","doc-opendata","gtfs-rt-v2","opendata-gtfs-rt"],"/api/gtfs/feed/stibmivb/rt/alert":["doc","doc-opendata","gtfs-rt-v2","opendata-gtfs-rt"],"/api/gtfs/feed/tec/rt/alert":["doc","doc-opendata","gtfs-rt-v2","opendata-gtfs-rt"],"/api/gtfs/feed/delijn/rt/trip-update":["doc","doc-opendata","gtfs-rt-v2","opendata-gtfs-rt"],"/api/gtfs/feed/nmbssncb/rt/trip-update":["doc","doc-opendata","gtfs-rt-v2","opendata-gtfs-rt"],"/api/gtfs/feed/stibmivb/rt/trip-update":["doc","doc-opendata","gtfs-rt-v2","opendata-gtfs-rt"],"/api/gtfs/feed/tec/rt/trip-update":["doc","doc-opendata","gtfs-rt-v2","opendata-gtfs-rt"],"/api/gtfs/feed/delijn/static":["doc","doc-opendata","gtfs-static","opendata-gtfs-static"],"/api/gtfs/feed/nmbssncb/static":["doc","doc-opendata","gtfs-static","opendata-gtfs-static"],"/api/gtfs/feed/stibmivb/static":["doc","doc-opendata","gtfs-static","opendata-gtfs-static"],"/api/gtfs/feed/tec/static":["doc","doc-opendata","gtfs-static","opendata-gtfs-static"],"/api/map/static/tiles/:layers/:z/:y/:x":["doc","setup-apim"],"/api/map/rt/tiles/:layers/:z/:y/:x":["doc","setup-apim"],"/api/routing/trip-planner/recipe/bmc":["doc","trip-planner2"],"/api/routing/trip-planner/recipe/bmc-4":["doc","trip-planner2"],"/api/routing/trip-planner/recipe/otp2-graphql-transmodel":["doc","setup-apim"],"/api/search/autocomplete/recipe/bmc":["doc","geocoder2"],"/api/search/autocomplete/recipe/completion":["doc","geocoder2"],"/api/search/autocomplete/recipe/correction":["doc","geocoder2"],"/api/search/geocoder/recipe/bmc":["doc","geocoder2"],"/api/search/geocoder/recipe/bmc-transit":["doc","geocoder2"],"/api/search/geocoder/recipe/bmc-transit-station":["doc","geocoder2"],"/api/search/reverse-geocoder/recipe/bmc":["doc","reverse-geocoder"],"/api/search/version":["doc","geocoder2","reverse-geocoder"],"/search/recipe/:recipe/query/:query":["geocoder"],"/search/recipes":["geocoder"],"/search/types":["geocoder"],"/search/categories":["geocoder"],"/search/meta/es-stats":["geocoder"],"/graphql":["graphql"],"/graphiql":["graphql","graphql-playground"],"/playground":["graphql-playground"],"/gtfs-departures.json":["gtfs-departures"],"/reverse-geocoder/:lon/:lat":["reverse-geocoder-legacy"],"/api/routing/trip-planner/recipe/bmc-realtime-traffic":["trip-planner2"],"/api/routing/trip-planner/recipe/bmc-wallonia":["trip-planner2"],"/api/routing/trip-planner/recipe/otp1":["setup-apim"],"/api/routing/trip-planner/recipe/otp1-graphql":["setup-apim"],"/api/routing/trip-planner/recipe/otp2":["setup-apim"],"/api/routing/trip-planner/recipe/otp2-graphql-gtfs":["setup-apim"]}}