STANAG 4817 / AEP-105 · 0.3.0-rc4 (SD-3 RC4)
Messages

Task Admin

A controller assigns, modifies, or stops a task.

Addressed MessageTypeEnum_TASK_ADMIN

A controller assigns, modifies, or stops a task.

Directioncontroller → node (addressed command)
CadenceOn demand, whenever tasking changes.
DeliveryAddressed — command plane (QoS 2, exactly-once)
Schemacatl/hibw/messages/task/TaskAdmin.json
Worked examples7

Purpose

The command verb of the protocol. Carries an action (PUSH to assign/replace, PAUSE, CANCEL, CLEAR) and, for a push, a typed task description — SURVEY, IDENTIFY, REPOSITION, NAVIGATE, CLEAR and more — plus task-level constraints and coordination. This is the most varied message: most of the 20 worked examples are task-admin variants.

When to send it

  • PUSH — to assign a new task or replace the current one.
  • PAUSE / CANCEL — to suspend or abort an in-flight task.
  • CLEAR — to wipe assigned tasking from the node.

Where it fits

Loading diagram…

Message header

Every CATL message carries this envelope header.

FieldTypeMultiplicityDescription
message_typeMessageTypeEnum[1..1]An enumeration.
sourceGUID[1..1]Source that send this message. Often same as source of information, but different when relaying.
versionstring[1..1]Version of the schema used to create and validate this message. Has to follow major.minor.patch notation. For study draft 3 it should be 0.3.0.
time_sentTime[1..1]

Body — TaskAdminBody

Inherits from base::tasks::TaskDescriptionAndDetails.

FieldTypeMultiplicityDescription
source_of_information (inherited)GUID[0..1]Holds source of information. Its a identifier of a node that provided that information. It can be a node that created a region, task. It can be a node that detected contact or is maintaining track. For self reports it should be same as identifier.
external_identifiers (inherited)ExternalSystemIdentifier [][0..*]Holds identifiers of this entity in other systems.
identifier (inherited)GUID[1..1]Unique identifier for this entity.
authority (inherited)Authority[0..1]
node (inherited)GUID[1..1]Node this task is assigned to. We should always have a node that owns task - assign yourselves initially.
conditions (inherited)TaskCondition [][0..*]
details (inherited)TaskDetails[0..1]
constraints (inherited)TaskConstraint [][0..*]
description (inherited)TaskDescription[0..1]
template_conditions (inherited)TaskCondition[0..1]If template condition is set (one or more) this is a template task. It should not be executed, but when new conditions are met new task should be crate base on it.
parent (inherited)GUID[0..1]If this is a sub task, this is identifier of parent. Called parent to be in line with parent/members node relation.
members (inherited)GUID [][0..*]If that task is split into sub task, list of sub tasks identifiers. Called members to be in line with parent/members node relation.
FieldTypeMultiplicityDescription
bindingBindingInformationType[0..1]
actionTaskAdminActionEnum[1..1]An enumeration. default: TaskAdminActionEnum_PUSH

Full TaskAdminBody reference →

Key fields

  • action — TaskAdminActionEnum — PUSH | PAUSE | CANCEL | CLEAR. Required.
  • identifier — The task id this action targets — reused later in TASK_FEEDBACK and TASK_RESULT.
  • node — The destination node the task is for.
  • description — Discriminated task union ($discriminator: TaskTypeEnum_*) — only present for PUSH; selects SURVEY / IDENTIFY / REPOSITION / NAVIGATE / CLEAR / …
  • constraints — Task-scoped constraints (TOGGLE / RANGE / EQUIPMENT / emission control) the node must honour while executing.

Worked examples

Task Admin

✅ validates against catl/hibw/messages/task/TaskAdmin.json. Routes to 4817/exercise-alpha/v0.3.0/dst/node-bravo/task/admin (QoS 2).

catl_5_task_admin.json
{
  "header": {
    "message_type": "MessageTypeEnum_TASK_ADMIN",
    "source": "a895f8f5-46b0-5603-bdf0-b270a2867c09",
    "version": "0.3.0",
    "time_sent": "2025-03-18T12:05:00+00:00"
  },
  "body": {
    "identifier": "f3a6eb99-8ed5-518f-a683-e2c436bb87e0",
    "node": "a895f8f5-46b0-5603-bdf0-b270a2867c09",
    "action": "TaskAdminActionEnum_PAUSE"
  }
}

