{
 "headerId": "1",
 "timestamp": "2026-10-19T06:00:00.00Z",
 "version": "2.1.0",
 "manufacturer": "Musterwerk",
 "serialNumber": "FLOW-1200-07",
 "typeSpecification": {
  "seriesName": "FLOW-1200",
  "seriesDescription": "Pallet mover, 1.2 t",
  "agvKinematic": "DIFF",
  "agvClass": "CARRIER",
  "maxLoadMass": 1200.0,
  "localizationTypes": [
   "NATURAL"
  ],
  "navigationTypes": [
   "AUTONOMOUS"
  ]
 },
 "agvGeometry": {
  "envelopes2d": [
   {
    "set": "mechanical",
    "polygonPoints": [
     {
      "x": -0.4,
      "y": -0.45
     },
     {
      "x": 2.0,
      "y": -0.45
     },
     {
      "x": 2.0,
      "y": 0.45
     },
     {
      "x": -0.4,
      "y": 0.45
     }
    ],
    "description": "Mechanical envelope, unloaded"
   }
  ]
 },
 "loadSpecification": {
  "loadPositions": [
   "fork"
  ],
  "loadSets": [
   {
    "setName": "DEFAULT",
    "loadType": "EPAL",
    "loadPositions": [
     "fork"
    ],
    "maxWeight": 1200.0,
    "minLoadhandlingHeight": 0.09,
    "maxLoadhandlingHeight": 3.2
   }
  ]
 },
 "protocolLimits": {
  "maxStringLens": {
   "msgLen": 65536,
   "topicSerialLen": 32,
   "topicElemLen": 32,
   "idLen": 40,
   "enumLen": 32,
   "idNumericalOnly": false,
   "loadIdLen": 32
  },
  "maxArrayLens": {
   "order.nodes": 50,
   "order.edges": 50,
   "node.actions": 4,
   "edge.actions": 4,
   "actions.actionsParameters": 8,
   "instantActions": 10,
   "trajectory.knotVector": 100,
   "trajectory.controlPoints": 100,
   "state.nodeStates": 50,
   "state.edgeStates": 50,
   "state.actionStates": 20,
   "state.loads": 4,
   "state.errors": 20,
   "state.information": 20,
   "error.errorReferences": 10,
   "information.infoReferences": 10
  },
  "timing": {
   "minOrderInterval": 1.0,
   "minStateInterval": -1.0,
   "defaultStateInterval": 15.0,
   "visualizationInterval": 1.0
  }
 },
 "protocolFeatures": {
  "optionalParameters": [
   {
    "parameter": "order.zoneSetId",
    "support": "SUPPORTED"
   },
   {
    "parameter": "order.nodes.nodePosition.theta",
    "support": "SUPPORTED",
    "description": "Approach orientation; ignored on nodes without a load handling action."
   },
   {
    "parameter": "order.nodes.nodePosition.allowedDeviationXY",
    "support": "SUPPORTED"
   },
   {
    "parameter": "order.nodes.nodePosition.allowedDeviationTheta",
    "support": "SUPPORTED"
   },
   {
    "parameter": "order.nodes.actions.actionDescription",
    "support": "SUPPORTED"
   },
   {
    "parameter": "order.edges.actions.actionDescription",
    "support": "SUPPORTED"
   }
  ],
  "agvActions": [
   {
    "actionType": "pick",
    "actionDescription": "Take a load onto the forks",
    "actionScopes": [
     "NODE"
    ],
    "blockingTypes": [
     "HARD"
    ],
    "actionParameters": [
     {
      "key": "lhd",
      "valueDataType": "STRING",
      "isOptional": true,
      "description": "Load handling device; defaults to 'fork'."
     },
     {
      "key": "height",
      "valueDataType": "NUMBER",
      "isOptional": true,
      "description": "[m] Fork height, taken from the station when absent."
     }
    ],
    "resultDescription": "Load is on the forks and reported under state.loads."
   },
   {
    "actionType": "drop",
    "actionDescription": "Set a load down",
    "actionScopes": [
     "NODE"
    ],
    "blockingTypes": [
     "HARD"
    ],
    "actionParameters": [
     {
      "key": "lhd",
      "valueDataType": "STRING",
      "isOptional": true
     },
     {
      "key": "height",
      "valueDataType": "NUMBER",
      "isOptional": true
     }
    ]
   },
   {
    "actionType": "cancelOrder",
    "actionScopes": [
     "INSTANT"
    ],
    "blockingTypes": [
     "HARD"
    ]
   },
   {
    "actionType": "startPause",
    "actionScopes": [
     "INSTANT"
    ],
    "blockingTypes": [
     "HARD"
    ]
   },
   {
    "actionType": "stopPause",
    "actionScopes": [
     "INSTANT"
    ],
    "blockingTypes": [
     "HARD"
    ]
   },
   {
    "actionType": "initPosition",
    "actionScopes": [
     "INSTANT"
    ],
    "blockingTypes": [
     "HARD"
    ],
    "actionParameters": [
     {
      "key": "x",
      "valueDataType": "NUMBER"
     },
     {
      "key": "y",
      "valueDataType": "NUMBER"
     },
     {
      "key": "theta",
      "valueDataType": "NUMBER"
     },
     {
      "key": "mapId",
      "valueDataType": "STRING"
     },
     {
      "key": "lastNodeId",
      "valueDataType": "STRING"
     }
    ]
   },
   {
    "actionType": "stateRequest",
    "actionScopes": [
     "INSTANT"
    ],
    "blockingTypes": [
     "NONE"
    ]
   },
   {
    "actionType": "factsheetRequest",
    "actionScopes": [
     "INSTANT"
    ],
    "blockingTypes": [
     "NONE"
    ]
   }
  ]
 }
}
