Trimble Mobile Manager API

The Trimble Mobile Manager (TMM) API provides developer interfaces for integrating high-accuracy GNSS positioning from connected Trimble receivers into custom mobile applications. Offers a local REST API for configuration and a WebSocket stream for real-time GNSS position delivery. Supports Trimble Catalyst DA2, R580, R780, R12i, R980, and SP100 receivers. Abstracts receiver hardware to enable forward-compatible precision positioning apps.

OpenAPI Specification

trimble-mobile-manager-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Trimble Mobile Manager API
  description: >-
    The Trimble Mobile Manager (TMM) API provides developer interfaces for
    integrating high-accuracy GNSS positioning from connected Trimble receivers
    into custom mobile applications. Offers a local REST API for system
    information and WebSocket stream initiation, plus real-time GNSS position
    delivery via WebSocket. Supports Trimble Catalyst DA2, R580, R780, R12i,
    R980, and SP100 receivers. Runs locally on Android or iOS devices where
    Trimble Mobile Manager is installed.
  version: 1.0.0
  contact:
    url: https://developer.trimble.com/docs/mobile-manager/
servers:
  - url: http://localhost:{apiPort}
    description: Local Trimble Mobile Manager API server (running on device)
    variables:
      apiPort:
        default: '8080'
        description: API port returned by tmmInfo endpoint
security:
  - basicAuth: []
paths:

  /api/v1/tmmInfo:
    get:
      operationId: getTmmInfo
      summary: Get TMM System Information
      description: >-
        Retrieve system information about the connected Trimble Mobile Manager
        instance, including the API port, WebSocket ports, connected receiver
        details, and version information.
      tags:
        - System
      responses:
        '200':
          description: TMM system information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TmmInfo'
        '401':
          description: Unauthorized - invalid access code

  /api/v1/positionStream:
    get:
      operationId: startPositionStream
      summary: Start Position Stream
      description: >-
        Initiates position streaming from the connected GNSS receiver. Returns
        the WebSocket port number for connecting to the position stream.
        After calling this endpoint, open a WebSocket connection to
        ws://localhost:{port} to receive real-time GNSS position data.
      tags:
        - Positioning
      parameters:
        - name: format
          in: query
          schema:
            type: string
            enum: [locationV1, locationV2]
            default: locationV2
          description: >-
            Position data format version. locationV2 includes extended fields
            for IMU orientation, TIP positions, and reference frame data.
      responses:
        '200':
          description: WebSocket port for position stream
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PositionStreamResponse'
        '401':
          description: Unauthorized

  /api/v1/receiver/info:
    get:
      operationId: getReceiverInfo
      summary: Get Receiver Information
      description: >-
        Returns information about the currently connected GNSS receiver including
        model, serial number, firmware version, and connection status.
      tags:
        - Receiver
      responses:
        '200':
          description: Receiver information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReceiverInfo'
        '401':
          description: Unauthorized

  /api/v1/receiver/status:
    get:
      operationId: getReceiverStatus
      summary: Get Receiver Status
      description: Returns current status of the connected GNSS receiver.
      tags:
        - Receiver
      responses:
        '200':
          description: Receiver status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReceiverStatus'

  /api/v1/corrections/status:
    get:
      operationId: getCorrectionsStatus
      summary: Get Corrections Status
      description: >-
        Returns the current status of GNSS correction services being applied
        to the receiver (e.g., RTX, RTK, SBAS).
      tags:
        - Corrections
      responses:
        '200':
          description: Corrections status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CorrectionsStatus'

  /api/v1/corrections/configure:
    post:
      operationId: configureCorrections
      summary: Configure Corrections
      description: >-
        Configure the GNSS correction source for the connected receiver.
        Supports CenterPoint RTX, SBAS, and custom NTRIP mountpoints.
      tags:
        - Corrections
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CorrectionsConfig'
      responses:
        '200':
          description: Corrections configured
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CorrectionsStatus'
        '400':
          description: Invalid configuration

  /api/v1/catalyst/licenses:
    get:
      operationId: getCatalystLicenses
      summary: Get Catalyst Licenses
      description: Returns available Trimble Catalyst licenses for the connected DA2 receiver.
      tags:
        - Catalyst
      responses:
        '200':
          description: Available Catalyst licenses
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CatalystLicense'

  /api/v1/catalyst/licenses/activate:
    post:
      operationId: activateCatalystLicense
      summary: Activate Catalyst License
      description: >-
        Activate a Trimble Catalyst On Demand license to enable precision
        corrections for the DA2 receiver.
      tags:
        - Catalyst
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [licenseId]
              properties:
                licenseId:
                  type: string
                  description: Catalyst license identifier
      responses:
        '200':
          description: License activated

