Link an Action to Objects
Model an operational activity as an Action and each independently tracked participant as an Object. This example creates an ISR collection task for a UAV asset and a hostile ground-platform target.
Keep identity and activity separate
| Record | Responsibility |
|---|---|
Target Object. |
Owns the target’s identity, classification, location, assessment, and source history. |
Asset Object. |
Owns the collecting platform’s identity, domain attributes, assessment, and source history. |
ISR Action. |
Owns the task’s purpose, state, priority, assignment, and typed links to the two Objects. |
This separation lets the target and asset continue to update without rewriting the task. It also lets several Actions reference the same Object without copying its current state into each Action.
assignedTo identifies the principal responsible for execution.
The OBJECT_LINK_TYPE_ASSET link records the asset’s operational role in the Action.
Using both fields is intentional: one supports assignment and the other supports consumers that query the Objects involved in an Action.
Target Object
{
"id": "target-bmp-14",
"security": {
"raw": "U"
},
"name": "BMP-14",
"status": "OBJECT_STATUS_ACTIVE",
"ontology": {
"category": "ONTOLOGY_CATEGORY_PLATFORM",
"type": "BMP-3"
},
"typeInfo": {
"ground": {
"platformType": "BMP-3",
"movement": "MOVEMENT_STATUS_HALTED",
"terrain": "TERRAIN_TYPE_RURAL"
}
},
"location": {
"position": {
"latitudeDegrees": 35.1732,
"longitudeDegrees": 36.9084
},
"positionSource": "POSITION_SOURCE_OPTICAL"
},
"assessment": {
"affiliation": "AFFILIATION_HOSTILE",
"environment": "ENVIRONMENT_SURFACE",
"confidenceLevel": 0.86
},
"provenance": {
"name": "UAV-042 EO/IR",
"producer": "track-fusion-v2",
"updatedAt": "2026-09-14T18:33:36Z"
}
}
Asset Object
{
"id": "uav-shadow-07",
"security": {
"raw": "U"
},
"name": "SHADOW 07",
"status": "OBJECT_STATUS_ACTIVE",
"ontology": {
"category": "ONTOLOGY_CATEGORY_PLATFORM",
"type": "RQ-7B Shadow"
},
"typeInfo": {
"aviation": {
"aircraftType": "RQ-7B Shadow",
"flightNumber": "SHADOW 07"
}
},
"assessment": {
"affiliation": "AFFILIATION_FRIEND",
"environment": "ENVIRONMENT_LOW_ALTITUDE"
},
"provenance": {
"name": "UAS Operations Cell",
"producer": "uas-c2-adapter",
"updatedAt": "2026-09-14T18:33:36Z"
}
}
ISR Action
{
"id": "isr-collect-bmp-14",
"security": {
"raw": "U"
},
"name": "ISR Collection BMP-14",
"description": "Maintain positive identification of BMP-14.",
"type": "isr_collection",
"scope": "ACTION_SCOPE_TASK",
"state": "ACTION_STATE_ASSIGNED",
"priority": "ACTION_PRIORITY_HIGH",
"requestedBy": {
"id": "ops-cell-alpha",
"type": "PRINCIPAL_TYPE_ORGANIZATION",
"displayName": "Operations Cell Alpha"
},
"assignedTo": {
"id": "uav-shadow-07",
"type": "PRINCIPAL_TYPE_OBJECT",
"displayName": "SHADOW 07"
},
"intent": {
"purpose": "Maintain custody of the hostile ground platform.",
"method": "Collect full-motion video with SHADOW 07.",
"endState": "The operations cell has current location and positive identification."
},
"objectLinks": [
{
"objectId": "target-bmp-14",
"type": "OBJECT_LINK_TYPE_TARGET"
},
{
"objectId": "uav-shadow-07",
"type": "OBJECT_LINK_TYPE_ASSET"
}
],
"provenance": {
"name": "Operations Cell Alpha",
"producer": "mission-planning-client",
"updatedAt": "2026-09-14T18:33:36Z"
}
}
The Action links target-bmp-14 as its target and uav-shadow-07 as its assigned asset.
If the operation also depends on a control measure, publish that measure as another Object and add an OBJECT_LINK_TYPE_RELATED link rather than embedding the control measure in the Action description.
The full contracts are in the public WDM module, primarily raft/wdm/v1/action.proto, object.proto, and common.proto.