Open Mobility Foundation Telemetry API

The Telemetry API from Open Mobility Foundation — 1 operation(s) for telemetry.

Operations 2

POST /telemetry /telemetry #
GET /telemetry /telemetry #

Documentation

Specifications

Schemas & Data

📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-mobility-foundation/refs/heads/main/json-schema/open-mobility-foundation-trip-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-mobility-foundation/refs/heads/main/json-schema/open-mobility-foundation-event-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-mobility-foundation/refs/heads/main/json-schema/open-mobility-foundation-stop-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-mobility-foundation/refs/heads/main/json-schema/open-mobility-foundation-telemetry-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-mobility-foundation/refs/heads/main/json-schema/open-mobility-foundation-mutable-stop-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-mobility-foundation/refs/heads/main/json-schema/open-mobility-foundation-vehicle-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-mobility-foundation/refs/heads/main/json-schema/open-mobility-foundation-report-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-mobility-foundation/refs/heads/main/json-schema/open-mobility-foundation-query-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-mobility-foundation/refs/heads/main/json-schema/open-mobility-foundation-measures-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-mobility-foundation/refs/heads/main/json-schema/open-mobility-foundation-data-types-iso-duration-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-mobility-foundation/refs/heads/main/json-schema/open-mobility-foundation-data-types-iso-dayhourminute-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-mobility-foundation/refs/heads/main/json-schema/open-mobility-foundation-column-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-mobility-foundation/refs/heads/main/json-schema/open-mobility-foundation-data-types-uuid-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-mobility-foundation/refs/heads/main/json-schema/open-mobility-foundation-requirements-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-mobility-foundation/refs/heads/main/json-schema/open-mobility-foundation-policy-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-mobility-foundation/refs/heads/main/json-schema/open-mobility-foundation-response-version-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-mobility-foundation/refs/heads/main/json-schema/open-mobility-foundation-response-last-updated-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-mobility-foundation/refs/heads/main/json-schema/open-mobility-foundation-data-types-timestamp-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-mobility-foundation/refs/heads/main/json-schema/open-mobility-foundation-jurisdiction-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-mobility-foundation/refs/heads/main/json-schema/open-mobility-foundation-geography-schema.json

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/open-mobility-foundation:open-mobility-foundation-telemetry-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

open-mobility-foundation-telemetry-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Open Mobility Foundation Telemetry API
  version: '2.0'
  contact:
    url: https://github.com/openmobilityfoundation/mobility-data-specification
    name: Open Mobility Foundation
    email: info@openmobilityfoundation.org
  license:
    name: Creative Commons Attribution 4.0 International Public License
    url: https://github.com/openmobilityfoundation/mobility-data-specification/blob/main/LICENSE
  description: 'Operations tagged Telemetry across 2 of this provider''s published API definitions: open-mobility-foundation-mds-agency-openapi.yml, open-mobility-foundation-mds-provider-openapi.yml. Each path carries the servers of the definition it was published in.'
tags:
- name: Telemetry
paths:
  /telemetry:
    post:
      operationId: post-telemetry
      description: Send vehicle telemetry data in a batch for any number of vehicles in the fleet.
      summary: /telemetry
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              minItems: 1
              items:
                $ref: '#/components/schemas/telemetry'
      responses:
        '201':
          description: Vehicle telemetry processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/response_bulk'
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/response_bulk'
                - required:
                  - failures
                  properties:
                    failures:
                      minItems: 1
                      items:
                        properties:
                          item:
                            $ref: '#/components/schemas/telemetry'
                        oneOf:
                        - $ref: '#/components/schemas/response_error_bad_param'
                        - $ref: '#/components/schemas/response_error_missing_param'
        '404':
          description: The `device_id` is unregistered.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/response_bulk'
                - required:
                  - failures
                  properties:
                    failures:
                      minItems: 1
                      items:
                        allOf:
                        - $ref: '#/components/schemas/response_error_unregistered'
                        - properties:
                            item:
                              $ref: '#/components/schemas/telemetry'
        '401':
          description: 'Unauthorized: Invalid, expired, or insufficient scope of token.'
        '406':
          description: MDS version in Accept header is unsupported or invalid.
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/response_error'
      tags:
      - Telemetry
    parameters:
    - name: telemetry_time
      schema:
        $ref: '#/components/schemas/data-types_iso-dayhour'
      in: query
      required: true
      description: The UTC hour during which telemetry events occurred.
    get:
      operationId: get-telemetry-telemetry_time
      description: Get all telemetry with timestamp occurring within the hour.
      summary: /telemetry
      responses:
        '200':
          description: Hour has been processed.
          content:
            application/json:
              schema:
                type: object
                allOf:
                - $ref: '#/components/schemas/response_version'
                - type: object
                  description: Telemetry data payload
                  required:
                  - telemetry
                  properties:
                    telemetry:
                      type: array
                      items:
                        $ref: '#/components/schemas/telemetry'
        '400':
          description: Request did not contain a `telemetry_time`.
        '401':
          description: 'Unauthorized: Invalid, expired, or insufficient scope of token.'
        '406':
          description: MDS version in Accept header is unsupported or invalid.
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/response_error'
      tags:
      - Telemetry
