Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
flockwave-spec / spec / definitions.json
Size: Mime:
{
  "antennaInformation": {
    "title": "RTK antenna info",
    "description": "Information about an RTK antenna",
    "type": "object",
    "properties": {
      "stationId": {
        "title": "Station ID",
        "type": "number"
      },
      "descriptor": {
        "title": "Antenna descriptor",
        "type": "string"
      },
      "serialNumber": {
        "title": "Serial number",
        "type": "string"
      },
      "position": {
        "$ref": "#/gpsCoordinate"
      },
      "positionECEF": {
        "$ref": "#/ecefCoordinate"
      }
    }
  },

  "asyncCommandResponseMap": {
    "type": "object",
    "additionalProperties": {
      "anyOf": [{ "$ref": "#/commandResponse" }, { "type": "string" }]
    }
  },

  "attitude": {
    "title": "Attitude",
    "description": "Attitude around the principal aircraft axes",
    "type": "array",
    "minItems": 3,
    "items": [
      {
        "title": "Roll angle",
        "description": "Roll angle, in 1/10th of degrees",
        "type": "integer",
        "minimum": -1800,
        "exclusiveMaximum": 1800
      },
      {
        "title": "Pitch angle",
        "description": "Pitch angle, in 1/10th of degrees",
        "type": "integer",
        "minimum": -1800,
        "exclusiveMaximum": 1800
      },
      {
        "title": "Yaw angle",
        "description": "Yaw angle, in 1/10th of degrees",
        "type": "integer",
        "minimum": 0,
        "exclusiveMaximum": 3600
      }
    ]
  },

  "batteryInfo": {
    "title": "Battery information",
    "description": "Information about the on-board battery of the UAV, if applicable",
    "type": "array",
    "minItems": 1,
    "items": [
      {
        "title": "Battery voltage",
        "description": "The voltage of the battery, in 1/10th of volts",
        "type": "integer",
        "minimum": 0
      },
      {
        "title": "State of charge (%)",
        "description": "Percentage indicator of the state of charge of the battery (100% = full, 0% = empty, -1 = unknown)",
        "type": "integer",
        "minimum": -1,
        "maximum": 100
      },
      {
        "title": "Charging",
        "description": "Whether the battery is charging",
        "type": "boolean"
      }
    ]
  },

  "beaconBasicProperties": {
    "title": "Beacon basic properties",
    "description": "Basic information of a single beacon that is unlikely to change over time",
    "type": "object",
    "properties": {
      "id": {
        "$ref": "#/objectId"
      },
      "name": {
        "title": "Name",
        "type": "string",
        "description": "The human-readable name of the beacon, shown on the UI"
      }
    },
    "required": ["id", "name"]
  },

  "beaconIdList": {
    "title": "Beacon IDs",
    "description": "IDs of the beacons that the message refers to",
    "type": "array",
    "items": {
      "$ref": "#/objectId"
    },
    "uniqueItems": true
  },

  "beaconStatusInfo": {
    "title": "Beacon status info",
    "description": "Status information of a single beacon",
    "type": "object",
    "properties": {
      "id": {
        "$ref": "#/objectId"
      },
      "active": {
        "title": "Is active",
        "type": "boolean",
        "description": "Whether the beacon is currently active (operational). May be omitted for passive beacons or points of interest."
      },
      "heading": {
        "title": "Heading",
        "description": "The heading of the beacon in the local tangent plane, in 1/10th of degrees, if known",
        "type": "integer",
        "minimum": 0,
        "exclusiveMaximum": 3600
      },
      "position": {
        "$ref": "#/gpsCoordinate"
      },
      "timestamp": {
        "title": "Last updated at",
        "description": "Timestamp that denotes when the status of the beacon was updated the last time",
        "type": "number"
      }
    },
    "required": ["id", "timestamp"]
  },

  "boolMap": {
    "type": "object",
    "additionalProperties": { "type": "boolean" }
  },

  "channelId": {
    "title": "Channel ID",
    "description": "Identifier of a single channel of a single device on a UAV",
    "type": "string",
    "minLength": 1,
    "maxLength": 64,
    "pattern": "^[^/]+$"
  },

  "channelOperation": {
    "title": "Operation",
    "description": "Operation that can be performed on a channel",
    "type": "string",
    "enum": ["read", "write"]
  },

  "channelType": {
    "title": "Type",
    "description": "Type of a channel",
    "type": "string",
    "enum": [
      "audio",
      "boolean",
      "bytes",
      "cartesian",
      "color",
      "duration",
      "gps",
      "number",
      "object",
      "string",
      "time",
      "video"
    ]
  },

  "clockEpoch": {
    "anyOf": [
      {
        "type": "string",
        "format": "date-time"
      },
      {
        "type": "string",
        "enum": ["unix"]
      }
    ]
  },

  "clockId": {
    "title": "Clock ID",
    "description": "Identifier of a single clock",
    "type": "string",
    "minLength": 1,
    "maxLength": 64
  },

  "clockIdList": {
    "title": "Clock IDs",
    "description": "IDs of the clocks that the message refers to",
    "type": "array",
    "items": {
      "$ref": "#/clockId"
    },
    "uniqueItems": true
  },

  "clockInfo": {
    "title": "Clock info",
    "description": "Information about a clock",
    "type": "object",
    "properties": {
      "id": {
        "$ref": "#/clockId"
      },
      "epoch": {
        "$ref": "#/clockEpoch"
      },
      "retrievedAt": {
        "type": "number"
      },
      "running": {
        "type": "boolean"
      },
      "ticksPerSecond": {
        "type": "number",
        "minimum": 0,
        "exclusiveMinimum": true
      },
      "ticks": {
        "type": "number"
      }
    },
    "required": ["id", "retrievedAt", "running", "ticks"]
  },

  "colorRGB565": {
    "title": "Color",
    "description": "Color in RGB565 representation",
    "type": "integer",
    "minimum": 0,
    "maximum": 65535
  },

  "commandExecutionStatus": {
    "title": "Command execution status",
    "description": "Execution status of a command executed on a UAV",
    "type": "object",
    "properties": {
      "id": {
        "$ref": "#/receiptId"
      },
      "sent": {
        "type": "number"
      },
      "acknowledged": {
        "type": "number"
      },
      "updated": {
        "type": "number"
      },
      "finished": {
        "type": "number"
      },
      "progress": {
        "$ref": "#/progress"
      }
    },
    "required": ["sent"],
    "additionalProperties": false
  },

  "commandResponse": {
    "title": "Command response",
    "description": "Response given by a UAV to a command request",
    "type": "object",
    "properties": {
      "type": {
        "type": "string"
      },
      "data": {}
    },
    "additionalProperties": false,
    "required": ["type", "data"]
  },

  "connectionId": {
    "title": "Connection ID",
    "description": "Identifier of a single connection",
    "type": "string",
    "minLength": 1,
    "maxLength": 64
  },

  "connectionIdList": {
    "title": "Connection IDs",
    "description": "IDs of the connections that the message refers to",
    "type": "array",
    "items": {
      "$ref": "#/connectionId"
    },
    "uniqueItems": true
  },

  "connectionInfo": {
    "title": "Connection info",
    "description": "Information about a connection",
    "type": "object",
    "properties": {
      "id": {
        "$ref": "#/connectionId"
      },
      "purpose": {
        "$ref": "#/connectionPurpose"
      },
      "description": {
        "type": "string"
      },
      "status": {
        "$ref": "#/connectionStatus"
      },
      "timestamp": {
        "type": "number"
      }
    },
    "required": ["id", "purpose", "status"]
  },

  "connectionPurpose": {
    "title": "Purpose",
    "description": "Purpose of the connection",
    "type": "string",
    "enum": [
      "debug",
      "dock",
      "dgps",
      "gps",
      "time",
      "uavRadioLink",
      "mocap",
      "other"
    ]
  },

  "connectionStatus": {
    "title": "Status",
    "description": "Status of the connection",
    "type": "string",
    "enum": [
      "disconnected",
      "connecting",
      "connected",
      "disconnecting",
      "unknown"
    ]
  },

  "deviceClass": {
    "title": "Class",
    "description": "Class of a device",
    "type": "string",
    "enum": [
      "accelerometer",
      "actuator",
      "altimeter",
      "battery",
      "camera",
      "cpu",
      "cpuCore",
      "gps",
      "group",
      "gyroscope",
      "led",
      "magnetometer",
      "microphone",
      "misc",
      "pyro",
      "radio",
      "rangefinder",
      "rc",
      "rotor",
      "sensor",
      "speaker",
      "sprayer"
    ],
    "default": "misc"
  },

  "deviceId": {
    "title": "Device ID",
    "description": "Identifier of a single device on a UAV",
    "type": "string",
    "minLength": 1,
    "maxLength": 64,
    "pattern": "^[^/]+$"
  },

  "deviceTreeNode": {
    "title": "Device tree node",
    "description": "A single device tree node representing a UAV, a device or a channel",
    "type": "object",
    "properties": {
      "type": {
        "$ref": "#/deviceTreeNodeType"
      },
      "subType": {
        "$ref": "#/channelType"
      },
      "class": {
        "$ref": "#/deviceClass"
      },
      "children": {
        "type": "object"
      },
      "operations": {
        "type": "array",
        "items": {
          "$ref": "#/channelOperation"
        }
      },
      "unit": {
        "title": "Unit",
        "description": "Unit in which the value of a numeric channel is expressed",
        "type": "string"
      }
    },
    "required": ["type"],
    "additionalProperties": false
  },

  "deviceTreeNodeType": {
    "title": "Type",
    "description": "Type of a device tree node",
    "type": "string",
    "enum": ["root", "object", "device", "channel"]
  },

  "deviceTreePath": {
    "title": "Device tree path",
    "description": "An absolute device path that uniquely identifies a UAV, a device on a UAV or a channel of a device on a UAV",
    "type": "string",
    "minLength": 1,
    "pattern": "^((/[^/]+)+|/)$"
  },

  "deviceTreePathList": {
    "title": "Device tree paths",
    "description": "Paths of the device tree entries that the message refers to",
    "type": "array",
    "items": {
      "$ref": "#/deviceTreePath"
    }
  },

  "dockIdList": {
    "title": "Dock IDs",
    "description": "IDs of the docking stations that the message refers to",
    "type": "array",
    "items": {
      "$ref": "#/objectId"
    },
    "uniqueItems": true
  },

  "dockStatusInfo": {
    "title": "Docking station status info",
    "description": "Status information of a single docking station",
    "type": "object",
    "properties": {
      "id": {
        "$ref": "#/objectId"
      },
      "position": {
        "$ref": "#/gpsCoordinate"
      },
      "timestamp": {
        "title": "Last updated at",
        "description": "Timestamp that denotes when the status of the docking station was updated the last time",
        "type": "number"
      }
    },
    "required": ["id", "timestamp"]
  },

  "droneShowConfiguration": {
    "title": "Drone show configuration",
    "description": "Full configuration of a drone show",
    "type": "object",
    "properties": {
      "start": {
        "type": "object",
        "properties": {
          "authorized": {
            "description": "Whether the server has received authorization from a human operator to start the show",
            "type": "boolean"
          },
          "clock": {
            "desciption": "Identifier of the clock that the start time refers to; null means that the start time is a UNIX timestamp",
            "anyOf": [{ "$ref": "#/clockId" }, { "type": "null" }]
          },
          "time": {
            "description": "Timestamp when the drone show should start",
            "anyOf": [{ "type": "number" }, { "type": "null" }]
          },
          "method": {
            "type": "string",
            "enum": ["rc", "auto"]
          },
          "uavIds": {
            "description": "Array containing the IDs of the UAVs that should be started automatically",
            "type": "array",
            "items": {
              "$ref": "#/objectId"
            }
          }
        }
      },
      "mapping": {
        "description": "Mapping of show-specific indices to the corresponding UAV IDs, if known. Not mandatory.",
        "type": "array",
        "items": {
          "anyOf": [{ "$ref": "#/objectId" }, { "type": "null" }]
        }
      },
      "duration": {
        "description": "The total duration of the show, in seconds. Not mandatory.",
        "type": "number",
        "minimum": 0
      }
    }
  },

  "droneLightsConfiguration": {
    "title": "Drone lights configuration",
    "description": "Full configuration of the behaviour of the LED lights on a drone during a drone show",
    "type": "object",
    "properties": {
      "effect": {
        "type": "string",
        "description": "Type of the light effect."
      },
      "color": {
        "type": "array",
        "description": "Color of the light effect in RGB notations. Values in the array must be between 0 and 255, inclusive.",
        "items": {
          "type": "number"
        }
      }
    }
  },

  "ecefCoordinate": {
    "title": "ECEF coordinate",
    "description": "Earth-centered Earth-fixed coordinate of an object",
    "type": "array",
    "minItems": 3,
    "items": [
      {
        "title": "X",
        "description": "X coordinate in millimeters",
        "type": "number"
      },
      {
        "title": "Y",
        "description": "Y coordinate in millimeters",
        "type": "number"
      },
      {
        "title": "Z",
        "description": "Z coordinate in millimeters",
        "type": "number"
      }
    ]
  },

  "error": {
    "type": "string"
  },

  "errorCodeList": {
    "title": "List of errors",
    "description": "List of currently active error codes for a single UAV",
    "type": "array",
    "items": {
      "type": "integer"
    }
  },

  "errorMap": {
    "type": "object",
    "additionalProperties": { "$ref": "#/error" }
  },

  "extensionId": {
    "title": "Extension ID",
    "description": "Identifier of a single extension",
    "type": "string",
    "minLength": 1,
    "maxLength": 64
  },

  "extensionIdList": {
    "title": "Extension IDs",
    "description": "IDs of the extensions that the message refers to",
    "type": "array",
    "items": {
      "$ref": "#/extensionId"
    },
    "uniqueItems": true
  },

  "extensionInfo": {
    "title": "Clock info",
    "description": "Information about an extension",
    "type": "object",
    "properties": {
      "id": {
        "$ref": "#/extensionId"
      },
      "loaded": {
        "type": "boolean"
      },
      "name": {
        "type": "string"
      },
      "description": {
        "type": "string"
      }
    },
    "required": ["id", "loaded", "name"]
  },

  "firmwareUpdateTarget": {
    "title": "Firmware update target",
    "description": "A component of an object that can be targeted with a firmware update",
    "type": "object",
    "properties": {
      "id": {
        "$ref": "#/firmwareUpdateTargetId"
      },
      "name": {
        "type": "string"
      }
    },
    "required": ["id", "name"]
  },

  "firmwareUpdateTargetId": {
    "title": "Firmware update target ID",
    "description": "Identifier of a single firmware update target",
    "type": "string",
    "minLength": 1
  },

  "firmwareUpdateTargetIdList": {
    "title": "Firmware update target IDs",
    "description": "IDs of the firmware update targets that a request refers to",
    "type": "array",
    "items": {
      "$ref": "#/firmwareUpdateTargetId"
    },
    "uniqueItems": true
  },

  "flightLog": {
    "title": "Flight log",
    "description": "Contents of a flight log",
    "type": "object",
    "properties": {
      "id": {
        "$ref": "#/flightLogId"
      },
      "timestamp": {
        "type": "number"
      },
      "size": {
        "type": "number"
      },
      "kind": {
        "type": "string"
      },
      "body": {
        "type": ["string", "object"]
      }
    },
    "required": ["id", "kind", "body"]
  },

  "flightLogId": {
    "title": "Flight log ID",
    "description": "Identifier of a single flight log",
    "type": "string",
    "minLength": 1
  },

  "flightLogMetadata": {
    "title": "Flight log metadata",
    "description": "Metadata of a single flight log entry stored on a UAV",
    "type": "object",
    "properties": {
      "id": {
        "$ref": "#/flightLogId"
      },
      "timestamp": {
        "type": "number"
      },
      "size": {
        "type": "number"
      },
      "kind": {
        "type": "string"
      }
    },
    "required": ["id", "kind"]
  },

  "flightLogMetadataList": {
    "title": "Flight log metadata items",
    "description": "List of the metadata of flight logs stored on a UAV",
    "type": "array",
    "items": {
      "$ref": "#/flightLogMetadata"
    }
  },

  "gpsCoordinate": {
    "title": "GPS coordinate",
    "description": "GPS coordinate of an object",
    "type": "array",
    "minItems": 2,
    "items": [
      {
        "title": "Latitude",
        "description": "Latitude, in 1e-7 degrees",
        "type": "integer",
        "minimum": -900000000,
        "maximum": 900000000
      },
      {
        "title": "Longitude",
        "description": "Longitude, in 1e-7 degrees",
        "type": "integer",
        "minimum": -1800000000,
        "maximum": 1800000000
      },
      {
        "title": "AMSL",
        "description": "Altitude above mean sea level, in millimeters",
        "type": ["integer", "null"]
      },
      {
        "title": "AHL",
        "description": "Altitude above home level, in millimeters",
        "type": ["integer", "null"]
      },
      {
        "title": "AGL",
        "description": "Altitude above ground level, in millimeters",
        "type": ["integer", "null"]
      }
    ]
  },

  "gpsFix": {
    "title": "GPS fix",
    "description": "Basic information about the GPS fix",
    "type": "array",
    "minItems": 1,
    "items": [
      {
        "title": "GPS fix type",
        "type": "integer",
        "minimum": 0,
        "maximum": 7
      },
      {
        "title": "Number of satellites",
        "type": ["integer", "null"]
      },
      {
        "title": "hAcc",
        "description": "Horizontal accuracy, in millimeters",
        "type": ["integer", "null"]
      },
      {
        "title": "vAcc",
        "description": "Vertical accuracy, in millimeters",
        "type": ["integer", "null"]
      }
    ]
  },

  "license": {
    "title": "License",
    "description": "A license object that is activated on the server",
    "type": "object",
    "properties": {
      "id": {
        "title": "License ID",
        "type": "string"
      },
      "licensee": {
        "title": "Name of the license holder",
        "type": "string"
      },
      "expiryDate": {
        "title": "Expiry date",
        "type": "string",
        "format": "date"
      },
      "features": {
        "title": "Additional features",
        "type": "array",
        "items": {
          "$ref": "#/licenseFeature"
        }
      },
      "restrictions": {
        "title": "Restrictions",
        "type": "array",
        "items": {
          "$ref": "#/licenseRestriction"
        }
      }
    },
    "required": ["id", "licensee"]
  },

  "licenseFeature": {
    "title": "License feature",
    "description": "An optional feature that is enabled by a license",
    "type": "object",
    "properties": {
      "type": {
        "title": "Feature type",
        "type": "string"
      },
      "label": {
        "title": "Description",
        "type": "string"
      },
      "secondaryLabel": {
        "title": "Additional info",
        "type": "string"
      },
      "parameters": {
        "type": "object"
      }
    },
    "required": ["type"]
  },

  "licenseRestriction": {
    "title": "License restrictions",
    "description": "Restrictions imposed on the functionality of the server by a license",
    "type": "object",
    "properties": {
      "type": {
        "title": "Restriction type",
        "type": "string"
      },
      "label": {
        "title": "Description",
        "type": "string"
      },
      "secondaryLabel": {
        "title": "Additional info",
        "type": "string"
      },
      "parameters": {
        "type": "object"
      }
    },
    "required": ["type"]
  },

  "logMessage": {
    "title": "Log message",
    "description": "A single log message sent from the server to the client",
    "type": "object",
    "properties": {
      "message": {
        "type": "string"
      },
      "timestamp": {
        "type": "number"
      },
      "sender": {
        "$ref": "#/objectId"
      },
      "severity": {
        "$ref": "#/severity"
      }
    },
    "required": ["message"]
  },

  "magneticVector": {
    "title": "Magnetic vector",
    "description": "Magnetic vector",
    "type": "array",
    "items": [
      {
        "title": "North",
        "description": "North component, in nanoteslas",
        "type": "integer"
      },
      {
        "title": "East",
        "description": "East component, in nanoteslas",
        "type": "integer"
      },
      {
        "title": "Down",
        "description": "Down component, in nanoteslas",
        "type": "integer"
      }
    ]
  },

  "messageId": {
    "title": "Message ID",
    "description": "Identifier of the message",
    "type": "string",
    "minLength": 1,
    "maxLength": 36
  },

  "messageObservations": {
    "title": "RTK message observations",
    "description": "RTK message observation statistics",
    "type": "array",
    "minItems": 2,
    "items": [
      {
        "title": "Age",
        "description": "The age of the last observation in milliseconds",
        "type": "integer"
      },
      {
        "title": "Size",
        "description": "Size of the observation in bits per second",
        "type": "number"
      }
    ]
  },

  "objectIdList": {
    "title": "Object IDs",
    "description": "IDs of the objects that the message refers to",
    "type": "array",
    "items": {
      "$ref": "#/objectId"
    },
    "uniqueItems": true
  },

  "objectId": {
    "title": "Object ID",
    "description": "Identifier of a single object",
    "type": "string",
    "minLength": 1,
    "maxLength": 64,
    "pattern": "^[^/]+$"
  },

  "objectType": {
    "title": "Object type",
    "description": "Type of an object tracked by the server",
    "type": "string",
    "examples": ["beacon", "dock", "other", "uav", "weatherStation"]
  },

  "objectTypeFilter": {
    "title": "Object types",
    "description": "Types of objects that the user is interested in",
    "type": "array",
    "items": {
      "$ref": "#/objectType"
    },
    "uniqueItems": true
  },

  "preflightCheckInfo": {
    "title": "UAV preflight check info",
    "description": "Preflight check information of a single UAV",
    "type": "object",
    "properties": {
      "items": {
        "title": "Preflight check items",
        "type": "array",
        "items": {
          "$ref": "#/preflightCheckItem"
        }
      },
      "message": {
        "title": "Preflight check summary",
        "description": "Preflight check summary message",
        "type": "string"
      },
      "result": {
        "$ref": "#/preflightCheckResult"
      }
    },
    "required": ["items", "result"]
  },

  "preflightCheckItem": {
    "title": "A single item in a preflight checklist",
    "type": "object",
    "properties": {
      "id": {
        "$ref": "#/preflightCheckItemId"
      },
      "label": {
        "title": "Label of the preflight checklist item",
        "type": "string"
      },
      "result": {
        "$ref": "#/preflightCheckResult"
      },
      "message": {
        "title": "Detailed message for the preflight checklist item",
        "type": "string"
      }
    },
    "required": ["id", "result"]
  },

  "preflightCheckItemId": {
    "$ref": "#/objectId"
  },

  "preflightCheckResult": {
    "title": "Preflight check result",
    "description": "Result of the preflight check or a single item in a preflight checklist",
    "type": "string",
    "enum": [
      "off",
      "pass",
      "warning",
      "running",
      "softFailure",
      "failure",
      "error"
    ]
  },

  "positionXYZ": {
    "title": "Position (XYZ)",
    "description": "Position in a local right-handed XYZ coordinate system",
    "type": "array",
    "minItems": 3,
    "items": [
      {
        "title": "X component",
        "description": "X component of the vector, in mm",
        "type": "integer"
      },
      {
        "title": "Y component",
        "description": "Y component of the vector, in mm",
        "type": "integer"
      },
      {
        "title": "Z component",
        "description": "Z component of the vector, in mm",
        "type": "integer"
      }
    ]
  },

  "progress": {
    "title": "Progress information",
    "description": "Progress of some operation being executed on a UAV",
    "type": "object",
    "properties": {
      "percentage": {
        "type": "integer",
        "minimum": 0,
        "maximum": 100
      },
      "message": {
        "type": "string"
      },
      "object": {
        "type": "object"
      }
    },
    "additionalProperties": false
  },

  "receiptId": {
    "title": "Receipt ID",
    "description": "Identifier of the receipt",
    "type": "string",
    "minLength": 1,
    "maxLength": 64
  },

  "receiptIdList": {
    "title": "Receipt IDs",
    "description": "IDs of the receipts that the message refers to",
    "type": "array",
    "items": {
      "$ref": "#/receiptId"
    },
    "uniqueItems": true
  },

  "receiptMap": {
    "type": "object",
    "additionalProperties": { "$ref": "#/receiptId" }
  },

  "rssi": {
    "title": "RSSI",
    "description": "Received signal strength indicator, for each of the channels the UAV is accessible on",
    "type": "array",
    "items": {
      "type": "integer",
      "minimum": -1,
      "maximum": 100
    }
  },

  "rtkConfigurationPreset": {
    "title": "RTK configuration preset",
    "description": "Information about an RTK preset",
    "type": "object",
    "properties": {
      "title": {
        "title": "Title",
        "description": "A human-readable title of the preset",
        "type": "string"
      },
      "format": {
        "title": "Message format",
        "description": "Format of the GPS messages arriving in this configuration",
        "type": "string",
        "enum": ["auto", "rtcm2", "rtcm3", "ubx"]
      },
      "sources": {
        "title": "Sources",
        "description": "List of source connections where this preset collects messages from",
        "type": "array",
        "items": {
          "$ref": "#/rtkPresetSource"
        }
      }
    },
    "required": ["title", "format", "sources"]
  },

  "rtkPresetId": {
    "title": "RTK Preset ID",
    "description": "Identifier of an RTK preset",
    "type": "string",
    "minLength": 1,
    "maxLength": 64
  },

  "rtkPresetIdList": {
    "title": "RTK Preset IDs",
    "description": "IDs of the RTK presets that the message refers to",
    "type": "array",
    "items": {
      "$ref": "#/rtkPresetId"
    },
    "uniqueItems": true
  },

  "rtkPresetSource": {
    "title": "RTK preset source",
    "description": "Identifier of an RTK source connection",
    "type": "string",
    "minLength": 1
  },

  "rtkSurveySettings": {
    "title": "RTK survey settings",
    "description": "RTK survey settings",
    "type": "object",
    "properties": {
      "duration": {
        "title": "Survey duration",
        "description": "Minimum duration of RTK survey",
        "type": "number"
      },
      "accuracy": {
        "title": "Survey accuracy",
        "description": "Expected RTK survey position accuracy in meters",
        "type": "number"
      },
      "messageSet": {
        "title": "Message set",
        "description": "RTK message set to use",
        "type": "string",
        "enum": ["msm4", "msm7"]
      },
      "position": {
        "$ref": "#/ecefCoordinate"
      },
      "gnssTypes": {
        "title": "GNSS types",
        "desciption": "GNSS types to use for RTK corrections",
        "type": "array",
        "items": {
          "type": "string",
          "enum": [
            "gps",
            "glonass",
            "galileo",
            "sbas",
            "qzss",
            "beidou",
            "irnss"
          ]
        }
      }
    },
    "required": ["duration", "accuracy", "messageSet"]
  },

  "satelliteCNRs": {
    "title": "RTK Satellite CNRs",
    "description": "RTK satellite carrier-to-noise ratios in dB",
    "type": "number"
  },

  "surveyStatus": {
    "title": "RTK survey status",
    "description": "RTK survey accuracy and flags",
    "type": "object",
    "properties": {
      "accuracy": {
        "title": "Survey accuracy",
        "description": "RTK survey position accuracy in meters",
        "type": "number"
      },
      "flags": {
        "title": "Survey flags",
        "description": "RTK survey status flags (0: unknown, 1: supported, 2: active, 4: valid)",
        "type": "integer",
        "minimum": 0,
        "maximum": 7
      }
    },
    "required": ["accuracy", "flags"]
  },

  "severity": {
    "title": "Severity",
    "description": "Severity of the message",
    "type": "string",
    "enum": ["debug", "info", "warning", "error", "critical"]
  },

  "stringMap": {
    "type": "object",
    "additionalProperties": { "type": "string" }
  },

  "transportOptions": {
    "title": "Transport options",
    "description": "Additional preferences about how the message should be delivered to UAVs",
    "type": "object",
    "properties": {
      "channel": {
        "title": "Channel",
        "description": "Index of the communication channel to use",
        "type": "integer"
      },
      "broadcast": {
        "title": "Broadcast allowed?",
        "description": "Stores whether the server is allowed to use a broadcast message",
        "type": "boolean"
      },
      "ignoreIds": {
        "title": "Ignore IDs",
        "description": "Whether to broadcast the message to all UAVs, ignoring the explicit UAV IDs in the command",
        "type": "boolean"
      }
    }
  },

  "uavIdList": {
    "title": "UAV IDs",
    "description": "IDs of the UAVs that the message refers to",
    "type": "array",
    "items": {
      "$ref": "#/objectId"
    },
    "uniqueItems": true
  },

  "uavStatusInfo": {
    "title": "UAV status info",
    "description": "Status information of a single UAV",
    "type": "object",
    "properties": {
      "id": {
        "$ref": "#/objectId"
      },
      "mode": {
        "title": "Flight mode",
        "description": "The flight mode of the UAV",
        "type": "string"
      },
      "position": {
        "$ref": "#/gpsCoordinate"
      },
      "positionXYZ": {
        "$ref": "#/positionXYZ"
      },
      "gps": {
        "$ref": "#/gpsFix"
      },
      "heading": {
        "title": "Heading",
        "description": "The heading of the UAV in the local tangent plane, in 1/10th of degrees",
        "type": "integer",
        "minimum": 0,
        "exclusiveMaximum": 3600
      },
      "attitude": {
        "$ref": "#/attitude"
      },
      "velocity": {
        "$ref": "#/velocityNED"
      },
      "velocityXYZ": {
        "$ref": "#/velocityXYZ"
      },
      "timestamp": {
        "title": "Last updated at",
        "description": "Timestamp that denotes when the status of the UAV was updated the last time",
        "type": "number"
      },
      "battery": {
        "$ref": "#/batteryInfo"
      },
      "light": {
        "$ref": "#/colorRGB565"
      },
      "rssi": {
        "$ref": "#/rssi"
      },
      "errors": {
        "$ref": "#/errorCodeList"
      },
      "debug": {
        "type": "string"
      }
    },
    "required": ["id", "timestamp"]
  },

  "userName": {
    "title": "Username",
    "description": "Name of the user",
    "type": "string",
    "pattern": "^[-A-Za-z0-9!#%&'*+/=?\\^_`{|}~]*(@[-A-Za-z0-9!#%&'*+/=?\\^_`{|}~.]+)?$"
  },

  "velocityNED": {
    "title": "Velocity (NED)",
    "description": "Velocity in the NED coordinate system",
    "type": "array",
    "minItems": 3,
    "items": [
      {
        "title": "North component",
        "description": "North component of the vector, in mm/s",
        "type": "integer"
      },
      {
        "title": "East component",
        "description": "East component of the vector, in mm/s",
        "type": "integer"
      },
      {
        "title": "Down component",
        "description": "Down component of the vector, in mm/s",
        "type": "integer"
      }
    ]
  },

  "velocityXYZ": {
    "title": "Velocity (XYZ)",
    "description": "Velocity in a local right-handed XYZ coordinate system",
    "type": "array",
    "minItems": 3,
    "items": [
      {
        "title": "X component",
        "description": "X component of the vector, in mm/s",
        "type": "integer"
      },
      {
        "title": "Y component",
        "description": "Y component of the vector, in mm/s",
        "type": "integer"
      },
      {
        "title": "Z component",
        "description": "Z component of the vector, in mm/s",
        "type": "integer"
      }
    ]
  },

  "versionMap": {
    "type": "object",
    "description": "Object mapping string identifiers to version numbers in no particular format",
    "additionalProperties": { "type": "string" }
  },

  "versionNumber": {
    "title": "Version",
    "description": "Version number in major.minor.patch format; minor and patch versions are optional",
    "type": "string",
    "pattern": "^[0-9]+(\\.[0-9]+){0,2}$"
  },

  "weather": {
    "title": "Weather info",
    "type": "object",
    "properties": {
      "stationId": {
        "$ref": "#/objectId"
      },
      "position": {
        "$ref": "#/gpsCoordinate"
      },
      "timestamp": {
        "title": "Timestamp",
        "description": "Timestamp that denotes the time the weather information applies to",
        "type": "integer"
      },
      "code": {
        "title": "Weather condition code",
        "description": "Numeric weather condition code according to OpenWeatherMap conventions",
        "type": "integer",
        "minimum": 200,
        "maximum": 804
      },
      "sunrise": {
        "title": "Sunrise",
        "description": "Time of sunrise; negative if the Sun does not rise on the given day",
        "type": "integer"
      },
      "sunset": {
        "title": "Sunset",
        "description": "Time of sunset; negative if the Sun does not set on the given day",
        "type": "integer"
      },
      "temperature": {
        "title": "Temperature",
        "description": "Temperature, in kelvin",
        "type": "integer",
        "minimum": 0
      },
      "feelsLike": {
        "title": "Feels like",
        "description": "Temperature, in kelvin, adjusted for human perception of weather",
        "type": "integer",
        "minimum": 0
      },
      "pressure": {
        "title": "Pressure",
        "description": "Atmospheric pressure on the sea level, in Pa",
        "type": "integer"
      },
      "humidity": {
        "title": "Humidity",
        "description": "Humidity, in %",
        "type": "integer",
        "minimum": 0,
        "maximum": 100
      },
      "dewPoint": {
        "title": "Dew point",
        "description": "Atmospheric temperature in 1/10th kelvin below which water droplets begin to condense and dew can form",
        "type": "integer",
        "minimum": 0
      },
      "clouds": {
        "title": "Cloudiness",
        "description": "Cloudiness, in %",
        "type": "integer",
        "minimum": 0,
        "maximum": 100
      },
      "uvIndex": {
        "title": "UV index",
        "description": "UV index, 1/100 units; e.g. 89 --> 0.89",
        "type": "integer",
        "minimum": 0
      },
      "kpIndex": {
        "title": "Planetary K-index",
        "type": "integer",
        "minimum": 0,
        "maximum": 9
      },
      "magneticVector": {
        "$ref": "#/magneticVector"
      },
      "visibility": {
        "title": "Visibility",
        "description": "Average visibility, in metres",
        "type": "integer",
        "minimum": 0
      },
      "windDirection": {
        "title": "Wind direction",
        "description": "Meteorological wind direction, in 1/10th degrees clockwise from due North",
        "type": "integer",
        "minimum": 0,
        "exclusiveMaximum": 3600
      },
      "windSpeed": {
        "title": "Wind speed",
        "description": "Wind speed, in mm/s",
        "type": "integer",
        "minimum": 0
      },
      "windGust": {
        "title": "Wind gust",
        "description": "Wind gust, in mm/s",
        "type": "integer",
        "minimum": 0
      }
    },
    "required": ["timestamp", "position"]
  },

  "weatherStationIdList": {
    "title": "Weather station IDs",
    "description": "IDs of the weather stations that the message refers to",
    "type": "array",
    "items": {
      "$ref": "#/objectId"
    },
    "uniqueItems": true
  }
}