Task Admin Reposition

✅ validates against catl/hibw/messages/task/TaskAdmin.json. Routes to 4817/exercise-alpha/v0.3.0/dst/node-bravo/task/admin (QoS 2).

catl_6_task_admin_reposition.json
{
  "header": {
    "message_type": "MessageTypeEnum_TASK_ADMIN",
    "source": "a895f8f5-46b0-5603-bdf0-b270a2867c09",
    "version": "0.3.0",
    "time_sent": "2025-03-18T12:05:00+00:00"
  },
  "body": {
    "identifier": "dc5f8fa8-ed15-5128-83d0-2e04f8fbbad5",
    "node": "a895f8f5-46b0-5603-bdf0-b270a2867c09",
    "description": {
      "$discriminator": "TaskTypeEnum_REPOSITION",
      "reposition": {
        "location": {
          "identifier": "08a18229-180c-52bc-8e27-d6b8041ec09f",
          "timestamp": "2025-03-18T12:05:00+00:00",
          "location": {
            "$discriminator": "GeometryTypeEnum_POINT",
            "point": {
              "latitude": 10,
              "longitude": 10
            }
          }
        }
      }
    },
    "action": "TaskAdminActionEnum_PUSH"
  }
}

Task Admin Navigate

✅ validates against catl/hibw/messages/task/TaskAdmin.json. Routes to 4817/exercise-alpha/v0.3.0/dst/node-bravo/task/admin (QoS 2).

catl_7_task_admin_navigate.json
{
  "header": {
    "message_type": "MessageTypeEnum_TASK_ADMIN",
    "source": "a895f8f5-46b0-5603-bdf0-b270a2867c09",
    "version": "0.3.0",
    "time_sent": "2025-03-18T12:05:00+00:00"
  },
  "body": {
    "identifier": "5facf4c1-7825-5901-9ba1-2ce4107632c4",
    "node": "a895f8f5-46b0-5603-bdf0-b270a2867c09",
    "description": {
      "$discriminator": "TaskTypeEnum_NAVIGATE",
      "navigate": {
        "route": {
          "identifier": "fb3c87a4-4a3e-51d6-bd5e-db7b7fc0b439",
          "timestamp": "2025-03-18T12:05:00+00:00",
          "waypoints": [
            {
              "identifier": "b00dd35b-bb9a-5801-9bdd-005203decc74",
              "timestamp": "2025-03-18T12:05:00+00:00",
              "point": {
                "latitude": 10,
                "longitude": 10
              },
              "velocity": 5
            },
            {
              "identifier": "b00dd35b-bb9a-5801-9bdd-005203decc74",
              "timestamp": "2025-03-18T12:05:00+00:00",
              "point": {
                "latitude": 11,
                "longitude": 11
              },
              "velocity": 5
            },
            {
              "identifier": "b00dd35b-bb9a-5801-9bdd-005203decc74",
              "timestamp": "2025-03-18T12:05:00+00:00",
              "point": {
                "latitude": 12,
                "longitude": 12
              },
              "velocity": 5
            }
          ]
        }
      }
    },
    "action": "TaskAdminActionEnum_PUSH"
  }
}

Task Admin Survey Rea

✅ validates against catl/hibw/messages/task/TaskAdmin.json. Routes to 4817/exercise-alpha/v0.3.0/dst/node-bravo/task/admin (QoS 2).

catl_10_task_admin_survey_rea.json
{
  "header": {
    "message_type": "MessageTypeEnum_TASK_ADMIN",
    "source": "a895f8f5-46b0-5603-bdf0-b270a2867c09",
    "version": "0.3.0",
    "time_sent": "2025-03-18T12:05:00+00:00"
  },
  "body": {
    "identifier": "6f6edcd8-94b6-5673-b5cc-a3c92f36cf8d",
    "node": "a895f8f5-46b0-5603-bdf0-b270a2867c09",
    "description": {
      "$discriminator": "TaskTypeEnum_SURVEY",
      "survey": {
        "volume": {
          "identifier": "b394b127-e3b7-5a2e-8a0b-99ea06ec9f9f",
          "timestamp": "2025-03-18T12:05:00+00:00",
          "volume": {
            "bottom_boundary": -100,
            "top_boundary": 0,
            "region": {
              "$discriminator": "RegionTypeEnum_POLYGON_AREA",
              "polygon_area": {
                "points": [
                  {
                    "latitude": 10,
                    "longitude": 10
                  },
                  {
                    "latitude": 11,
                    "longitude": 11
                  },
                  {
                    "latitude": 12,
                    "longitude": 12
                  }
                ]
              }
            }
          }
        },
        "specialization": {
          "$discriminator": "SurveySpecializationTypeEnum_SURVEY_REA",
          "survey_rea": {
            "products": [
              "REAProductTypeEnum_BATHYMETRIC"
            ]
          }
        }
      }
    },
    "action": "TaskAdminActionEnum_PUSH"
  }
}

