# generated: '2026-07-18' # method: generated # source: live GBFS 2.3 feeds at https://gbfs.api.ridedott.com/public/v2 (endpoints verified 200) + GBFS 2.3 spec (https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md) # note: Faithful description of Dott's PUBLIC GBFS v2 API surface observed live. Dott ships no public OpenAPI (their Swagger UI host is a JS SPA that serves no spec file); this document was generated from the real, verified endpoint set and response shapes, not fabricated. Partner (authenticated) feeds follow the same shapes with per-vehicle stable IDs. openapi: 3.0.3 info: title: Dott GBFS API version: '2.3' description: >- Dott's implementation of the General Bikeshare Feed Specification (GBFS) 2.3 for its shared e-scooter and e-bike fleets across European and Middle Eastern cities. The public feed set exposes real-time system information, vehicle types, pricing plans, free-floating vehicle status, geofencing zones, and (where operated as docked) station information and status. City is a path segment; the discovery document at /public/v2/gbfs.json lists every available city and feed. Partner integrators use an authenticated variant of the same feeds that carries stable (non-rotating) vehicle IDs. contact: name: Dott Partner Integrations url: https://ridedott.dev/docs/services/gbfs/introduction/ license: name: GBFS (Creative Commons / MobilityData) url: https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md servers: - url: https://gbfs.api.ridedott.com/public/v2 description: Public GBFS 2.3 feeds (open, rotating vehicle IDs) tags: - name: Discovery description: Auto-discovery of available feeds and cities - name: System description: System-level metadata and pricing - name: Vehicles description: Free-floating vehicle status and types - name: Zones description: Geofencing / operating zones - name: Stations description: Docked station information and status (where applicable) paths: /gbfs.json: get: tags: [Discovery] operationId: getGbfsDiscovery summary: GBFS auto-discovery document description: Lists every published feed URL for every available city, grouped by language. responses: '200': description: Discovery document content: application/json: schema: { $ref: '#/components/schemas/GbfsDiscovery' } /gbfs_versions.json: get: tags: [Discovery] operationId: getGbfsVersions summary: Supported GBFS versions responses: '200': description: Versions list content: application/json: schema: { $ref: '#/components/schemas/GbfsFeed' } /{city}/system_information.json: get: tags: [System] operationId: getSystemInformation summary: System information for a city parameters: - $ref: '#/components/parameters/City' responses: '200': description: System information content: application/json: schema: { $ref: '#/components/schemas/GbfsFeed' } '404': $ref: '#/components/responses/RegionNotFound' /{city}/vehicle_types.json: get: tags: [Vehicles] operationId: getVehicleTypes summary: Vehicle types available in a city parameters: - $ref: '#/components/parameters/City' responses: '200': description: Vehicle types content: application/json: schema: { $ref: '#/components/schemas/GbfsFeed' } '404': $ref: '#/components/responses/RegionNotFound' /{city}/system_pricing_plans.json: get: tags: [System] operationId: getSystemPricingPlans summary: Pricing plans for a city parameters: - $ref: '#/components/parameters/City' responses: '200': description: Pricing plans content: application/json: schema: { $ref: '#/components/schemas/GbfsFeed' } '404': $ref: '#/components/responses/RegionNotFound' /{city}/free_bike_status.json: get: tags: [Vehicles] operationId: getFreeBikeStatus summary: Real-time free-floating vehicle status description: Location, range and availability of every free-floating vehicle in the city. parameters: - $ref: '#/components/parameters/City' responses: '200': description: Free bike status content: application/json: schema: { $ref: '#/components/schemas/GbfsFeed' } '404': $ref: '#/components/responses/RegionNotFound' /{city}/geofencing_zones.json: get: tags: [Zones] operationId: getGeofencingZones summary: Geofencing zones (GeoJSON) for a city parameters: - $ref: '#/components/parameters/City' responses: '200': description: Geofencing zones content: application/json: schema: { $ref: '#/components/schemas/GbfsFeed' } '404': $ref: '#/components/responses/RegionNotFound' /{city}/station_information.json: get: tags: [Stations] operationId: getStationInformation summary: Docked station information (where operated) parameters: - $ref: '#/components/parameters/City' responses: '200': description: Station information content: application/json: schema: { $ref: '#/components/schemas/GbfsFeed' } '404': $ref: '#/components/responses/RegionNotFound' /{city}/station_status.json: get: tags: [Stations] operationId: getStationStatus summary: Docked station real-time status (where operated) parameters: - $ref: '#/components/parameters/City' responses: '200': description: Station status content: application/json: schema: { $ref: '#/components/schemas/GbfsFeed' } '404': $ref: '#/components/responses/RegionNotFound' components: parameters: City: name: city in: path required: true description: City slug as listed in the discovery document (e.g. espoo, brussels, warsaw). schema: { type: string } example: espoo responses: RegionNotFound: description: The requested city/region is not available. content: application/json: schema: { $ref: '#/components/schemas/Error' } example: { error: 'Not Found: ERR_REGION_NOT_FOUND' } schemas: GbfsEnvelope: type: object description: Common GBFS envelope wrapping every feed response. required: [last_updated, ttl, version, data] properties: last_updated: { type: integer, description: POSIX timestamp of last data refresh } ttl: { type: integer, description: Seconds the response can be cached before refetching } version: { type: string, example: '2.3' } data: { type: object } GbfsFeed: allOf: - $ref: '#/components/schemas/GbfsEnvelope' GbfsDiscovery: allOf: - $ref: '#/components/schemas/GbfsEnvelope' - 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 } Error: type: object required: [error] properties: error: type: string description: Human-readable error message string (GBFS-style flat envelope).