<?xml version="1.0" encoding="UTF-8"?>
<!--
FILE INFORMATION

OMA Permanent Document
   File: TBD
   Path:

OMNA LwM2M Registry
   File: 3605.xml
   Path: https://github.com/OpenMobileAlliance/lwm2m-registry

NORMATIVE INFORMATION

  Information about this file can be found in the latest revision of

  TBD

  This is available at http://www.openmobilealliance.org/

  Send comments to https://github.com/OpenMobileAlliance/OMA_LwM2M_for_Developers/issues

CHANGE HISTORY

See TBD

LEGAL DISCLAIMER

Copyright 2026, Contributors to the Grid Edge Interoperability &
Security Alliance (GEISA), a Series of LF Projects, LLC

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:

1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.



-->
<LWM2M xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.openmobilealliance.org/tech/profiles/LWM2M-v1_1.xsd">
  <Object ObjectType="MODefinition">
    <Name>PlatformMonitoring</Name>
    <Description1><![CDATA[
This LwM2M Object provides aggregate platform-scoped monitoring state for GEISA-capable platform functions, services, queues, APIs, and operational paths.

Resource identifiers are intentionally grouped with gaps between logical sections to allow future GEISA-defined resources to be added near related platform identity, platform monitoring state, related component, monitoring-window, upstream communication, queue, API, and event telemetry, and execute-action resources without renumbering existing resources. Undefined resource identifiers in those gaps are not implemented resources.

The single Object Instance represents the platform's aggregate monitoring view. Values may be produced from bounded read-time checks, recently cached local checks, platform status snapshots, or retained platform telemetry. This Object is intended for authoritative aggregate platform monitoring together with upstream communication, queue, API, and event telemetry.

This Object does not require continuous telemetry collection. It does not imply a daemon, service, process, or engine architecture. Optional resources may be unavailable when the platform does not implement, expose, or retain the corresponding function, counter, timestamp, or aggregate platform state.
]]></Description1>
    <ObjectID>3605</ObjectID>
    <ObjectURN>urn:oma:lwm2m:ext:3605</ObjectURN>
    <LWM2MVersion>1.1</LWM2MVersion>
    <ObjectVersion>1.0</ObjectVersion>
    <MultipleInstances>Single</MultipleInstances>
    <Mandatory>Optional</Mandatory>
    <Resources>
      <Item ID="1">
        <Name>Platform Name</Name>
        <Operations>R</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Optional</Mandatory>
        <Type>String</Type>
        <RangeEnumeration/>
        <Units/>
        <Description><![CDATA[
Human-readable platform name assigned by the platform. This value is intended for display, diagnostics, and log correlation.
]]></Description>
      </Item>
      <Item ID="2">
        <Name>Platform Instance ID</Name>
        <Operations>R</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Optional</Mandatory>
        <Type>String</Type>
        <RangeEnumeration/>
        <Units/>
        <Description><![CDATA[
Platform-local identifier for the aggregate platform instance represented by this Object Instance. This value is intended for correlation with logs, events, and platform diagnostics.
]]></Description>
      </Item>
      <Item ID="3">
        <Name>Platform Version</Name>
        <Operations>R</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Optional</Mandatory>
        <Type>String</Type>
        <RangeEnumeration/>
        <Units/>
        <Description><![CDATA[
Version of the Platform, when available from runtime metadata, service metadata, manifest or package metadata, or platform-generated records.
]]></Description>
      </Item>
      <Item ID="4">
        <Name>Platform Monitoring State</Name>
        <Operations>R</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Mandatory</Mandatory>
        <Type>Integer</Type>
        <RangeEnumeration>0..255</RangeEnumeration>
        <Units/>
        <Description><![CDATA[
Current aggregate platform monitoring state:
0 = Unknown
1 = Healthy
2 = Degraded
3 = Failed
4 = Disabled
5 = Not reporting
6 = Starting
7 = Stopping
8 = Stopped
9 = Blocked by policy
10..127 = Reserved for future GEISA-defined platform monitoring states
128..255 = Reserved for vendor-specific or operator-specific platform monitoring states
]]></Description>
      </Item>
      <Item ID="5">
        <Name>Monitoring Reason Code</Name>
        <Operations>R</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Mandatory</Mandatory>
        <Type>Integer</Type>
        <RangeEnumeration>0..255</RangeEnumeration>
        <Units/>
        <Description><![CDATA[
Primary cause or contributing condition associated with the current Platform Monitoring State:
0 = Unspecified
1 = None
2 = Other
3 = Component degraded
4 = Component failed
5 = Administratively disabled
6 = Blocked by policy
7 = Not reporting
8 = Dependency unavailable
9 = Temporarily unavailable
10 = Startup in progress
11 = Shutdown in progress
12 = Restart limit exceeded
13 = Monitoring data stale
14 = Upstream communication unavailable
15 = Registration failed
16 = Registration expired
17 = Queue backlog
18 = Queue capacity exhausted
19 = Resource pressure
20 = Insufficient memory
21 = Insufficient storage
22 = Rate limited
23 = Authorization denied
24 = Security restriction
25 = Internal error
26 = Timeout
27..127 = Reserved for future GEISA-defined monitoring reason codes
128..255 = Reserved for vendor-specific or operator-specific monitoring reason codes

None applies when no abnormal reason applies. Unspecified means no standardized reason was supplied. Other requires Reason Detail. Implementations SHOULD select the most specific applicable cause. Implementations SHOULD NOT use a reason code that merely repeats the current Monitoring State when a more specific cause is known.
]]></Description>
      </Item>
      <Item ID="6">
        <Name>Last Monitoring State Transition Time</Name>
        <Operations>R</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Mandatory</Mandatory>
        <Type>Time</Type>
        <RangeEnumeration/>
        <Units/>
        <Description><![CDATA[
Time at which the Platform Monitoring State most recently changed. The value is encoded as LwM2M Time using Unix epoch seconds. The encoded value does not carry timezone metadata. Platform-local interpretation uses /3/0/15 Timezone, with fallback to /3/0/14 UTC Offset when Timezone is unavailable, unless a more specific ADM or EMS policy applies.
]]></Description>
      </Item>
      <Item ID="7">
        <Name>Platform Start Time</Name>
        <Operations>R</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Mandatory</Mandatory>
        <Type>Time</Type>
        <RangeEnumeration/>
        <Units/>
        <Description><![CDATA[
Time at which the current or most recent execution of the platform started, when available from the platform. The value is encoded as LwM2M Time using Unix epoch seconds. The encoded value does not carry timezone metadata. Platform-local interpretation uses /3/0/15 Timezone, with fallback to /3/0/14 UTC Offset when Timezone is unavailable, unless a more specific ADM or EMS policy applies.
]]></Description>
      </Item>
      <Item ID="8">
        <Name>Related Component</Name>
        <Operations>R</Operations>
        <MultipleInstances>Multiple</MultipleInstances>
        <Mandatory>Optional</Mandatory>
        <Type>Objlnk</Type>
        <RangeEnumeration/>
        <Units/>
        <Description><![CDATA[
Each Resource Instance links to one Platform Component Monitoring Object Instance whose current condition materially contributes to, or provides useful detail for, the aggregate Platform Monitoring State.

Zero, one, or multiple links may be present. Ordering has no meaning and duplicate links should not be reported. Links should be removed when the component is no longer relevant to the current aggregate state.

This Resource may be omitted when the condition is not attributable to a specific component, the component cannot be identified, or Object 3608 is not implemented. Absence does not mean no component contributed. Platform Monitoring State and Monitoring Reason Code remain authoritative.
]]></Description>
      </Item>
      <Item ID="9">
        <Name>Reason Detail</Name>
        <Operations>R</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Optional</Mandatory>
        <Type>String</Type>
        <RangeEnumeration/>
        <Units/>
        <Description><![CDATA[
Short human-readable diagnostic detail associated with Monitoring Reason Code. Consumers SHALL NOT parse or depend on it for interoperable behavior. This Resource SHALL be present when Monitoring Reason Code is Other and MAY be present for any other reason when useful. It is not a log field and does not replace a defined reason code.
]]></Description>
      </Item>
      <Item ID="10">
        <Name>Restart Count Current Period</Name>
        <Operations>R</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Optional</Mandatory>
        <Type>Unsigned Integer</Type>
        <RangeEnumeration/>
        <Units>count</Units>
        <Description><![CDATA[
Number of platform-level restarts during the current monitoring period. This value is not defined as the sum of logical component restarts.
]]></Description>
      </Item>
      <Item ID="11">
        <Name>Monitoring Window</Name>
        <Operations>RW</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Mandatory</Mandatory>
        <Type>Unsigned Integer</Type>
        <RangeEnumeration/>
        <Units>s</Units>
        <Description><![CDATA[
Monitoring window in seconds used for current-period counters and derived health evaluation for the aggregate platform.
]]></Description>
      </Item>
      <Item ID="12">
        <Name>Monitoring Period Start Time</Name>
        <Operations>R</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Mandatory</Mandatory>
        <Type>Time</Type>
        <RangeEnumeration/>
        <Units/>
        <Description><![CDATA[
Start time for the active monitoring period used by current-period counters and derived health state. The value is encoded as LwM2M Time using Unix epoch seconds. The encoded value does not carry timezone metadata. Platform-local interpretation uses /3/0/15 Timezone, with fallback to /3/0/14 UTC Offset when Timezone is unavailable, unless a more specific ADM or EMS policy applies.
]]></Description>
      </Item>
      <Item ID="13">
        <Name>Last Update Timestamp</Name>
        <Operations>R</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Mandatory</Mandatory>
        <Type>Time</Type>
        <RangeEnumeration/>
        <Units/>
        <Description><![CDATA[
Time at which the platform most recently refreshed, generated, or updated the monitoring snapshot represented by this object instance. The value is encoded as LwM2M Time using Unix epoch seconds. The encoded value does not carry timezone metadata. Platform-local interpretation uses /3/0/15 Timezone, with fallback to /3/0/14 UTC Offset when Timezone is unavailable, unless a more specific ADM or EMS policy applies.
]]></Description>
      </Item>
      <Item ID="30">
        <Name>Upstream Communication State</Name>
        <Operations>R</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Optional</Mandatory>
        <Type>Integer</Type>
        <RangeEnumeration>0..255</RangeEnumeration>
        <Units/>
        <Description><![CDATA[
Current upstream communication state for Platform reporting:
0 = Unknown
1 = Disabled
2 = Enabled down
3 = Enabled up
4 = Degraded
5 = Backlogged
6 = Blocked by policy
7..127 = Reserved for future GEISA-defined upstream communication states
128..255 = Reserved for vendor-specific or operator-specific upstream communication states
]]></Description>
      </Item>
      <Item ID="31">
        <Name>Last Upstream Success Time</Name>
        <Operations>R</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Optional</Mandatory>
        <Type>Time</Type>
        <RangeEnumeration/>
        <Units/>
        <Description><![CDATA[
Timestamp of the most recent successful upstream send, handoff, delivery, or communication observed or retained by the platform for the aggregate platform scope, when available. The value is encoded as LwM2M Time using Unix epoch seconds. The encoded value does not carry timezone metadata. Platform-local interpretation uses /3/0/15 Timezone, with fallback to /3/0/14 UTC Offset when Timezone is unavailable, unless a more specific ADM or EMS policy applies.
]]></Description>
      </Item>
      <Item ID="32">
        <Name>Last Upstream Error Time</Name>
        <Operations>R</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Optional</Mandatory>
        <Type>Time</Type>
        <RangeEnumeration/>
        <Units/>
        <Description><![CDATA[
Timestamp of the most recent upstream send, handoff, delivery, or communication error observed or retained by the platform for the aggregate platform scope, when available. The value is encoded as LwM2M Time using Unix epoch seconds. The encoded value does not carry timezone metadata. Platform-local interpretation uses /3/0/15 Timezone, with fallback to /3/0/14 UTC Offset when Timezone is unavailable, unless a more specific ADM or EMS policy applies.
]]></Description>
      </Item>
      <Item ID="33">
        <Name>Upstream Error Count Current Period</Name>
        <Operations>R</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Optional</Mandatory>
        <Type>Unsigned Integer</Type>
        <RangeEnumeration/>
        <Units>count</Units>
        <Description><![CDATA[
Count of upstream send, handoff, delivery, or communication errors observed or retained by the platform during the current monitoring period.
]]></Description>
      </Item>
      <Item ID="34">
        <Name>Active Observe Count</Name>
        <Operations>R</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Optional</Mandatory>
        <Type>Unsigned Integer</Type>
        <RangeEnumeration/>
        <Units>count</Units>
        <Description><![CDATA[
Count of active observe relationships for the aggregate platform where such telemetry is available.
]]></Description>
      </Item>
      <Item ID="35">
        <Name>Failed Notify Count Current Period</Name>
        <Operations>R</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Optional</Mandatory>
        <Type>Unsigned Integer</Type>
        <RangeEnumeration/>
        <Units>count</Units>
        <Description><![CDATA[
Count of failed Notify deliveries during the current monitoring period where such telemetry is available.
]]></Description>
      </Item>
      <Item ID="36">
        <Name>Suppressed Event Count Current Period</Name>
        <Operations>R</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Optional</Mandatory>
        <Type>Unsigned Integer</Type>
        <RangeEnumeration/>
        <Units>count</Units>
        <Description><![CDATA[
Count of events suppressed by policy, throttling, coalescing, backpressure, or other platform behavior during the current monitoring period where such telemetry is available.
]]></Description>
      </Item>
      <Item ID="37">
        <Name>Dropped Event Count Current Period</Name>
        <Operations>R</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Optional</Mandatory>
        <Type>Unsigned Integer</Type>
        <RangeEnumeration/>
        <Units>count</Units>
        <Description><![CDATA[
Count of events dropped due to queueing, transport, resource, policy, or delivery failure during the current monitoring period where such telemetry is available.
]]></Description>
      </Item>
      <Item ID="41">
        <Name>Pending Upstream Messages</Name>
        <Operations>R</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Optional</Mandatory>
        <Type>Unsigned Integer</Type>
        <RangeEnumeration/>
        <Units>count</Units>
        <Description><![CDATA[
Number of pending upstream Platform messages currently queued or spooled for delivery.
]]></Description>
      </Item>
      <Item ID="42">
        <Name>Pending Upstream Bytes</Name>
        <Operations>R</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Optional</Mandatory>
        <Type>Unsigned Integer</Type>
        <RangeEnumeration/>
        <Units>B</Units>
        <Description><![CDATA[
Total bytes currently queued or spooled for upstream Platform delivery.
]]></Description>
      </Item>
      <Item ID="43">
        <Name>Oldest Pending Message Time</Name>
        <Operations>R</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Optional</Mandatory>
        <Type>Time</Type>
        <RangeEnumeration/>
        <Units/>
        <Description><![CDATA[
Timestamp of the oldest pending upstream or platform message in the monitored queue or path when one exists. The value is encoded as LwM2M Time using Unix epoch seconds. The encoded value does not carry timezone metadata. Platform-local interpretation uses /3/0/15 Timezone, with fallback to /3/0/14 UTC Offset when Timezone is unavailable, unless a more specific ADM or EMS policy applies.
]]></Description>
      </Item>
      <Item ID="44">
        <Name>Dropped Upstream Messages Current Period</Name>
        <Operations>R</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Optional</Mandatory>
        <Type>Unsigned Integer</Type>
        <RangeEnumeration/>
        <Units>count</Units>
        <Description><![CDATA[
Number of upstream Platform messages dropped during the current monitoring period.
]]></Description>
      </Item>
      <Item ID="45">
        <Name>Expired Upstream Messages Current Period</Name>
        <Operations>R</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Optional</Mandatory>
        <Type>Unsigned Integer</Type>
        <RangeEnumeration/>
        <Units>count</Units>
        <Description><![CDATA[
Number of queued or spooled upstream Platform messages that expired before successful delivery during the current monitoring period.
]]></Description>
      </Item>
      <Item ID="51">
        <Name>API Request Count Current Period</Name>
        <Operations>R</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Optional</Mandatory>
        <Type>Unsigned Integer</Type>
        <RangeEnumeration/>
        <Units>count</Units>
        <Description><![CDATA[
Count of API requests observed or retained across the aggregate platform during the current monitoring period. Generic event-log activity does not by itself satisfy this resource unless it is also counted as an API request within the aggregate platform monitoring scope.
]]></Description>
      </Item>
      <Item ID="52">
        <Name>API Error Count Current Period</Name>
        <Operations>R</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Optional</Mandatory>
        <Type>Unsigned Integer</Type>
        <RangeEnumeration/>
        <Units>count</Units>
        <Description><![CDATA[
Count of API errors observed or retained across the aggregate platform during the current monitoring period.
]]></Description>
      </Item>
      <Item ID="53">
        <Name>Unauthorized API Attempt Count Current Period</Name>
        <Operations>R</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Optional</Mandatory>
        <Type>Unsigned Integer</Type>
        <RangeEnumeration/>
        <Units>count</Units>
        <Description><![CDATA[
Count of unauthorized API requests observed or retained across the aggregate platform during the current monitoring period.
]]></Description>
      </Item>
      <Item ID="63">
        <Name>Last Durable Event Time</Name>
        <Operations>R</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Optional</Mandatory>
        <Type>Time</Type>
        <RangeEnumeration/>
        <Units/>
        <Description><![CDATA[
Time at which a durable event or log record was most recently written within the aggregate platform scope. The value is encoded as LwM2M Time using Unix epoch seconds. The encoded value does not carry timezone metadata. Platform-local interpretation uses /3/0/15 Timezone, with fallback to /3/0/14 UTC Offset when Timezone is unavailable, unless a more specific ADM or EMS policy applies.
]]></Description>
      </Item>
      <Item ID="70">
        <Name>Request Status Refresh</Name>
        <Operations>E</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Optional</Mandatory>
        <Type/>
        <RangeEnumeration/>
        <Units/>
        <Description><![CDATA[
Request that the platform refresh the current aggregate platform status and update this Object Instance. Platforms may deny this operation or leave it unsupported according to operator policy, authorization, connectivity state, device state, safety considerations, or implementation profile.
]]></Description>
      </Item>
      <Item ID="71">
        <Name>Reset Monitoring Counters</Name>
        <Operations>E</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Optional</Mandatory>
        <Type/>
        <RangeEnumeration/>
        <Units/>
        <Description><![CDATA[
Reset current-period monitoring counters for this Object Instance and start a new monitoring period. Platforms may deny this operation or leave it unsupported according to operator policy, authorization, connectivity state, device state, safety considerations, or implementation profile.
]]></Description>
      </Item>
      <Item ID="72">
        <Name>Flush Upstream Queue</Name>
        <Operations>E</Operations>
        <MultipleInstances>Single</MultipleInstances>
        <Mandatory>Optional</Mandatory>
        <Type/>
        <RangeEnumeration/>
        <Units/>
        <Description><![CDATA[
Request immediate delivery of queued or spooled upstream messages associated with the aggregate platform. Platforms may deny this operation or leave it unsupported according to operator policy, authorization, connectivity state, device state, safety considerations, or implementation profile.
]]></Description>
      </Item>
    </Resources>
    <Description2><![CDATA[

]]></Description2>
  </Object>
</LWM2M>