Task Admin Identify Sbw

✅ validates against catl/hibw/messages/task/TaskAdmin.json. Routes to 4817/exercise-alpha/v0.3.0/dst/node-bravo/task/admin (QoS 2).

catl_11_task_admin_identify_sbw.json
{
  "header": {
    "message_type": "MessageTypeEnum_TASK_ADMIN",
    "source": "a895f8f5-46b0-5603-bdf0-b270a2867c09",
    "version": "0.3.0",
    "time_sent": "2025-03-18T12:05:00+00:00"
  },
  "body": {
    "identifier": "bc8cdf31-e2a9-5209-98c6-19c787c63f1e",
    "node": "a895f8f5-46b0-5603-bdf0-b270a2867c09",
    "description": {
      "$discriminator": "TaskTypeEnum_IDENTIFY",
      "identify": {
        "targets": [
          {
            "$discriminator": "TargetTypeEnum_CONTACT",
            "contact": {
              "identifier": "95512a14-a2f3-53de-b2ee-816cf6a49e88",
              "description": {
                "name": "cmre.contact"
              },
              "timestamp": "2025-03-18T12:05:00+00:00",
              "pose": {
                "position": {
                  "$discriminator": "PositionTypeEnum_LATITUDE_LONGITUDE_ALTITUDE",
                  "latitude_longitude_altitude": {
                    "latitude": 10,
                    "longitude": 12,
                    "altitude": [
                      {
                        "value": 123,
                        "type": "AltitudeTypeEnum_WGS"
                      }
                    ]
                  }
                }
              },
              "specialization": {
                "$discriminator": "ContactSpecializationTypeEnum_SBW_CONTACT",
                "sbw_contact": {
                  "classification": [
                    {
                      "type": "SBWContactTypeEnum_CORROSION",
                      "severity": "SBWContactSeverityEnum_LOW",
                      "confidence": 0.2
                    }
                  ]
                }
              }
            }
          }
        ],
        "specialization": {
          "$discriminator": "IdentifySpecializationTypeEnum_IDENTIFY_SBW",
          "identify_sbw": {
            "altitude": 12,
            "starting_pose": {
              "identifier": "0f05b741-de81-58e6-81e3-23f074fcddeb",
              "timestamp": "2025-03-18T12:05:00+00:00",
              "pose": {
                "position": {
                  "$discriminator": "PositionTypeEnum_LATITUDE_LONGITUDE_ALTITUDE",
                  "latitude_longitude_altitude": {
                    "latitude": 10.1,
                    "longitude": 12.1,
                    "altitude": []
                  }
                }
              }
            },
            "radius": 2
          }
        }
      }
    },
    "action": "TaskAdminActionEnum_PUSH"
  }
}

Task Admin Clear

✅ validates against catl/hibw/messages/task/TaskAdmin.json. Routes to 4817/exercise-alpha/v0.3.0/dst/node-bravo/task/admin (QoS 2).

catl_14_task_admin_clear.json
{
  "header": {
    "message_type": "MessageTypeEnum_TASK_ADMIN",
    "source": "a895f8f5-46b0-5603-bdf0-b270a2867c09",
    "version": "0.3.0",
    "time_sent": "2025-03-18T12:05:00+00:00"
  },
  "body": {
    "identifier": "dc0ae8a2-3c14-5f4c-9aa0-2d3907d8a346",
    "node": "a895f8f5-46b0-5603-bdf0-b270a2867c09",
    "description": {
      "$discriminator": "TaskTypeEnum_CLEAR",
      "clear": {
        "volume": {
          "identifier": "3f8e5aca-9aa6-536a-a03f-5e414b84656b",
          "timestamp": "2025-03-18T12:05:00+00:00",
          "volume": {
            "bottom_boundary": -100,
            "top_boundary": 0,
            "region": {
              "$discriminator": "RegionTypeEnum_POLYGON_AREA",
              "polygon_area": {
                "points": [
                  {
                    "latitude": 10,
                    "longitude": 10
                  },
                  {
                    "latitude": 11,
                    "longitude": 11
                  },
                  {
                    "latitude": 12,
                    "longitude": 12
                  }
                ]
              }
            }
          }
        }
      }
    },
    "action": "TaskAdminActionEnum_PUSH"
  }
}

