Model a Tracked Platform
A tracked platform is an Object because it has stable identity and state that can change independently of any task involving it. This example models an aircraft report from an ADS-B adapter.
Select the fields
| Modeling need | WDM fields |
|---|---|
Preserve the source track across updates. |
Use a stable |
Classify the real-world thing. |
Set |
Report where and how it is moving. |
Put position, altitude, heading, and position integrity in |
Describe the surveillance report and its quality. |
Use |
Preserve the operator’s interpretation. |
Put assessed affiliation and operating environment in |
Identify the source and adapter. |
Use |
ADS-B values do not all live in one nested block.
WDM places shared concepts such as position, motion, and transponder state in their standard fields, while typeInfo.aviation.adsb holds ADS-B-specific metadata.
This lets consumers work with common track data without knowing which surveillance system produced it.
Do not create a new Object for every sensor report about the same source track.
Publish updates with the same id until the source declares a new track or loses continuity according to the integration’s identity rules.
Example Object
{
"id": "adsb-780c5a",
"security": {
"raw": "U"
},
"name": "FLANKER 7",
"status": "OBJECT_STATUS_ACTIVE",
"identities": [
{
"system": "adsb",
"identifier": "780C5A",
"originType": "IDENTITY_ORIGIN_TYPE_BROADCAST"
}
],
"ontology": {
"category": "ONTOLOGY_CATEGORY_PLATFORM",
"type": "Su-35S"
},
"typeInfo": {
"aviation": {
"aircraftType": "Su-35S",
"icaoType": "SU35",
"verticalMode": "VERTICAL_MODE_LEVEL",
"adsb": {
"version": 2,
"emitterCategory": "A3",
"quality": {
"navigationIntegrityCategory": 8,
"navigationAccuracyCategoryPosition": 9,
"navigationAccuracyCategoryVelocity": 2,
"sourceIntegrityLevel": 3,
"sourceIntegrityBasis": "ADSB_SOURCE_INTEGRITY_BASIS_PER_HOUR",
"geometricVerticalAccuracy": 2,
"systemDesignAssurance": 2
},
"acasOperational": true
},
"surveillanceSource": "AVIATION_SURVEILLANCE_SOURCE_ADSB_ICAO",
"trueAirspeedMps": 240.5
}
},
"location": {
"position": {
"latitudeDegrees": 36.12,
"longitudeDegrees": 42.88,
"altitudeHaeMeters": 11500.0,
"altitudePressureMeters": 11390.0
},
"orientation": {
"headingDegrees": 270.0
},
"positionSource": "POSITION_SOURCE_GNSS",
"positionIntegrity": {
"horizontalContainmentRadiusMeters": 185.2
}
},
"motion": {
"velocityEnuMps": {
"x": -240.0,
"y": 15.0,
"z": 0.0
},
"speedMps": 240.5,
"barometricVerticalRateMps": 0.0,
"geometricVerticalRateMps": 0.0,
"courseOverGroundDegrees": 273.6
},
"transponderCodes": {
"modeSAddress": 7867482,
"alert": false,
"specialPositionIdentification": false
},
"assessment": {
"affiliation": "AFFILIATION_HOSTILE",
"environment": "ENVIRONMENT_HIGH_ALTITUDE"
},
"provenance": {
"name": "ADS-B Feed",
"producer": "adsb-adapter-v1",
"updatedAt": "2026-09-14T18:33:36Z"
}
}
The example omits fields the source does not provide.
The full contract and enum definitions are in the public WDM module, primarily raft/wdm/v1/object.proto, aviation.proto, and spatial.proto.