Edge SDK — Models Reference

For 1.3.x (end of life), see the 1.3 Models reference.

This document provides a comprehensive reference for all request, response, and data models used in the Zequent Edge SDK.

Table of Contents


Command Models

CommandResult

The return type of every EdgeAdapterService command.

Package: com.zqnt.sdk.edge.adapter.domains

FieldTypeDescription
successbooleanWhether the command succeeded
messageStringHuman-readable result message
tidStringTransaction ID for tracing
snStringDevice serial number
resultTypeCommandResultTypeResult classification
externalExecutionIdStringYour execution id for an accepted command

CommandResultType enum:

ValueDescription
SUCCESSCommand completed
ACCEPTEDCommand started and still running; report its outcome with a command execution event
ERRORCommand failed
NOT_IMPLEMENTEDCommand is not supported by this adapter

Factory methods:

CommandResult.success("Message", sn)
CommandResult.success("Message", tid, sn)
CommandResult.accepted("Message", externalExecutionId, sn)
CommandResult.error("Error message", sn)
CommandResult.error("Error message", tid, sn)
CommandResult.notImplemented("Not supported", sn)   // used by the default methods

isNotImplemented() and isAccepted() test the result type. See Edge Adapter reference — How commands arrive.


CurrentCapabilities

Reports the set of capabilities that an adapter currently supports.

Package: com.zqnt.sdk.edge.adapter.domains

FieldTypeDescription
snStringDevice serial number
assetTypeAssetTypeEnumType of asset
capabilitiesSet<Capability>Set of supported capabilities
timestamplongTimestamp when capabilities were reported

Factory methods:

// Empty capabilities
CurrentCapabilities.empty(sn)

// With specific capabilities
CurrentCapabilities.of(sn, AssetTypeEnum.ASSET_TYPE_DOCK, capabilitySet)

Capability

Describes one command the asset supports.

Package: com.zqnt.sdk.edge.adapter.domains

FieldTypeDescription
commandStringThe command id, e.g. flight.takeoff, mission.waypoint.execute
descriptionStringHuman-readable description
stateCapabilityStateCAPABILITY_STATE_AVAILABLE (default), _TEMPORARILY_UNAVAILABLE, _UNSUPPORTED or _REQUIRES_AUTHORIZATION
unavailableReasonStringWhy it is not available right now
inputSchema / outputSchemaMap<String, Object>JSON Schema of the parameters and the result
constraintsMap<String, Object>Limits on the parameters
metadataMap<String, String>Additional key-value pairs
targetTypeCapabilityTargetTypeWhat the command acts on: CAPABILITY_TARGET_TYPE_ASSET (default), _SUB_ASSET, _PAYLOAD, _COMPONENT
targetRefStringWhich sub-asset, payload or component; arrives as componentId in sendCustomCommand
schemaVersionStringVersion of the command's contract; bump it on an incompatible change
errors / eventsList<CapabilityError> / List<CapabilityEvent>Errors and events the command can produce
requirementsCapabilityRequirementsThe asset types, payloads and runtime features the command needs
skillIdStringGroups the command with related ones in the Skill Registry
source, providerWhere the contract comes from

Flight Control Models

TakeOffRequest

Request to initiate takeoff.

Package: com.zqnt.sdk.edge.adapter.domains

FieldTypeDescription
snStringDevice serial number
tidStringTransaction identifier
coordinatesCoordinatesTakeoff position (latitude, longitude, altitude)
externalIdStringThe platform's id for this command; the default execution id to report against

ReturnToHomeRequest

Request to return the sub-asset (drone) to its home position.

Package: com.zqnt.sdk.edge.adapter.domains

FieldTypeDescription
tidStringTransaction identifier
snStringDevice serial number
altitudeFloatReturn altitude in meters

GoToRequest

Request to navigate to specific coordinates.

Package: com.zqnt.sdk.edge.adapter.domains

FieldTypeDescription
snStringDevice serial number
tidStringTransaction identifier
coordinatesCoordinatesTarget position
externalIdStringThe platform's id for this command; the default execution id to report against

Coordinates

Geographic coordinates.

Package: com.zqnt.sdk.edge.adapter.domains

FieldTypeDescription
latitudeFloatGPS latitude in degrees
longitudeFloatGPS longitude in degrees
altitudeFloatAltitude in meters

Manual Control Models

ManualControlInput

A single frame of joystick/stick input for controlling the device in real-time.

Package: com.zqnt.sdk.edge.adapter.domains

FieldTypeDescription
snStringDevice serial number
rollFloatRoll axis value (typically -1.0 to 1.0)
pitchFloatPitch axis value (typically -1.0 to 1.0)
yawFloatYaw axis value (typically -1.0 to 1.0)
throttleFloatThrottle value (typically -1.0 to 1.0)
gimbalPitchFloatGimbal pitch adjustment

This model supports the @Builder pattern:

ManualControlInput input = ManualControlInput.builder()
    .sn("DEVICE_SN")
    .roll(0.0f)
    .pitch(0.5f)
    .yaw(0.0f)
    .throttle(0.3f)
    .gimbalPitch(-0.2f)
    .build();