Task Admin Complex

✅ validates against catl/hibw/messages/task/TaskAdmin.json. Routes to 4817/exercise-alpha/v0.3.0/dst/node-bravo/task/admin (QoS 2).

catl_20_task_admin_complex.json
{
  "header": {
    "message_type": "MessageTypeEnum_TASK_ADMIN",
    "source": "a895f8f5-46b0-5603-bdf0-b270a2867c09",
    "version": "0.3.0",
    "time_sent": "2025-03-18T12:05:00+00:00"
  },
  "body": {
    "identifier": "1c23f10b-735d-5690-9430-0c7d419424ee",
    "node": "a895f8f5-46b0-5603-bdf0-b270a2867c09",
    "constraints": [
      {
        "constraint": {
          "$discriminator": "GeneralConstraintTypeEnum_TOGGLE",
          "toggle": {
            "value": false
          }
        },
        "identifier": "18337d93-f73c-551b-bf0f-de8f85361fc4",
        "strength": "ConstraintStrengthEnum_ADVISORY"
      },
      {
        "constraint": {
          "$discriminator": "GeneralConstraintTypeEnum_RANGE",
          "range": {
            "value": 15.2
          }
        },
        "identifier": "c2e99209-de07-4292-b276-6406168e4f5c",
        "strength": "ConstraintStrengthEnum_REQUIRED"
      },
      {
        "constraint": {
          "$discriminator": "GeneralConstraintTypeEnum_ENUMERATION",
          "enumeration": {
            "value": {
              "name": "ON"
            }
          }
        },
        "identifier": "0c51c5e2-9f00-4466-b4e0-6081eeae6461",
        "strength": "ConstraintStrengthEnum_OPTIONAL"
      },
      {
        "constraint": {
          "$discriminator": "GeneralConstraintTypeEnum_EQUIPMENT",
          "equipment": {
            "emission_control": "ConstraintTypeEmissionControlEnum_ROUTINE"
          }
        },
        "identifier": "bb5717d7-5ce1-4f22-ae68-1645ac5f1187",
        "strength": "ConstraintStrengthEnum_ADVISORY"
      }
    ],
    "description": {
      "$discriminator": "TaskTypeEnum_CLEAR",
      "clear": {
        "volume": {
          "identifier": "4cc311c9-b0c1-5651-b0a1-8d78b99bdf96",
          "timestamp": "2025-03-18T12:05:00+00:00",
          "volume": {
            "bottom_boundary": -100,
            "top_boundary": 0,
            "region": {
              "$discriminator": "RegionTypeEnum_POLYGON_AREA",
              "polygon_area": {
                "points": [
                  {
                    "latitude": 10,
                    "longitude": 10
                  },
                  {
                    "latitude": 11,
                    "longitude": 11
                  },
                  {
                    "latitude": 12,
                    "longitude": 12
                  }
                ]
              }
            }
          }
        }
      }
    },
    "action": "TaskAdminActionEnum_PUSH"
  }
}

Integrate it

The two calls every integrator needs — validate the message, then resolve its MQTT route (this type is addressed, so pass a dest_id):

# 1 · fetch a worked Task Admin example
curl -s https://4817.r2d2.office.ilab.zone/examples/catl_5_task_admin.json | jq '.message' > msg.json

# 2 · validate it against the 0.3.0 schema
curl -s https://4817.r2d2.office.ilab.zone/validate -H 'content-type: application/json' \
  -d "{\"message\": $(cat msg.json)}" | jq '{valid, schema_ref, errors}'

# 3 · resolve where it publishes on MQTT
curl -s "https://4817.r2d2.office.ilab.zone/route?dest_id=node-bravo" -H 'content-type: application/json' \
  -d "{\"message\": $(cat msg.json)}" | jq

Try them interactively in the Integration API reference.

On this page