openapi: 3.2.0
info:
title: Live Objects REST API Guide Device Analytics API
description: API description for Live Objects service
contact:
name: Live Objects Support
url: https://liveobjects.orange-business.com/#/cms/support
version: 2026.7.0
servers:
- url: https://liveobjects.orange-business.com
security:
- X-API-KEY: []
OAuth2.0: []
tags:
- name: Device Analytics
description: Manage your device analytics rules
paths:
/api/v1/device-analytics/rules/{analyticsRuleId}:
get:
tags:
- Device Analytics
summary: Retrieve an AnalyticsRule.
description: 'An AnalyticsRule defines a fleet of devices whose behavior will be analyzed by algorithms, generating a weekly report. This report includes general fleet behavior, detection of outliers, connectivity status...
Restricted to API keys with at least one of the following roles: DATA_PROCESSING_R.'
operationId: getAnalyticsRule
parameters:
- name: analyticsRuleId
in: path
description: id of the AnalyticsRule to retrieve
required: true
schema:
type: string
responses:
'200':
description: AnalyticsRule successfully retrieved
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsRule'
'404':
description: Unknown AnalyticsRule
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsRule'
put:
tags:
- Device Analytics
summary: Update an AnalyticsRule.
description: 'The field `id` must be provided and match the API path id.
Usage of this API will be reported in your access log under ''device_analytics'' category.
Restricted to API keys with at least one of the following roles: DATA_PROCESSING_W.'
operationId: updateAnalyticsRule
parameters:
- name: analyticsRuleId
in: path
description: id of the AnalyticsRule to retrieve
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsRule'
examples:
Rule for a LoRa fleet with a filter on group:
description: Rule for a LoRa fleet with a filter on group
value:
id: '1234567890'
name: Lora Fleet analytics
fleet:
connectors:
- lora
groupPaths:
- path: /france
includeSubPath: true
report:
recipients:
to:
- jane.doe@mycompany.com
cc:
- john.doe@mycompany.com
language: fr
enabled: true
required: true
responses:
'200':
description: AnalyticsRule successfully updated
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsRule'
'404':
description: Unknown AnalyticsRule
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsRule'
delete:
tags:
- Device Analytics
summary: Delete an AnalyticsRule.
description: 'Usage of this API will be reported in your access log under ''device_analytics'' category.
Restricted to API keys with at least one of the following roles: DATA_PROCESSING_W.'
operationId: deleteAnalyticsRule
parameters:
- name: analyticsRuleId
in: path
description: id of the AnalyticsRule to delete
required: true
schema:
type: string
responses:
'204':
description: AnalyticsRule successfully deleted
'404':
description: Unknown AnalyticsRule
/api/v1/device-analytics/rules:
get:
tags:
- Device Analytics
summary: Retrieve your AnalyticsRules.
description: 'An AnalyticsRule defines a fleet of devices whose behavior will be analyzed by algorithms, generating a weekly report. This report includes general fleet behavior, detection of outliers, connectivity status...
Restricted to API keys with at least one of the following roles: DATA_PROCESSING_R.'
operationId: listAnalyticsRules
responses:
'200':
description: list of AnalyticsRules
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/AnalyticsRule'
post:
tags:
- Device Analytics
summary: Create an AnalyticsRule.
description: 'An AnalyticsRule defines a fleet of devices whose behavior will be analyzed by algorithms, generating a weekly report. This report includes general fleet behavior, detection of outliers, connectivity status... The field `id` must be null, it will be automatically generated
Usage of this API will be reported in your access log under ''device_analytics'' category.
Restricted to API keys with at least one of the following roles: DATA_PROCESSING_W.'
operationId: createAnalyticsRule
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsRule'
examples:
Rule for a LoRa fleet:
description: Rule for a LoRa fleet
value:
name: Lora Fleet analytics
fleet:
connectors:
- lora
report:
recipients:
to:
- jane.doe@mycompany.com
cc:
- john.doe@mycompany.com
language: en
enabled: true
required: true
responses:
'201':
description: AnalyticsRule successfully created
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsRule'
/api/v1/device-analytics/rules/{ruleId}/device-analyses/statistics/days/{day}:
get:
tags:
- Device Analytics
summary: Retrieve the DeviceAnalysisStats for an AnalyticsRule and day BETA - please note that the API is currently in beta state, and therefore still subject to breaking changes.
description: 'Return the list of the fleet''s devices statistical analysis, with their communication rate, the status and quality of their connectivity...
Restricted to API keys with at least one of the following roles: DATA_PROCESSING_R.'
operationId: getDevicesAnalysisStats
parameters:
- name: ruleId
in: path
description: id of the AnalyticsRule
required: true
schema:
type: string
- name: day
in: path
description: day with 'YYYY-MM-DD' format
required: true
schema:
type: string
- name: bookmarkId
in: query
description: deviceId as page bookmark (deviceId of last page of results)
required: false
schema:
type: string
- name: limit
in: query
description: page size, value is limited to :1000
required: false
schema:
type: string
default: '1000'
responses:
'200':
description: array of DeviceAnalysisStats matching the request.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DeviceAnalysisStats'
/api/v1/device-analytics/rules/{ruleId}/device-analyses/statistics/days/{day}/devices/{deviceId}:
get:
tags:
- Device Analytics
summary: Retrieve the DeviceAnalysisStats for a specific AnalyticsRule, day and deviceId BETA - please note that the API is currently in beta state, and therefore still subject to breaking changes.
description: 'This daily device statistical analysis includes details regarding its communication rate, the quality of its connectivity...
Restricted to API keys with at least one of the following roles: DATA_PROCESSING_R.'
operationId: getDeviceAnalysisStats
parameters:
- name: ruleId
in: path
description: id of the AnalyticsRule
required: true
schema:
type: string
- name: day
in: path
description: day with 'YYYY-MM-DD' format
required: true
schema:
type: string
- name: deviceId
in: path
description: deviceId
required: true
schema:
type: string
responses:
'200':
description: DeviceAnalysisStats matching the request
content:
application/json:
schema:
$ref: '#/components/schemas/DeviceAnalysisStats'
/api/v1/device-analytics/rules/{ruleId}/device-analyses/flattened:
get:
tags:
- Device Analytics
summary: Retrieve the latest flattened human readable DeviceAnalysisResult for an AnalyticsRule BETA - please note that the API is currently in beta state, and therefore still subject to breaking changes.
description: 'Restricted to API keys with at least one of the following roles: DATA_PROCESSING_R.'
operationId: getFlattenedDevicesAnalysisResult
parameters:
- name: ruleId
in: path
description: id of the AnalyticsRule
required: true
schema:
type: string
- name: bookmarkId
in: query
description: deviceId as page bookmark (deviceId of last page of results)
required: false
schema:
type: string
- name: limit
in: query
description: page size, value is limited to :1000
required: false
schema:
type: string
default: '1000'
responses:
'200':
description: array of FlattenedDeviceAnalysisResult matching the request
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/FlattenedDeviceAnalysisResult'
/api/v1/device-analytics/rules/{ruleId}/device-analyses/classifications/regular-patterns/devices:
get:
tags:
- Device Analytics
summary: Retrieve the latest regular pattern classification for all devices of an AnalyticsRule BETA - please note that the API is currently in beta state, and therefore still subject to breaking changes.
description: 'Restricted to API keys with at least one of the following roles: DATA_PROCESSING_R.'
operationId: getDevicesRegularPatternClassification
parameters:
- name: ruleId
in: path
description: id of the AnalyticsRule
required: true
schema:
type: string
- name: bookmarkId
in: query
description: deviceId as page bookmark (deviceId of last page of results)
required: false
schema:
type: string
- name: limit
in: query
description: page size, value is limited to :1000
required: false
schema:
type: string
default: '1000'
responses:
'200':
description: array of DeviceAnalysisRegularPattern matching the request.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DeviceAnalysisRegularPattern'
/api/v1/device-analytics/rules/{ruleId}/device-analyses/classifications/regular-patterns/devices/{deviceId}:
get:
tags:
- Device Analytics
summary: Retrieve the latest regular pattern classification for a specific device BETA - please note that the API is currently in beta state, and therefore still subject to breaking changes.
description: 'Restricted to API keys with at least one of the following roles: DATA_PROCESSING_R.'
operationId: getDeviceRegularPatternClassification
parameters:
- name: ruleId
in: path
description: id of the AnalyticsRule
required: true
schema:
type: string
- name: deviceId
in: path
description: deviceId
required: true
schema:
type: string
responses:
'200':
description: DeviceAnalysisRegularPattern matching the request
content:
application/json:
schema:
$ref: '#/components/schemas/DeviceAnalysisRegularPattern'
/api/v1/device-analytics/rules/{ruleId}/device-analyses/classifications/clusters/devices:
get:
tags:
- Device Analytics
summary: Retrieve the latest cluster classification for all devices of an AnalyticsRule BETA - please note that the API is currently in beta state, and therefore still subject to breaking changes.
description: 'Restricted to API keys with at least one of the following roles: DATA_PROCESSING_R.'
operationId: getDevicesClusterClassification
parameters:
- name: ruleId
in: path
description: id of the AnalyticsRule
required: true
schema:
type: string
- name: bookmarkId
in: query
description: deviceId as page bookmark (deviceId of last page of results)
required: false
schema:
type: string
- name: limit
in: query
description: page size, value is limited to :1000
required: false
schema:
type: string
default: '1000'
responses:
'200':
description: array of DeviceAnalysisClusterClassification matching the request.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DeviceAnalysisClusterClassification'
/api/v1/device-analytics/rules/{ruleId}/device-analyses/classifications/clusters/devices/{deviceId}:
get:
tags:
- Device Analytics
summary: Retrieve the latest cluster classification for a specific device BETA - please note that the API is currently in beta state, and therefore still subject to breaking changes.
description: 'Restricted to API keys with at least one of the following roles: DATA_PROCESSING_R.'
operationId: getDeviceClusterClassification
parameters:
- name: ruleId
in: path
description: id of the AnalyticsRule
required: true
schema:
type: string
- name: deviceId
in: path
description: deviceId
required: true
schema:
type: string
responses:
'200':
description: DeviceAnalysisClusterClassification matching the request
content:
application/json:
schema:
$ref: '#/components/schemas/DeviceAnalysisClusterClassification'
components:
schemas:
AnalyticsRule:
type: object
description: defines the device analytics rule that will be performed
properties:
id:
type: string
description: id of the AnalyticsRule. Should be null when used for POST.
name:
type: string
description: user-defined name for the rule, must be unique and not empty.
fleet:
$ref: '#/components/schemas/Fleet'
description: defines the targeted devices of a this AnalyticsRule
report:
$ref: '#/components/schemas/ReportDefinition'
description: defines the analytics report to send by email
enabled:
type: boolean
description: activate or not the rule. Default is false.
required:
- fleet
- name
HistoryLoraStatistics:
type: object
properties:
messageCount:
type: integer
format: int64
description: Total number of LoRa messages received over the period.
snr:
$ref: '#/components/schemas/StatisticAggregation'
description: Mean 'Signal-to-Noise Ratio' over the period.
gatewayCount:
$ref: '#/components/schemas/StatisticAggregation'
description: Mean 'Gateway Count' over the period.
rssi:
$ref: '#/components/schemas/StatisticAggregation'
description: Mean 'Received Signal Strength Indication' over the period.
sf:
$ref: '#/components/schemas/StatisticAggregation'
description: Mean 'Spreading Factor' over the period.
joinRequestPerDay:
$ref: '#/components/schemas/StatisticAggregation'
description: Mean 'Join Request' messages per day over the period.
joinAcceptPerDay:
$ref: '#/components/schemas/StatisticAggregation'
description: Mean 'Join Accept' messages per day over the period.
lostMessagesPerDay:
$ref: '#/components/schemas/StatisticAggregation'
description: Mean lost messages per day over the period based on LoRaWan frame counter.
lostMessagesRatio:
type: number
format: double
description: Lost messages ratio over the period based on LoRaWan frame counter.
missingJoinAccept:
type: boolean
description: Unbalanced Join Request / Accept ratio over the period.
tooManyJoinCycles:
type: boolean
description: Too many Join cycles over the period.
DeviceAnalysisRegularPattern:
type: object
properties:
analyticsRuleId:
type: string
description: Id of the AnalyticsRule this classification belongs to.
deviceId:
type: string
description: Id of the device.
silent:
type: boolean
description: True if the device sent no messages during the analyzed period.
updated:
type: string
format: date-time
description: Last update timestamp of the classification.
analyzedPeriod:
$ref: '#/components/schemas/AnalyzedPeriod'
description: Period over which the classification was computed.
regularPattern:
$ref: '#/components/schemas/RegularPatternClassification'
description: Regular pattern classification for the device.
transition:
$ref: '#/components/schemas/ClassificationTransition'
description: Transition info in case of a pattern change during the last few weeks..
AnalyzedPeriod:
type: object
properties:
from:
type: string
description: Start date of the analysis period. yyyy-MM-dd format.
to:
type: string
description: End date of the analysis period. yyyy-MM-dd format.
HistoryTrafficStatistics:
type: object
properties:
messageCountPerDay:
$ref: '#/components/schemas/StatisticAggregation'
Fleet:
type: object
properties:
connectors:
type: array
description: list of connectivity that targeted devices must declare. 1 and only 1 connector must be defined.
items:
type: string
groupPaths:
type: array
description: list of targeted group paths
items:
$ref: '#/components/schemas/GroupPath'
required:
- connectors
Lwm2mStatistics:
type: object
properties:
historyStatistics:
$ref: '#/components/schemas/HistoryLwm2mStatistics'
description: Statistics aggregated over the analysis period.
DeviceAnalysisClusterClassification:
type: object
properties:
analyticsRuleId:
type: string
description: Id of the AnalyticsRule this classification belongs to.
deviceId:
type: string
description: Id of the device.
silent:
type: boolean
description: True if the device sent no messages during the analyzed period.
updated:
type: string
format: date-time
description: Last update timestamp of the classification.
analyzedPeriod:
$ref: '#/components/schemas/AnalyzedPeriod'
description: Period over which the classification was computed.
clusterClassification:
$ref: '#/components/schemas/ClusterClassification'
description: AI clustering analysis
transition:
$ref: '#/components/schemas/ClassificationTransition'
description: Transition info in case of a cluster change during the last few weeks..
DtlsStatistics:
type: object
properties:
packetCount:
type: integer
format: int64
description: Total number of DTLS packets received over the period.
lostPacketsPerDay:
$ref: '#/components/schemas/StatisticAggregation'
description: Average lost DTLS packets per day over the analysis period, based on DTLS sequence number.
lostPacketsRatio:
type: number
format: double
description: Ratio of DTLS packets lost over the analysis period, based on DTLS sequence number.
TrafficDayStatistics:
type: object
properties:
messageCount:
type: integer
format: int32
EmailRecipients:
type: object
properties:
to:
type: array
items:
type: string
cc:
type: array
items:
type: string
cci:
type: array
items:
type: string
HistoryLwm2mStatistics:
type: object
properties:
dtlsStatistics:
$ref: '#/components/schemas/DtlsStatistics'
description: Statistics on the DTLS protocol.
UndetectedCluster:
type: object
properties:
reason:
type: string
details:
type: string
UndetectedPattern:
type: object
properties:
reason:
type: string
details:
type: string
TrafficStatistics:
type: object
properties:
dayStatistics:
$ref: '#/components/schemas/TrafficDayStatistics'
historyStatistics:
$ref: '#/components/schemas/HistoryTrafficStatistics'
InterfacesStatus:
type: object
properties:
name:
type: string
status:
type: string
description: Status of the device connectivity for the day. For LoRa connectivity, it is the last connectivity state of the day. MQTT status will be 'ONLINE' if it has been ONLINE once during the day.
TrafficAnalysis:
type: object
properties:
statistics:
$ref: '#/components/schemas/TrafficStatistics'
description: Statistical aggregations of the device's traffic.
silent:
type: boolean
description: True if the device sent no messages during the analysis period.
Cluster:
type: object
properties:
reference:
type: integer
format: int32
description: Reference identifying the cluster
name:
type: string
description: Name of the cluster
likenessToCluster:
type: number
format: double
description: Similarity score indicating how close the device is to the cluster's centroid
ClusterClassification:
type: object
properties:
success:
type: boolean
description: True if the clustering was successful.
trainingRunId:
type: string
description: Model against which the device was analyzed
learningScore:
type: number
format: double
description: The score indicates how well the device's traffic was recognized by the model. It is in [0, 1] interval.
cluster:
$ref: '#/components/schemas/Cluster'
description: Cluster detected for the device.
undetected:
$ref: '#/components/schemas/UndetectedCluster'
description: Reason for not detecting for the device.
RegularPatternClassification:
type: object
properties:
success:
type: boolean
pattern:
$ref: '#/components/schemas/RegularPattern'
description: Regular pattern detected for the device.
score:
type: number
format: double
description: The score will indicate a level of confidence in the result. It is in [0, 1] interval.
undetected:
$ref: '#/components/schemas/UndetectedPattern'
description: Additional information for undetected patterns
LoraDayStatistics:
type: object
properties:
joinRequestCount:
type: integer
format: int32
description: Number of 'Join Request' messages received on the analysis day.
joinAcceptCount:
type: integer
format: int32
description: Number of 'Join Accept' messages received on the analysis day.
RegularPattern:
type: object
properties:
period:
type: string
description: Period of the pattern, use ISO-8601 period definition. E.g. 'PT12H' for a 12 hours period.
count:
type: integer
format: int32
description: Number of occurences per period.
ClassificationTransition:
type: object
properties:
description:
type: string
description: Human-readable description of the transition.
trend:
type: string
description: Trend direction of the transition.
detectionDate:
type: string
description: Date at which the transition was detected. yyyy-MM-dd format (UTC).
FlattenedDeviceAnalysisResult:
type: object
properties:
device:
type: string
analysis_status:
type: string
groupPath:
type: string
msg_per_day:
type: number
format: double
pattern:
type: string
pattern_analysis_end_date:
type: string
pattern_transition:
type: string
pattern_transition_trend:
type: string
pattern_transition_detection_date:
type: string
cluster:
type: string
cluster_analysis_end_date:
type: string
cluster_transition:
type: string
cluster_transition_trend:
type: string
cluster_transition_detection_date:
type: string
last_status:
type: string
detected_lost_msgs_per_day:
type: number
format: double
counter_loss_ratio:
type: number
format: double
join_request_per_day:
type: number
format: double
join_accept_per_day:
type: number
format: double
snr_mean:
type: number
format: double
gtw_mean:
type: number
format: double
rssi_mean:
type: number
format: double
sf_mean:
type: number
format: double
too_many_join_cycles:
type: boolean
missing_join_accept:
type: boolean
detected_lost_dtls_packet_per_day:
type: number
format: double
counter_dtls_loss_ratio:
type: number
format: double
statistics_analysis_end_date:
type: string
days_used_for_statistics_analysis:
type: integer
format: int32
GroupPath:
type: object
description: defines targeted group path
properties:
path:
type: string
description: path of the group
example: /europe/france
includeSubPath:
type: boolean
description: 'if true, all sub-paths will be targeted by this ActivityRule '
required:
- includeSubPath
- path
InterfacesAnalysis:
type: object
properties:
interfacesStatus:
type: array
items:
$ref: '#/components/schemas/InterfacesStatus'
lora:
$ref: '#/components/schemas/LoraStatistics'
lwm2m:
$ref: '#/components/schemas/Lwm2mStatistics'
DeviceAnalysisStats:
type: object
properties:
analyticsRuleId:
type: string
description: Id of the AnalyticsRule this analysis belongs to.
deviceId:
type: string
description: Id of the device.
day:
type: string
description: Day of the analysis. yyyy-MM-dd format.
analysisStatus:
type: string
description: Status of the analysis computation.
groupPath:
type: string
description: Group path of the device at the time of the analysis.
updated:
type: string
format: date-time
description: Last update timestamp of the analysis.
historyTimeWindowInDays:
type: integer
format: int32
description: The number of days the analysis is based on (e.g. to compute means)
trafficAnalysis:
$ref: '#/components/schemas/TrafficAnalysis'
description: Analysis of the device's data traffic.
interfacesAnalysis:
$ref: '#/components/schemas/InterfacesAnalysis'
description: Analysis of the device's connectivity behaviour.
StatisticAggregation:
type: object
properties:
mean:
type: number
format: double
ReportDefinition:
type: object
properties:
recipients:
$ref: '#/components/schemas/EmailRecipients'
description: email recipients to send the report to. At least one 'to' recipient is mandatory. No more than 10 recipients can be set.
language:
type: string
description: 'language of the report : ''fr'' or ''en''.'
required:
- language
- recipients
LoraStatistics:
type: object
properties:
dayStatistics:
$ref: '#/components/schemas/LoraDayStatistics'
description: Statistics related to the specific analysis day.
historyStatistics:
$ref: '#/components/schemas/HistoryLoraStatistics'
description: Statistics aggregated over the analysis period.
securitySchemes:
X-API-KEY:
type: apiKey
name: X-API-KEY
in: header
OAuth2.0:
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://liveobjects.orange-business.com/api/v1/oauth2/authorize
tokenUrl: https://liveobjects.orange-business.com/api/v1/oauth2/token
refreshUrl: https://liveobjects.orange-business.com/api/v1/oauth2/token
scopes:
API_KEY_R: Read parameters and status of an API key.
API_KEY_W: Create, modify, disable an API key.
BOOTSTRAP_R: Read parameters and status of the LwM2M Bootstrap configurations and entries.
BOOTSTRAP_W: Create ans modify LwM2M Bootstrap configurations and entries.
BUS_CONFIG_R: Read config parameters of a FIFO queue.
BUS_CONFIG_W: Create, modify a FIFO queue.
BUS_R: Read data on the Live Objects bus. Minimum permission for the API key of an application collecting data on Live Objects in MQTT(s).
BUS_W: Publish data on the Live Objects bus.
CAMPAIGN_R: Read parameters and status of a massive deployment campaign on your Device Fleet.
CAMPAIGN_W: Create, modify a campaign on your Device Fleet.
CONNECTOR_ACCESS: Role to set on a external connector API key to allow only MQTT external connector mode
DATA_PROCESSING_R: Read parameters and status of an event processing rule or a Data decoder.
DATA_PROCESSING_W: Create, modify, disable an event processing rule or a Data decoder.
DATA_R: Read the data collected by the Store Service or search into this data using the Search Service.
DATA_W: Insert a data record to the Store Service. Minimum permission required for the API key of a device pushing data to Live Objects in HTTPS.
DEVICE_ACCESS: Role to set on a Device API key to allow only MQTT Device mode
DEVICE_R: Read parameters and status of a Device management.
DEVICE_W: Create, modify, disable a Device management, send command, modify config, update resource of a Device.
LOGS_R: Read the logs collected by the Audit Log service. This right allows users to use the Audit Log service as debugging tool.
SETTINGS_R: Read the tenant account custom settings.
SETTINGS_W: Create, modify tenant account custom settings.
USER_R: Read parameters and status of a user.
USER_W: Create, modify, disable a user.
externalDocs:
description: Live Objects Developer Guide
url: https://liveobjects.orange-business.com/doc/html/lo_manual_v2.html
x-examples: ''