components:
  schemas:
    data-types_uuid-array:
      title: data-types/uuid-array
      description: Array of UUID.
      type: array
      x-stoplight:
        id: v932clitbqv31
      uniqueItems: true
      items:
        $ref: '#/components/schemas/data-types_uuid'
    response_bulk:
      title: response/bulk
      type: object
      description: For multi-record POST and PUT calls, e.g. sending Events using the Agency API, the bulk-response structure describes a list of results.
      x-stoplight:
        id: sdj75536ytrso
      required:
      - success
      - total
      properties:
        success:
          $ref: '#/components/schemas/data-types_integer-positive'
          description: Number of successfully written records.
        total:
          $ref: '#/components/schemas/data-types_integer-positive'
          description: Total number of provided records.
        failures:
          type: array
    data-types_timestamp:
      title: data-types/timestamp
      description: Integer milliseconds since Unix epoch.
      examples:
      - 1514764800000
      - 1681855703000
      minimum: 1514764800000
      multipleOf: 1
      type: number
      x-stoplight:
        id: vliol1hqlxw6y
    telemetry:
      title: models/telemetry
      description: 'A standard point of vehicle telemetry. References to latitude and longitude imply coordinates encoded in the

        [WGS 84 (EPSG:4326)](https://en.wikipedia.org/wiki/World_Geodetic_System) standard GPS or GNSS projection expressed

        as [Decimal Degrees](https://en.wikipedia.org/wiki/Decimal_degrees).'
      type: object
      x-stoplight:
        id: 47oju05zyh09f
      required:
      - device_id
      - provider_id
      - telemetry_id
      - timestamp
      - trip_ids
      - journey_id
      - location
      properties:
        device_id:
          $ref: '#/components/schemas/data-types_uuid'
          description: A unique device ID in UUID format.
        provider_id:
          $ref: '#/components/schemas/data-types_uuid'
          description: A UUID for the Provider, unique within MDS. See MDS [provider list](https://github.com/openmobilityfoundation/mobility-data-specification/blob/main/providers.csv).
        data_provider_id:
          $ref: '#/components/schemas/data-types_uuid'
          description: If different than `provider_id`, a UUID for the data solution provider managing the data feed in this endpoint.
        telemetry_id:
          $ref: '#/components/schemas/data-types_uuid'
          description: ID used for uniquely-identifying a Telemetry entry.
        timestamp:
          $ref: '#/components/schemas/data-types_timestamp'
          description: Date/time that event occurred.
        trip_ids:
          oneOf:
          - $ref: '#/components/schemas/data-types_uuid-array'
            minItems: 1
            description: If telemetry occurred during a trip, the ID of the trip(s).
          - type: 'null'
            description: If not in a trip, null.
        journey_id:
          oneOf:
          - $ref: '#/components/schemas/data-types_uuid'
            description: If telemetry occurred during a trip and journeys are used for the mode, the ID of the journey.
          - type: 'null'
            description: If not in a trip, null.
        stop_id:
          $ref: '#/components/schemas/data-types_uuid'
          description: Stop that the vehicle is currently located at.
        location:
          $ref: '#/components/schemas/data-types_gps'
          description: Telemetry position data.
        location_type:
          type: string
          enum:
          - street
          - sidewalk
          - crosswalk
          - garage
          - bike_lane
        battery_percent:
          $ref: '#/components/schemas/data-types_integer-positive'
          description: Percent battery charge of vehicle, expressed between 0 and 100.
          maximum: 100
        fuel_percent:
          $ref: '#/components/schemas/data-types_integer-positive'
          description: Percent fuel in vehicle, expressed between 0 and 100.
          maximum: 100
        tipped_over:
          type: boolean
          description: If detectable and known, is the device tipped over or not?
          default: false
    response_error:
      title: response/error
      description: An error message for troubleshooting.
      type: object
      x-stoplight:
        id: 90yc58ni8u0ch
      required:
      - error
      - error_description
      - error_details
      properties:
        error:
          type: string
          description: Error message string.
        error_description:
          type: string
          description: Human readable error description (can be localized).
        error_details:
          type: array
          description: Human readable error description (can be localized).
          minItems: 1
          items:
            type: string
    response_error_missing_param:
      title: response/error_missing_param
      description: A required parameter is missing.
      type: object
      x-stoplight:
        id: huc7x2g2wfq5a
      required:
      - item
      - error
      - error_description
      - error_details
      properties:
        error:
          const: missing_param
        error_description:
          type: string
          examples:
          - A required parameter is missing.
        error_details:
          type: array
          description: Array of missing parameters.
          minItems: 1
          items:
            type: string
    data-types_integer-positive:
      title: data-types/integer-positive
      description: An integer greater than or equal to 0.
      minimum: 0
      type: integer
      x-stoplight:
        id: nfkphjmpm8yay
    data-types_uuid:
      title: data-types/uuid
      description: A UUID used to uniquely identity an object.
      type: string
      x-stoplight:
        id: np9kodwmy2kqa
      format: uuid
      pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
      examples:
      - 3c9604d6-b5ee-11e8-96f8-529269fb1459
    data-types_gps:
      title: data-types/gps
      properties:
        altitude:
          description: Altitude above mean sea level in meters.
          type: number
        heading:
          description: Degrees - clockwise starting at 0 degrees at true North.
          type: number
        horizontal_accuracy:
          description: Horizontal accuracy in meters.
          type: number
        lat:
          description: Latitude coordinate.
          maximum: 90
          minimum: -90
          type: number
        lng:
          description: Longitude coordinate.
          maximum: 180
          minimum: -180
          type: number
        satellites:
          $ref: '#/components/schemas/data-types_integer-positive'
          description: Number of GPS or GNSS satellites.
        speed:
          description: Estimated speed in meters / sec as reported by the GPS chipset.
          type: number
        vertical_accuracy:
          description: Vertical accuracy in meters.
          type: number
      required:
      - lat
      - lng
      type: object
      x-stoplight:
        id: 8aooo5ag7x7vh
    response_error_bad_param:
      title: response/error_bad_param
      description: A validation error occurred.
      type: object
      x-stoplight:
        id: vekidez6dfa4u
      required:
      - item
      - error
      - error_description
      - error_details
      properties:
        error:
          const: bad_param
        error_description:
          type: string
          examples:
          - A validation error occurred
        error_details:
          type: array
          description: Array of parameters with errors.
          minItems: 1
          items:
            type: string
    response_error_unregistered:
      title: response/error_unregistered
      description: An item with that identifier is not registered.
      type: object
      x-stoplight:
        id: cw4q7ycy1a17h
      required:
      - item
      - error
      - error_description
      properties:
        error:
          const: unregistered
        error_description:
          type: string
          examples:
          - This device_id is not registered.
          - This stop_id is unregistered
        error_details:
          type: array
          items:
            type: string
    data-types_iso-dayhour:
      title: data-types/iso-dayhour
      description: An ISO 8601 extended datetime representing an UTC hour between 00 and 23 `YYYY-MM-DDTHH`; valid for dates in 1970 and later.
      examples:
      - 2023-12-31T23
      - 2024-01-01T01
      pattern: (19[789]\d|[2-9]\d{3})-(0[1-9]|1[02])-([12]\d|0[1-9]|3[01])T([0-2][0-3]|[01]\d)
      type: string
      x-stoplight:
        id: rc4v7nsrgdqpm
    data-types_version:
      title: data-type/version
      description: The version of MDS this data represents.
      type: string
      x-stoplight:
        id: bt49ntcbcuxbh
      pattern: ^2\.(\d|[1-9]\d+)\.(\d|[1-9]\d+)$
      examples:
      - 2.0.0
    response_version:
      title: response/version
      description: Response bodies must be a UTF-8 encoded JSON object and must minimally include the MDS `version`.
      type: object
      x-stoplight:
        id: ivd8jadc3rqf7
      required:
      - version
      properties:
        version:
          $ref: '#/components/schemas/data-types_version'
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'All MDS Agency endpoints require authentication.


        JSON Web Token ([JWT](https://jwt.io/introduction/)) is RECOMMENDED as the token format.


        When making requests, the endpoints expect `provider_id` to be part of the claims the JWT. The token issuance,

        expiration and revocation policies are at the discretion of the agency.'
x-refined-from:
- open-mobility-foundation-mds-agency-openapi.yml
- open-mobility-foundation-mds-provider-openapi.yml
x-stoplight:
  id: f3thjnkfyv60k
x-bundled-from: https://github.com/openmobilityfoundation/mds-openapi/blob/v2.0/reference/agency.yaml (commit 0c07bc3d294237dd41c6273f059efb11b8149c66); external $refs into ../models/ inlined under components.schemas, no other changes