Camera and Gimbal Models

LookAtRequest

Request to point the camera at specific coordinates.

Package: com.zqnt.sdk.edge.adapter.domains

FieldTypeDescription
snStringDevice serial number
latitudeDoubleTarget GPS latitude
longitudeDoubleTarget GPS longitude
altitudeFloatTarget altitude in meters
lockedBooleanWhether to lock the gimbal on the target
payloadIndexStringCamera/payload index identifier

ChangeLensRequest

Request to switch the active camera lens.

Package: com.zqnt.sdk.edge.adapter.domains

FieldTypeDescription
snStringDevice serial number
lensStringTarget lens identifier (e.g., "wide", "zoom", "ir")
videoIdStringVideo stream identifier

ChangeZoomRequest

Request to adjust the camera zoom level.

Package: com.zqnt.sdk.edge.adapter.domains

FieldTypeDescription
snStringDevice serial number
lensStringLens identifier
payloadIndexStringPayload index
zoomFloatTarget zoom factor

Live Streaming Models

LiveStreamStartRequest

Request to start a video live stream.

Package: com.zqnt.sdk.edge.adapter.domains

FieldTypeDescription
snStringDevice serial number
tidStringTransaction identifier
videoIdStringVideo stream identifier
streamServerStringTarget streaming server URL
videoTypeStringStream type (e.g., RTMP, RTSP)

LiveStreamStopRequest

Request to stop a video live stream.

Package: com.zqnt.sdk.edge.adapter.domains

FieldTypeDescription
snStringDevice serial number
tidStringTransaction identifier
videoIdStringVideo stream identifier to stop

Telemetry Models

TelemetryRequestData

Top-level wrapper for pushing telemetry data to the Live Data Service.

Package: com.zqnt.sdk.edge.adapter.domains

FieldTypeDescription
tidStringTransaction identifier
snStringDevice serial number
assetIdStringPlatform asset identifier
timestampInstantWhen the telemetry was recorded (UTC)
telemetryTelemetryDataThe actual telemetry payload — see below

Supports the @Builder pattern:

TelemetryRequestData data = TelemetryRequestData.builder()
    .sn("DEVICE_SN")
    .tid(UUID.randomUUID().toString())
    .timestamp(Instant.now())
    .telemetry(telemetryData)
    .build();

TelemetryData

Unified asset and sub-asset telemetry. Exactly one of asset / subAsset must be set — which one determines getSourceType() (ASSET, SUB_ASSET, or UNSPECIFIED if neither/both are set). Position and movement fields that both an asset and a sub-asset can report (latitude, longitude, absoluteAltitude, relativeAltitude, windSpeed, heading) live directly on TelemetryData, not duplicated per source type.

asset and subAsset describe the source/context of the reading — which entity it is about — not a device category. An Asset is the registered top-level entity (a drone, dock, ground vehicle, sensor gateway, camera or station); a SubAsset is an optional child entity belonging to an Asset. Set .asset(...) when the reading describes the Asset itself, including when that Asset is the drone, and .subAsset(...) when it describes a child SubAsset. A drone registered directly as an Asset therefore correctly reports sourceType = ASSET with subAsset left null. See Assets & Sub-Assets for worked examples of both configurations.

Package: com.zqnt.utils.edge.sdk.domains

FieldTypeDescription
idStringTelemetry identifier (required)
timestampInstantMeasurement time, UTC (required)
snStringDevice serial number (required)
latitudeDoubleGPS latitude
longitudeDoubleGPS longitude
absoluteAltitudeFloatAltitude above sea level (m)
relativeAltitudeFloatAltitude above ground (m)
windSpeedFloatWind speed (m/s)
headingFloatHeading (degrees)
assetAssetDetailsSet when the reading describes the registered top-level Asset itself (a standalone drone, a dock, a vehicle, a sensor gateway, ...)
subAssetSubAssetDetailsSet when the reading describes a child SubAsset belonging to an Asset (e.g. a drone docked in a station)

validate() throws IllegalArgumentException if id/timestamp/sn are missing, or if asset/subAsset aren't set to exactly one.

TelemetryData telemetry = TelemetryData.builder()
    .id(UUID.randomUUID().toString())
    .timestamp(Instant.now())
    .sn("DOCK-1")          // or a standalone drone's own SN, e.g. "SIM-DRONE-001"
    .latitude(47.3769)
    .longitude(8.5417)
    .absoluteAltitude(450.0f)
    .asset(assetDetails)   // or .subAsset(subAssetDetails) — exactly one
    .build();

AssetDetails

Telemetry describing the registered top-level Asset itself. Nested under TelemetryData.asset.

This is a superset covering every kind of Asset, so not every field applies to every device. A dock populates the enclosure and climate fields (coverState, airConditioner, insideTemp, workingVoltage); a standalone drone registered as an Asset leaves those null and populates only what it physically has. Leaving inapplicable fields null is correct behaviour, not incomplete telemetry.

