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