openapi: 3.0.3
info:
title: TIER / Dott GBFS API
version: '2.3'
description: >-
Public GBFS (General Bikeshare Feed Specification) 2.3 endpoints for
TIER / Dott shared micromobility systems. After the 2024 TIER + Dott
merger, all GBFS feeds are served under the unified ridedott.com
infrastructure at https://gbfs.api.ridedott.com/public/v2. Each city
or zone is a separate "system" identified by a slug
(e.g. `berlin`, `paris`, `london`, `madrid`, `dubai`). The API exposes
a discovery document plus a standard set of GBFS feeds: system
information, vehicle types, station information, station status,
free-floating vehicle status, geofencing zones, and system pricing
plans. All endpoints are unauthenticated and return JSON.
contact:
name: Dott (formerly TIER)
url: https://ridedott.com/
servers:
- url: https://gbfs.api.ridedott.com/public/v2
description: Production GBFS feeds (TIER and Dott systems unified)
tags:
- name: Discovery
description: GBFS discovery and versioning
- name: System
description: System-level metadata and pricing
- name: Vehicles
description: Vehicle inventory, types, and real-time status
- name: Stations
description: Station information and availability
- name: Zones
description: Geofencing rules and operational zones
paths:
/gbfs_versions.json:
get:
tags: [Discovery]
summary: List GBFS Versions
description: Returns all GBFS schema versions exposed by Dott across systems.
operationId: listGbfsVersions
responses:
'200':
description: GBFS versions document.
content:
application/json:
schema:
$ref: '#/components/schemas/GbfsVersions'
/{system_id}/gbfs.json:
get:
tags: [Discovery]
summary: Get GBFS Discovery Document
description: >-
Returns the GBFS auto-discovery document for a given city/system,
listing every available feed URL.
operationId: getGbfsDiscovery
parameters:
- $ref: '#/components/parameters/SystemId'
responses:
'200':
description: GBFS discovery document.
content:
application/json:
schema:
$ref: '#/components/schemas/GbfsDiscovery'
/{system_id}/system_information.json:
get:
tags: [System]
summary: Get System Information
description: >-
Returns operator name, language, timezone, rental app deep links,
and system identifier for the given city.
operationId: getSystemInformation
parameters:
- $ref: '#/components/parameters/SystemId'
responses:
'200':
description: System information feed.
content:
application/json:
schema:
$ref: '#/components/schemas/SystemInformation'
/{system_id}/system_pricing_plans.json:
get:
tags: [System]
summary: Get System Pricing Plans
description: >-
Returns unlock price, per-minute rate, currency, and plan IDs for
each vehicle type in the system.
operationId: getSystemPricingPlans
parameters:
- $ref: '#/components/parameters/SystemId'
responses:
'200':
description: Pricing plans feed.
content:
application/json:
schema:
$ref: '#/components/schemas/SystemPricingPlans'
/{system_id}/vehicle_types.json:
get:
tags: [Vehicles]
summary: Get Vehicle Types
description: >-
Returns the form factors (scooter, bicycle), propulsion types,
max range, and pricing-plan associations for vehicles operated
in the system.
operationId: getVehicleTypes
parameters:
- $ref: '#/components/parameters/SystemId'
responses:
'200':
description: Vehicle types feed.
content:
application/json:
schema:
$ref: '#/components/schemas/VehicleTypes'
/{system_id}/free_bike_status.json:
get:
tags: [Vehicles]
summary: Get Free Vehicle Status
description: >-
Real-time list of free-floating vehicles available for rent,
including position, battery level (`current_fuel_percent`),
remaining range, pricing plan, and rental URIs.
operationId: getFreeBikeStatus
parameters:
- $ref: '#/components/parameters/SystemId'
responses:
'200':
description: Free vehicle status feed.
content:
application/json:
schema:
$ref: '#/components/schemas/FreeBikeStatus'
/{system_id}/station_information.json:
get:
tags: [Stations]
summary: Get Station Information
description: Static station definitions (where stations are deployed in the system).
operationId: getStationInformation
parameters:
- $ref: '#/components/parameters/SystemId'
responses:
'200':
description: Station information feed.
content:
application/json:
schema:
$ref: '#/components/schemas/StationInformation'
/{system_id}/station_status.json:
get:
tags: [Stations]
summary: Get Station Status
description: Real-time docking station availability and vehicle counts.
operationId: getStationStatus
parameters:
- $ref: '#/components/parameters/SystemId'
responses:
'200':
description: Station status feed.
content:
application/json:
schema:
$ref: '#/components/schemas/StationStatus'
/{system_id}/geofencing_zones.json:
get:
tags: [Zones]
summary: Get Geofencing Zones
description: >-
GeoJSON FeatureCollection describing no-ride, no-park, low-speed,
and operational zones within the system.
operationId: getGeofencingZones
parameters:
- $ref: '#/components/parameters/SystemId'
responses:
'200':
description: Geofencing zones feed.
content:
application/json:
schema:
$ref: '#/components/schemas/GeofencingZones'
components:
parameters:
SystemId:
name: system_id
in: path
required: true
description: >-
The Dott/TIER system slug, e.g. `berlin`, `paris`, `london`,
`madrid`, `rome`, `brussels`, `dubai`. Listed in the
MobilityData GBFS systems registry.
schema:
type: string
example: berlin
schemas:
FeedMeta:
type: object
required: [last_updated, ttl, version]
properties:
last_updated:
type: integer
format: int64
description: POSIX timestamp when the feed was last updated.
ttl:
type: integer
description: Seconds until the next regeneration.
version:
type: string
example: '2.3'
GbfsVersions:
allOf:
- $ref: '#/components/schemas/FeedMeta'
- type: object
properties:
data:
type: object
properties:
versions:
type: array
items:
type: object
properties:
version: { type: string }
url: { type: string, format: uri }
GbfsDiscovery:
allOf:
- $ref: '#/components/schemas/FeedMeta'
- type: object
properties:
data:
type: object
additionalProperties:
type: object
properties:
feeds:
type: array
items:
type: object
properties:
name: { type: string }
url: { type: string, format: uri }
SystemInformation:
allOf:
- $ref: '#/components/schemas/FeedMeta'
- type: object
properties:
data:
type: object
properties:
system_id: { type: string }
language: { type: string }
name: { type: string }
timezone: { type: string }
rental_apps:
type: object
properties:
android:
type: object
properties:
discovery_uri: { type: string }
store_uri: { type: string, format: uri }
ios:
type: object
properties:
discovery_uri: { type: string }
store_uri: { type: string, format: uri }
SystemPricingPlans:
allOf:
- $ref: '#/components/schemas/FeedMeta'
- type: object
properties:
data:
type: object
properties:
plans:
type: array
items:
type: object
properties:
plan_id: { type: string }
name: { type: string }
description: { type: string }
currency: { type: string }
price: { type: number, format: float }
is_taxable: { type: boolean }
per_min_pricing:
type: array
items:
type: object
properties:
interval: { type: integer }
rate: { type: number, format: float }
start: { type: integer }
VehicleTypes:
allOf:
- $ref: '#/components/schemas/FeedMeta'
- type: object
properties:
data:
type: object
properties:
vehicle_types:
type: array
items:
type: object
properties:
vehicle_type_id: { type: string }
form_factor:
type: string
enum: [scooter, bicycle, car, moped, other, cargo_bicycle]
propulsion_type:
type: string
enum: [human, electric_assist, electric, combustion, combustion_diesel, hybrid, plug_in_hybrid, hydrogen_fuel_cell]
max_range_meters: { type: integer }
pricing_plan_ids:
type: array
items: { type: string }
FreeBikeStatus:
allOf:
- $ref: '#/components/schemas/FeedMeta'
- type: object
properties:
data:
type: object
properties:
bikes:
type: array
items:
type: object
properties:
bike_id: { type: string }
lat: { type: number, format: double }
lon: { type: number, format: double }
is_reserved: { type: boolean }
is_disabled: { type: boolean }
current_range_meters: { type: integer }
current_fuel_percent: { type: number, format: float }
vehicle_type_id: { type: string }
pricing_plan_id: { type: string }
last_reported: { type: integer, format: int64 }
rental_uris:
type: object
properties:
android: { type: string, format: uri }
ios: { type: string, format: uri }
web: { type: string, format: uri }
StationInformation:
allOf:
- $ref: '#/components/schemas/FeedMeta'
- type: object
properties:
data:
type: object
properties:
stations:
type: array
items:
type: object
properties:
station_id: { type: string }
name: { type: string }
lat: { type: number, format: double }
lon: { type: number, format: double }
capacity: { type: integer }
StationStatus:
allOf:
- $ref: '#/components/schemas/FeedMeta'
- type: object
properties:
data:
type: object
properties:
stations:
type: array
items:
type: object
properties:
station_id: { type: string }
num_bikes_available: { type: integer }
num_docks_available: { type: integer }
is_installed: { type: boolean }
is_renting: { type: boolean }
is_returning: { type: boolean }
last_reported: { type: integer, format: int64 }
GeofencingZones:
allOf:
- $ref: '#/components/schemas/FeedMeta'
- type: object
properties:
data:
type: object
properties:
geofencing_zones:
type: object
properties:
type:
type: string
enum: [FeatureCollection]
features:
type: array
items:
type: object
properties:
type: { type: string, enum: [Feature] }
geometry: { type: object }
properties:
type: object
properties:
name: { type: string }
start: { type: integer }
end: { type: integer }
rules:
type: array
items:
type: object
properties:
vehicle_type_id:
type: array
items: { type: string }
ride_allowed: { type: boolean }
ride_through_allowed: { type: boolean }
maximum_speed_kph: { type: integer }
station_parking: { type: boolean }