# Device Fleet

Controllers, devices, edge apps, networks, metrics, telemetry and JMF device binding.

## Operations

```graphql
# Device Fleet (device-fleet)
# Controllers, devices, edge apps, networks, metrics, telemetry and JMF device binding.
# Query
aggregateMetricPoints: MetricAggregatePointsResult!  # Aggregate metric data points into time buckets with configurable statistics
analyzeEdgeAppSource: JSON!  # Validate complete EdgeApp XML without saving; returns compiler catalog and original source ranges
compareMetrics: MetricComparisonResult!  # Compare multiple metrics side-by-side over the same time range and interval
compileSchemaXML: String!  # Compile standalone XML schema syntax into JSON Schema without persisting it; host restrictions apply when embedded
controllerConnectionStatus: BridgeConnectionStatus!  # Check whether a controller has an active bridge connection
controllerJMFConfig: ControllerJMFConfigState  # Read the bridge JMF endpoint configuration for this controller
controllerStatus: ControllerStatusSnapshot!  # Latest discovery and health snapshot, with platform receipt time and freshness
downsampleMetricPoints: MetricDownsampleResult!  # Downsample metric data points for efficient visualization
generateDefaultDataQuery: String  # Generate a default GraphQL data query for an event topic
getController: ControllerState  # Fetch a single controller by ID
getControllerPolicy: ControllerPolicyState  # Fetch a controller policy by its ID
getControllerPolicyByController: ControllerPolicyState  # Fetch a controller's policy by the controller ID (the natural key)
getDevice: DeviceState  # Fetch a single device by ID
getEdgeApp: EdgeAppState  # Fetch a edge app by ID
getEdgeAppEvent: EdgeAppEventState  # Fetch a edge app event by ID
getEdgeAppInstallation: EdgeAppInstallationState  # Fetch a edge app installation by ID
getEdgeAppSource: EdgeAppSourceView  # Read exact EdgeApp XML for authoring
getMagicQueryGraphQL: MagicQueryOperation!  # Resolves a Magic Query string to the real GraphQL operation and variables it runs, so consumers can graduate from the façade to raw GraphQL
getMagicQuerySchema: MagicQuerySchema!  # Returns the input JSON Schema and output introspection for a Magic Query noun, so consumers (especially LLMs) can learn its contract before calling magicQuery
getMetric: MetricState  # Fetch a single metric by ID
getMetricPoints: MetricPointsResult!  # Query time-series data points for a metric
getNetwork: NetworkState  # Fetch a single network by ID
helpChapter: HelpChapter  # Read a chapter of the current published manual edition
helpChapters: [HelpChapterInfo!]!  # List human-facing manual chapters from the running deployment
iacGuides: [IaCGuide!]!  # Every authoring guide, for a tool that syncs them to a folder
iacSchema: IaCSchemaDocument!  # The infrastructure-only view of this schema, for declarative tooling
iacSchemaDocument: IaCSchemaDocumentPayload!  # Fetch the JSON Schema document a SCHEMA-kind validator references, for declarative tooling
iacValidate: IaCValidationResult!  # Validate an infrastructure artifact
listControllerPolicies: ControllerPolicyConnection!  # List controller policies with pagination
listControllerTokens: ControllerTokenConnection!  # List controller tokens with pagination
listControllers: ControllerConnection!  # List controllers with pagination
listDataChangeEventTopics: [DataChangeEventGroup!]!  # List all valid data change event topics, grouped by resource
listDeviceTokens: DeviceTokenConnection!  # List device tokens with pagination
listDevices: DeviceConnection!  # List devices with pagination
listEdgeAppEvents: EdgeAppEventConnection!  # List edge app events with pagination
listEdgeAppInstallations: EdgeAppInstallationConnection!  # List edge app installations with pagination
listEdgeApps: EdgeAppConnection!  # List edge apps with pagination
listMagicQueries: [MagicQueryInfo!]!  # Lists every available Magic Query noun with a short description and its options — the discovery entry point
listMetrics: MetricConnection!  # List metrics with pagination
listNetworks: NetworkConnection!  # List networks with pagination
magicQuery: JSON!  # Executes a Magic Query string and returns the predefined query's JSON result
metricCorrelation: MetricCorrelationResult!  # Compute statistical correlation between two metrics over a time range
metricHeartbeat: MetricHeartbeatResult!  # Analyze uptime and downtime for a heartbeat-style metric
metricHistogram: MetricHistogramResult!  # Compute a value distribution histogram for a metric over a time range
metricPercentiles: MetricPercentilesResult!  # Compute percentile values (e
metricProjection: MetricProjectionResult!  # Compute a linear regression over historical data and project forward
metricStateDuration: MetricStateDurationResult!  # Analyze time spent in each discrete state for a status metric
ping: String!  # Health check endpoint
renderSchemaXML: String!  # Render JSON Schema as native XML without dropping unsupported keywords or changing a saved document
schemaAuthoringCatalog: JSON!  # Compiler-owned vocabulary for the standalone XML JSON Schema dialect, including native form annotations
searchHelp: HelpSearchResult!  # Search human-facing manuals using shared semantic and text retrieval
validateEdgeAppSource: ValidateEdgeAppSourceResult!  # Type-check edgeApp handler / library / onMessage Lua sources against the bridge's ambient API typedef without persisting anything
workCenterDeviceJMFDeviceID: String  # Read the JMF DeviceID set on a work center ↔ device binding
# Mutation
createController: UpsertControllerPayload!  # Create a new controller
createControllerPolicy: UpsertControllerPolicyPayload!  # Create a new controller policy
createControllerToken: CreateControllerTokenPayload!  # Create a new controller token
createDevice: UpsertDevicePayload!  # Create a new device
createDeviceToken: CreateDeviceTokenPayload!  # Create a new device token
createEdgeApp: UpsertEdgeAppPayload!  # Create a new DRAFT edge app row for `input
createEdgeAppInstallation: UpsertEdgeAppInstallationPayload!  # Create a edgeApp installation
createMetric: UpsertMetricPayload!  # Create a new metric
createNetwork: UpsertNetworkPayload!  # Create a new network
deleteController: DeletePayload!  # Delete a controller
deleteControllerJMFConfig: DeleteControllerJMFConfigPayload!  # Remove a controller's JMF configuration
deleteControllerPolicy: DeletePayload!  # Delete a controller's policy
deleteDevice: DeletePayload!  # Delete a device
deleteEdgeApp: DeletePayload!  # Delete a edge app row
deleteEdgeAppInstallation: DeletePayload!  # Delete a edgeApp installation
deleteMetric: DeletePayload!  # Delete a metric and all its data points
deleteNetwork: DeletePayload!  # Delete a network
deprecateEdgeApp: UpsertEdgeAppPayload!  # Mark a PUBLISHED row as DEPRECATED
discoverDeviceJMFDevices: DiscoverJMFDevicesPayload!  # Discover the devices known to a JMF controller (KnownDevices)
exportEdgeApp: ExportEdgeAppPayload!  # Export an edge app to YAML or JSON
generateJmfToken: JmfTokenPayload!  # Sets or replaces the JMF access token with a new random one, returned once in the result
importEdgeApp: UpsertEdgeAppPayload!  # Import an edge app from YAML or JSON, landing it as a DRAFT (replaces an existing DRAFT for the handle, or allocates the next version)
interrogateDeviceJMFCapabilities: InterrogateJMFCapabilitiesPayload!  # Interrogate the message services a JMF controller supports (KnownMessages)
invokeEdgeApp: InvokeEdgeAppPayload!  # Invoke a edgeApp's onMessage export by name on a specific controller (the edgeApp must be installed on it)
publishEdgeAppDraft: UpsertEdgeAppPayload!  # Freeze a DRAFT and flip it to PUBLISHED
publishEdgeAppSource: EdgeAppSourcePayload!  # Publish only the reviewed EdgeApp XML; repeated immutable source is a no-op
recordMetricPoints: RecordMetricPointsPayload!  # Record one or more data points for a metric
removeJmfToken: UpdateJmfSettingsPayload!  # Removes the JMF access token
revealJmfToken: JmfTokenPayload!  # Shows the JMF access token so an operator can set up a device
revokeControllerToken: DeletePayload!  # Revoke a controller token
revokeDeviceToken: DeletePayload!  # Revoke a device token
saveEdgeAppSource: EdgeAppSourcePayload!  # Create or update EdgeApp XML and return the authoring view
setControllerJMFConfig: SetControllerJMFConfigPayload!  # Configure the controller bridge JMF endpoint (generates basic-auth credentials when enabled)
setJmfToken: UpdateJmfSettingsPayload!  # Sets or replaces the JMF access token with one you supply, e
setWorkCenterDeviceJMFDeviceID: SetWorkCenterDeviceJMFDeviceIDPayload!  # Set the canonical JMF DeviceID on a work center ↔ device binding for inbound correlation
updateController: UpsertControllerPayload!  # Update a controller
updateControllerPolicy: UpsertControllerPolicyPayload!  # Update a controller policy
updateDevice: UpsertDevicePayload!  # Update a device
updateEdgeApp: UpsertEdgeAppPayload!  # Update an existing DRAFT edge app row
updateEdgeAppInstallation: UpsertEdgeAppInstallationPayload!  # Update a edgeApp installation
updateJmfSettings: UpdateJmfSettingsPayload!  # Turns the direct JMF endpoint on or off
updateMetric: UpsertMetricPayload!  # Update a metric
updateNetwork: UpsertNetworkPayload!  # Update a network
upgradeEdgeAppInstallation: UpsertEdgeAppInstallationPayload!  # Repoint an installation at a different version of the same edgeApp
upsertController: UpsertControllerPayload!  # Create or update a controller
upsertControllerPolicy: UpsertControllerPolicyPayload!  # Create or update the policy for a controller
upsertDevice: UpsertDevicePayload!  # Create or update a device
upsertEdgeApp: UpsertEdgeAppPayload!  # Create or update a DRAFT edge app row
upsertEdgeAppInstallation: UpsertEdgeAppInstallationPayload!  # Create or update a edgeApp installation
upsertEdgeAppSource: UpsertEdgeAppPayload!  # Compile, validate, and retain an EdgeApp XML document as a DRAFT
upsertMetric: UpsertMetricPayload!  # Create or update a metric
upsertNetwork: UpsertNetworkPayload!  # Create or update a network
# Subscription
dataChangeEvents: DataChangeEvent!  # Subscribe to real-time data change events
edgeAppLogStream: EdgeAppEventState!  # Stream new LOG-kind edgeApp events as they arrive for a single installation

# Call describe_operation(name) for arguments and input types.
```

## Exact schema

Download [complete SDL](/schemas/device-fleet.graphql) (208326 bytes). Use the SDL to validate operations; the digest omits argument signatures.

## Guides