components:
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: >-
        Access code generated using SHA256 hash of (applicationId + currentUTCTime),
        Base64 encoded. Valid for 1 second only. Must be regenerated per request.

  schemas:
    TmmInfo:
      type: object
      description: Trimble Mobile Manager system information
      properties:
        version:
          type: string
          description: TMM application version
        apiPort:
          type: integer
          description: REST API port number
        v1SocketPort:
          type: integer
          description: WebSocket port for v1 basic position stream
        v2SocketPort:
          type: integer
          description: WebSocket port for v2 extended position stream (registered apps)
        receiverConnected:
          type: boolean
          description: Whether a GNSS receiver is currently connected
        platform:
          type: string
          enum: [Android, iOS]
          description: Platform TMM is running on

    PositionStreamResponse:
      type: object
      description: Response containing WebSocket port for position streaming
      required: [port]
      properties:
        port:
          type: integer
          description: WebSocket port to connect to for position stream
        format:
          type: string
          description: Position format version that will be streamed

    ReceiverInfo:
      type: object
      description: Connected GNSS receiver information
      properties:
        model:
          type: string
          description: Receiver model name (e.g., R12i, Catalyst DA2)
        serialNumber:
          type: string
          description: Receiver serial number
        firmwareVersion:
          type: string
          description: Receiver firmware version
        connectionType:
          type: string
          enum: [Bluetooth, USB, WiFi, Internal]
          description: Connection method to the receiver

    ReceiverStatus:
      type: object
      description: Current GNSS receiver status
      properties:
        connected:
          type: boolean
        batteryLevel:
          type: integer
          description: Battery percentage (0-100)
        gnssSignalStrength:
          type: string
          enum: [None, Poor, Fair, Good, Excellent]
        trackingGnss:
          type: boolean
          description: Whether receiver is actively tracking GNSS signals

    CorrectionsStatus:
      type: object
      description: GNSS correction service status
      properties:
        type:
          type: string
          enum: [None, SBAS, RTX, RTK, NTRIP, DGNSS]
          description: Active correction type
        status:
          type: string
          enum: [Disconnected, Connecting, Connected, Converging, Active]
        accuracy:
          type: string
          description: Achievable accuracy with current corrections
        provider:
          type: string
          description: Correction service provider name

    CorrectionsConfig:
      type: object
      required: [type]
      properties:
        type:
          type: string
          enum: [RTX, RTK, SBAS, NTRIP, None]
          description: Correction service type to configure
        ntripHost:
          type: string
          description: NTRIP caster host (required for NTRIP type)
        ntripPort:
          type: integer
          description: NTRIP caster port
        ntripMountpoint:
          type: string
          description: NTRIP mountpoint
        ntripUsername:
          type: string
        ntripPassword:
          type: string

    CatalystLicense:
      type: object
      description: Trimble Catalyst positioning accuracy license
      properties:
        id:
          type: string
          description: License identifier
        type:
          type: string
          enum: [Decimeter, Centimeter, Sub-Foot, Sub-Meter]
          description: Accuracy level provided
        status:
          type: string
          enum: [Available, Active, Expired]
        expiresAt:
          type: string
          format: date-time

    PositionInfoV2:
      type: object
      description: >-
        Extended GNSS position message streamed via WebSocket v2 connection.
        Available only to registered applications.
      properties:
        latitude:
          type: number
          format: double
          description: Latitude in decimal degrees (WGS84)
        longitude:
          type: number
          format: double
          description: Longitude in decimal degrees (WGS84)
        altitude:
          type: number
          format: double
          description: Height above ellipsoid in meters
        speed:
          type: number
          format: float
          description: Ground speed in meters per second
        bearing:
          type: number
          format: float
          description: Direction of travel in degrees from north (clockwise)
        satellites:
          type: integer
          description: Number of satellites tracked
        hrms:
          type: number
          format: float
          description: Horizontal Root Mean Square accuracy in meters
        vrms:
          type: number
          format: float
          description: Vertical Root Mean Square accuracy in meters
        pdop:
          type: number
          format: float
          description: Position Dilution of Precision
        hdop:
          type: number
          format: float
          description: Horizontal Dilution of Precision
        vdop:
          type: number
          format: float
          description: Vertical Dilution of Precision
        diffStatus:
          type: integer
          description: "Solution type: 1=Autonomous, 2=DGPS, 4=Fixed, 5=Float"
        timestamp:
          type: string
          format: date-time
          description: GNSS fix timestamp (UTC)
        satelliteView:
          type: array
          items:
            $ref: '#/components/schemas/SatelliteInfo'
        imuOrientation:
          $ref: '#/components/schemas/ImuOrientation'
        referenceFrame:
          $ref: '#/components/schemas/ReferenceFrame'

    PositionInfoV1:
      type: object
      description: Basic GNSS position message streamed via WebSocket v1 connection.
      properties:
        latitude:
          type: number
          format: double
          description: Latitude in decimal degrees (WGS84)
        longitude:
          type: number
          format: double
          description: Longitude in decimal degrees (WGS84)
        altitude:
          type: number
          format: double
          description: Height above ellipsoid in meters
        speed:
          type: number
          format: float
          description: Ground speed in meters per second
        bearing:
          type: number
          format: float
          description: Direction of travel in degrees
        satellites:
          type: integer
        accuracy:
          type: number
          format: float
          description: Position accuracy in meters
        diffStatus:
          type: integer
          description: "Solution type: 1=Autonomous, 2=DGPS, 4=Fixed, 5=Float"
        timestamp:
          type: string
          format: date-time

    SatelliteInfo:
      type: object
      description: Per-satellite tracking information
      properties:
        id:
          type: integer
          description: Satellite PRN or ID
        elevation:
          type: integer
          description: Elevation angle in degrees (0-90)
        azimuth:
          type: integer
          description: Azimuth angle in degrees (0-360)
        snr:
          type: number
          format: float
          description: Signal-to-Noise Ratio in dB-Hz
        used:
          type: boolean
          description: Whether satellite is used in the position solution
        gnssSystem:
          type: string
          enum: [GPS, GLONASS, Galileo, BeiDou, QZSS, SBAS]
          description: GNSS constellation

    ImuOrientation:
      type: object
      description: IMU orientation data (v2 only, select receivers)
      properties:
        pitch:
          type: number
          format: float
          description: Pitch angle in degrees
        roll:
          type: number
          format: float
          description: Roll angle in degrees
        yaw:
          type: number
          format: float
          description: Yaw angle in degrees
        aligned:
          type: boolean
          description: Whether IMU is aligned with receiver

    ReferenceFrame:
      type: object
      description: Coordinate reference frame information (v2 only)
      properties:
        sourceFrame:
          type: string
          description: Source reference frame (e.g., WGS84, ITRF2014)
        targetFrame:
          type: string
          description: Target reference frame after transformation
        epoch:
          type: number
          format: float
          description: Reference epoch for the transformation