FieldTypeDescription
environmentTempFloatAmbient temperature (C)
insideTempFloatInternal temperature (C)
humidityFloatHumidity (%)
modeAssetModeOperational mode
rainfallRainfallEnumRainfall condition
subAssetInformationSubAssetInformationPaired sub-asset info
subAssetAtHomeBooleanSub-asset at dock
subAssetChargingBooleanSub-asset charging
subAssetPercentageFloatSub-asset battery (%)
debugModeOpenBooleanDebug mode active
hasActiveManualControlSessionBooleanManual control active
coverStateAssetCoverStateEnumCover state
workingVoltageIntegerWorking voltage (mV)
workingCurrentIntegerWorking current (mA)
supplyVoltageIntegerSupply voltage (mV)
positionValidBooleanGPS position valid
networkInformationNetworkInformationNetwork info
airConditionerAirConditionerAC state
manualControlStateManualControlStateEnumDRC state
positionStatePositionStateGNSS fix quality
wirelessLinkWirelessLinkInformationCellular/SDR link diagnostics
sdrStateSdrStateSDR link diagnostics

SubAssetDetails

Telemetry specific to a sub-asset (drone, vehicle). Nested under TelemetryData.subAsset.

FieldTypeDescription
horizontalSpeedFloatHorizontal speed (m/s)
verticalSpeedFloatVertical speed (m/s)
windDirectionStringWind direction
gearIntegerLanding gear state
payloadTelemetryPayloadTelemetryPrimary payload/camera data
batteryInformationBatteryInformationBattery data
heightLimitIntegerMax height limit (m)
homeDistanceFloatDistance to home (m)
totalMovementDistanceDoubleTotal distance traveled (m)
totalMovementTimeDoubleTotal flight time (s)
modeSubAssetModeFlight mode
countryStringCountry code
componentTelemetryList<ComponentTelemetryData>Per-component telemetry (multiple payloads/sensors)

Nested types

SubAssetInformation:

FieldTypeDescription
snStringSub-asset serial number
modelStringSub-asset model name
pairedBooleanWhether paired
onlineBooleanWhether online

NetworkInformation:

FieldTypeDescription
typeNetworkTypeEnumNetwork type (4G, 5G, etc.)
rateFloatData rate
qualityNetworkStateQualityEnumSignal quality

AirConditioner:

FieldTypeDescription
stateAssetAirConditionerStateEnumAC state
switchTimeIntegerTime until state switch

BatteryInformation:

FieldTypeDescription
percentageStringBattery percentage
remainingTimeIntegerRemaining time (seconds)
returnToHomePowerStringPower needed for RTH

PayloadTelemetry:

FieldTypeDescription
idStringPayload identifier
timestampInstantMeasurement time (UTC)
nameStringPayload name
cameraDataCameraDataCamera state
rangeFinderDataRangeFinderDataRangefinder data
sensorDataSensorDataSensor readings

ComponentTelemetryData (one entry per physical component/payload on a sub-asset):

FieldTypeDescription
componentIdStringComponent identifier
externalIdStringVendor-assigned identifier
kindStringComponent kind (e.g. "camera")
timestampInstantMeasurement time (UTC)
cameraDataCameraDataCamera state
rangeFinderDataRangeFinderDataRangefinder data
sensorDataSensorDataSensor readings
attributesMap<String, Object>Free-form additional attributes

CameraData:

FieldTypeDescription
currentLensStringActive lens
gimbalPitchFloatGimbal pitch (degrees)
gimbalYawFloatGimbal yaw (degrees)
gimbalRollFloatGimbal roll (degrees)
zoomFactorFloatCurrent zoom level

RangeFinderData:

FieldTypeDescription
targetLatitudeDoubleTarget latitude
targetLongitudeDoubleTarget longitude
targetDistanceFloatDistance to target (m)
targetAltitudeFloatTarget altitude (m)

SensorData:

FieldTypeDescription
targetTemperatureFloatMeasured temperature (C)

PositionState:

FieldTypeDescription
gpsNumberIntegerNumber of GPS satellites in view
rtkNumberIntegerNumber of RTK satellites in view
qualityIntegerFix quality indicator

WirelessLinkInformation and SdrState carry low-level 4G/SDR link diagnostics (frequency band, quality, link state) — populate them only if your device actually reports this level of detail; both are optional.


Configuration Models

EdgeClientConfig

The adapter's identity, a plain builder class (@Data @Builder) filled from your configuration — see the Configuration guide.

Package: com.zqnt.sdk.edge.config

FieldTypeDefaultDescription
endpointString—The address this adapter is reachable at
snString—Device serial number
timeoutDuration30sCommand timeout
maxRetriesint3Max retry attempts
assetTypeAssetTypeEnum—Asset type
assetVendorAssetVendor—Asset vendor
assetIdString—Platform asset ID

EdgeClient holds it: edgeClient.getSn(), edgeClient.getConfig().getTimeout().

Was this page helpful?