<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-rehfeld-apix-iot-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="APIX IoT">APIX IoT Device Profile: Discovery and Presence for Connected Device Services</title>
    <seriesInfo name="Internet-Draft" value="draft-rehfeld-apix-iot-02"/>
    <author initials="C." surname="Rehfeld" fullname="Carsten Rehfeld">
      <organization/>
      <address>
        <email>carsten@botstandards.org</email>
      </address>
    </author>
    <date year="2026" month="June" day="05"/>
    <abstract>
      <?line 40?>

<t>This document defines the APIX IoT Device Profile: an extension to the
APIX Core Infrastructure specification that enables discovery and
presence management for physical connected devices. It specifies the
two-layer discoverability model (public device class, private device
instance), the presence signal protocol, device instance token
management, device class lifecycle, hub-mediated presence, ownership
transfer, and the data retention and privacy rules applicable to device
instance records. Autonomous agents that implement this profile can
discover device capabilities at the class layer without any
authentication, and retrieve live instance endpoint data at the instance
layer subject to owner-granted authorisation.</t>
    </abstract>
  </front>
  <middle>
    <?line 54?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The APIX Core Infrastructure <xref target="APIX-CORE"/> defines the common foundation
for agent-oriented service discovery: the APIX Manifest (APM) format,
the three-dimensional trust model, commercial onboarding, sanctions
compliance, and the base Index API. That document is the authoritative
reference for all concepts and normative requirements shared across
service types.</t>
      <t>This document extends APIX Core for a fundamentally different service
category: physical connected devices. API services have stable URLs and
are verifiable by a crawler. IoT devices have dynamic network addresses,
are physically present in private spaces, and signal their own liveness
directly to the index. These differences require a specialised
registration model, a presence protocol, and privacy rules that do not
apply to web API services.</t>
      <t>Implementors MUST satisfy all normative requirements in <xref target="APIX-CORE"/>
before applying the additional requirements in this document.</t>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in <xref target="RFC2119"/>. All JSON
payloads defined in this document MUST use UTF-8 encoding as mandated
by <xref target="RFC8259"/> Section 8.1.</t>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The following terms are defined in <xref target="APIX-CORE"/> and used here without
redefinition: APIX, APM, APIX Manifest, service_id, trust model,
organisation trust level (O-0 through O-5), service verification level
(S-0 through S-4), liveness, commercial contract, sanctions screening,
APIX Spider, consumer token, Connected Device.</t>
        <t>Additional terms defined in this document:</t>
        <t><strong>Device Manufacturer</strong> — The organisation that produces a physical device
type and registers its device class with APIX. A device manufacturer is
a type of Service Owner as defined in <xref target="APIX-CORE"/>. The term
"manufacturer" is used in this profile where the Service Owner is
specifically a producer of physical hardware.</t>
        <t><strong>Device Class</strong> — An APM registration that describes a physical device
type: its capabilities, manufacturer API versions, and presence model.
Corresponds to <tt>spec.type: "device-class"</tt> or <tt>spec.type: "hub"</tt> in the
APM. A device class is the public, Layer 1 record.</t>
        <t><strong>Device Instance</strong> — A record representing a single physical unit of a
device class. Created and maintained by the device's presence signals.
A device instance is the private, Layer 2 record.</t>
        <t><strong>Presence Signal</strong> — An authenticated message sent by a device (or its
relay) to the APIX presence endpoint to establish or maintain a device
instance record. Signal types: <tt>register</tt>, <tt>heartbeat</tt>, <tt>depart</tt>.</t>
        <t><strong>Device Instance Token</strong> — A per-device secret credential issued by
APIX to the manufacturer at manufacture time. Used exclusively to
authenticate presence signals. Distinct from consumer tokens and
manufacturer API keys.</t>
        <t><strong>token_id</strong> — A stable, non-secret identifier assigned to a device
instance token at issuance. Used in token management API calls without
transmitting the token secret.</t>
        <t><strong>Presence Mode</strong> — The mechanism by which a device class's instances
send presence signals to APIX. Values: <tt>push</tt>, <tt>cloud_relay</tt>, <tt>hub</tt>.</t>
        <t><strong>Hub</strong> — An internet-capable gateway device that relays presence signals
for mesh-protocol devices that cannot reach APIX directly. Registered as
<tt>spec.type: "hub"</tt>.</t>
        <t><strong>Layer 1</strong> — The public, unauthenticated view of a device class record.
Contains capability metadata only. Never contains instance data.</t>
        <t><strong>Layer 2</strong> — The private, authenticated view of device instance records.
Accessible only to the device owner and explicitly delegated agents.</t>
        <t><strong>Reachable</strong> — An instance state flag. An instance is <tt>reachable: false</tt>
when its current <tt>api_version</tt> is not present in the device class's
current <tt>supported_api_versions</tt> list. Such instances are excluded from
all query results.</t>
        <t><strong>Endpoint Confidence</strong> — An APIX-derived per-instance field that
captures the reachability trust ceiling imposed by the device's network
topology. Value <tt>"ipv6"</tt> indicates the device provided a valid global
unicast IPv6 address in its most recent register signal and can be
reached directly. Value <tt>"ipv4_observed"</tt> indicates no IPv6 address was
provided; the device is reachable only via its manufacturer's cloud
relay. APIX derives this field from the register signal and MUST NOT
accept it from the device payload.</t>
        <t><strong>Law Enforcement Request (LER)</strong> — A formally submitted request from
an authorised law enforcement authority to suppress the visibility of
one or more device instances via the Law Enforcement Cooperation
Interface defined in Section 9.8 of this document. LER processing
obligations and the non-surveillance framework within which they operate
are outlined in <xref target="APIX-CORE"/> Section 5.</t>
      </section>
      <section anchor="device-service-model">
        <name>Device Service Model</name>
        <t>The IoT device trust model is architecturally distinct from the API service
trust model defined in <xref target="APIX-SERVICES"/>. API service trust is pull-based:
the APIX Spider probes the service. Device trust is push-based: devices
signal their presence to the index. The manufacturer registration process,
not the Spider, governs device class verification. The trust object
structure in device class and device instance APMs differs accordingly
from that of API service APMs. See <xref target="APIX-CORE"/> Section 6 (Trust Model)
for the authoritative description of all three trust implementations.</t>
        <t>APIX supports two fundamentally distinct service types: API services and
Device services. The APM <tt>spec.type</tt> field determines which model applies.
Services with <tt>spec.type</tt> set to <tt>device-class</tt> are governed by this
section.</t>
        <t><strong>The two service types</strong></t>
        <t>API services have a stable URL, a machine-readable specification document,
and are verified by the APIX Spider. Device services are physical or
firmware-based entities with dynamic network addresses. They cannot be
crawled. Their presence is inherently transient.</t>
        <t><strong>Two-layer discoverability model</strong></t>
        <t>Device services introduce a privacy and security requirement that does not
apply to API services: individual device instances MUST NOT be publicly
discoverable. A dishwasher's online presence is a household occupancy signal.
An agent that can query which specific devices are online at a given time can
infer whether a home is occupied. This is an unacceptable security and privacy
exposure for both manufacturers and end users.</t>
        <t>APIX enforces a strict two-layer model for device services:</t>
        <t>Layer 1 -- Device Class (public): The device class registration is publicly
discoverable by any agent, including anonymous queries. It describes what
the device type is, what it can do, and which protocol it uses. No instance
data is present at this layer. This layer is safe to expose publicly and
serves as the capability advertisement manufacturers want agents to find.</t>
        <t>Layer 2 -- Device Instance (private): Individual device instance data --
whether a specific device is online, its current network endpoint, its
operational state -- is NEVER returned to anonymous or unauthenticated
queries. Instance-level data is accessible only to agents that have been
explicitly authorised by the device owner, and only for instances owned
by that principal.</t>
        <artwork><![CDATA[
Anonymous agent query: home.appliance.dishwasher
Result: device class record -- capabilities, protocol, manufacturer, APM
        NO instance data. NO online/offline. NO location. NO count.

Authenticated agent (device owner):
Result: instances owned by principal -- online status, endpoint, state
]]></artwork>
        <t>The APIX index MUST enforce this separation at the query layer. An index
implementation that returns instance-level data to unauthenticated queries
is non-conformant.</t>
        <artwork><![CDATA[
  Device Class APM  (template, registered by manufacturer)
  +--------------------------------------------------+
  | service_id               stable class identifier |
  | api_base_url             mfr cloud API base URL  |
  | supported_api_versions   ["1.0", "1.1", "1.2"]   |
  | apix_presence_protocols ["v1", "v2"]             |
  | capability_class         "home.appliance.*"      |
  +--------------------------------------------------+
                |
                | 1 class -> N physical devices
                |
                v
  Device Instance  (operational, reported by device at runtime)
  +--------------------------------------------------+
  | instance_id     per-device UUID                  |
  | device_class_id -> class above                   |
  | api_version     "1.2" (firmware)                 |
  | network.ipv6    "2001:db8::1"                    |
  +--------------------------------------------------+
                |
                | firmware selects APIX protocol from
                | apix_presence_protocols list
                |
                v
  POST /presence/v2/register     <- v2 from firmware
  { "api_version": "1.2",        <- mfr API ver from firmware
    "network": { "ipv6": "..." } }
                |
                | APIX validates:
                |   protocol version in apix_presence_protocols
                |   api_version in supported_api_versions
                v
  +--------------------------------------------------+
  |                    APIX                          |
  | validates:                                       |
  |   protocol version in apix_presence_protocols    |
  |   api_version in supported_api_versions          |
  +------------------+-------------------------------+
  | Layer 1 PUBLIC   | Layer 2 PRIVATE               |
  | class metadata   | api_version: "1.2"            |
  | capabilities     | api_endpoint.cloud_relay      |
  | protocol info    | api_endpoint.direct_ipv6      |
  | (no instances)   | network.ipv6                  |
  +------------------+-------------------------------+
         ^                              ^
         |                              |
  anonymous agent               authenticated agent
  GET /search?capability=...    GET /devices?capability=...
                                        &online=true
]]></artwork>
        <t><strong>Manufacturer registration</strong></t>
        <t>A device manufacturer registers a device class once. The registration
defines the capability profile, the communication protocol, and the
presence model for all physical instances of that class. Individual
device instances are not registered by end users -- they are provisioned
by the manufacturer at the point of manufacture.</t>
        <sourcecode type="json"><![CDATA[
{
  "apm_version": "1.0",
  "service_id": "UUID v4 -- stable identifier for this device class",
  "name": "Haustec Pro 8 Dishwasher",
  "description": "Connected dishwasher -- energy optimisation",
  "lifecycle_stage": "stable",
  "owner": {
    "organisation_name": "BSH Home Appliances GmbH",
    "jurisdiction": "DE",
    "registration_number": "HRB 123456",
    "contacts": {
      "operations": "apix-ops@example.com",
      "escalation": "apix-escalation@example.com"
    }
  },
  "spec": {
    "type": "device-class",
    "protocol": "home-connect",
    "api_base_url": "https://api.haustec.example/api",
    "supported_api_versions": ["1.0", "1.1", "1.2"],
    "capability_class": "home.appliance.dishwasher",
    "presence_mode": "push",
    "apix_presence_protocols": ["v1"],
    "heartbeat_interval_seconds": 300,
    "max_offline_seconds": 900
  },
  "capabilities": ["home.appliance.dishwasher", "home.energy"],
  "pricing": {
    "model": "freemium",
    "pricing_url": "https://developer.haustec.example/pricing"
  },
  "custom": [
    "com.haustec.energy_class",
    "com.haustec.max_water_temp_c"
  ],
  "trust": {
    "organisation_level": "O-4",
    "service_level": "S-1",
    "spec_consistency": null,
    "liveness": {
      "presence_mode": "push",
      "heartbeat_interval_seconds": 300,
      "max_offline_seconds": 900
    }
  }
}
]]></sourcecode>
        <t>Note that the public device class record contains no instance count, no
online status aggregate, and no presence timestamps. All such data is
confined to the authenticated instance layer.</t>
        <t>Device class APMs MAY include a <tt>pricing</tt> field using the schema defined
in <xref target="APIX-SERVICES"/>. For IoT device classes, the <tt>"dynamic"</tt> pricing
model is particularly relevant: a cloud relay service may price per
connected device-hour at rates that vary with platform load. When
<tt>model</tt> is <tt>"dynamic"</tt>, the <tt>pricing_endpoint</tt> MUST be queried by the
agent before initiating a command session, not on every individual
command within an established session.</t>
        <t>Device class APMs MAY include a <tt>custom</tt> field using the schema and
normative rules defined in <xref target="APIX-SERVICES"/>. The <tt>custom</tt> array is a
capability declaration list: it signals the existence of hardware-specific
properties (energy classification, operating temperature ranges, protocol
variant details) that frequently precede standardisation. Values are not
stored in the index; they are defined in the manufacturer's own API
documentation and retrieved directly from the device class service. The
same rules apply as in <xref target="APIX-SERVICES"/>: entries MUST use reverse-domain
notation, the array MUST NOT exceed 20 entries, each entry MUST NOT exceed
128 characters, and declared key names are indexed and exposed via the
<tt>custom_key</tt> search parameter.</t>
        <t><strong>Heartbeat interval and offline tolerance contract</strong></t>
        <t>Two companion fields in the device class APM together define the liveness
contract for all instances of the class. Both are set at class registration
time by the manufacturer and are binding on all instances.</t>
        <t><tt>heartbeat_interval_seconds</tt> — the target rate at which conformant instances
MUST send presence signals. This is the expected steady-state cadence.
An instance that signals less frequently than this value is non-conformant.</t>
        <t><tt>max_offline_seconds</tt> — the maximum age of the most recently received
heartbeat before the index MUST mark the instance offline. This value
encodes the manufacturer's knowledge of normal connectivity gaps for the
device type and MUST be greater than or equal to <tt>heartbeat_interval_seconds</tt>.
APIX MUST reject device class registrations where <tt>max_offline_seconds</tt>
is less than <tt>heartbeat_interval_seconds</tt>.</t>
        <t>Manufacturers MUST choose values appropriate to the device's deployment
context and connectivity model. A mains-powered, always-connected field
device (for example, a traffic surveillance camera) SHOULD declare a short
<tt>heartbeat_interval_seconds</tt> (for example, 30 seconds) and a
<tt>max_offline_seconds</tt> only modestly larger (for example, 90 seconds), to
enable fast offline detection. A battery-powered or intermittently connected
sensor (for example, a forest fire smoke detector in a remote area) SHOULD
declare a long <tt>heartbeat_interval_seconds</tt> (for example, 3600 seconds)
and a <tt>max_offline_seconds</tt> that accommodates known connectivity gaps in
the deployment environment (for example, 86400 seconds for a device in an
area with intermittent network coverage).</t>
        <t>The APIX index uses the class-declared values, never any instance-reported
value, to determine liveness.</t>
        <t><strong>Notification channels for device classes:</strong></t>
        <t>Device class APMs MAY include a <tt>notifications</tt> field to allow consuming
agents and device owners to receive push notifications about class-level
changes (spec updates, trust level changes, lifecycle transitions). The
permitted channel types for device class registrations are restricted to
<tt>webhook</tt> only. <tt>sse</tt> and <tt>websocket</tt> channel types defined in
<xref target="APIX-SERVICES"/> MUST NOT be used in device class APMs.</t>
        <t>This restriction exists because device class changes are sparse, infrequent
events. A persistent open connection (SSE or WebSocket) held by thousands of
agents waiting for a class manifest change that occurs at most a few times per
year is architecturally wasteful. A webhook is the correct model: the service
calls the agent when an event occurs; no connection is held between events.</t>
        <t>Device instance liveness (online/offline transitions for individual devices)
is served by the presence signal mechanism and by the <tt>devices.presence</tt>
delegation scope (Section 6), not by notification channels.</t>
        <t><strong>Device version contract</strong></t>
        <t>The device class APM declares all manufacturer API versions the device
class supports in <tt>supported_api_versions</tt>. This is the exhaustive
version contract between the manufacturer and APIX. When a physical
device sends a presence signal it MUST declare exactly one of these
versions as its currently running version; APIX MUST reject presence
signals that declare a version outside the registered list.</t>
        <t>The <tt>apix_presence_protocols</tt> field declares the list of APIX Presence
Protocol versions (Section 6) that devices of this class may use when
sending presence signals. At initial registration the list typically
contains a single version. When the manufacturer releases a firmware
update that moves devices to a newer APIX presence protocol, the
manufacturer updates the device class registration to add the new
version to the list. Both versions remain valid simultaneously: devices
that have received the firmware update call the newer presence endpoint;
devices not yet updated continue calling the older one. APIX MUST
accept presence signals from any endpoint version present in
<tt>apix_presence_protocols</tt>.</t>
        <t>The APIX presence protocol version a device uses is implicit in the
endpoint URL it calls (e.g. <tt>POST /presence/v1/register</tt> vs
<tt>POST /presence/v2/register</tt>). It is not repeated in the signal body.</t>
        <t>The device version model provides two independent guarantees:</t>
        <t>Reliability axis (device to APIX): Every device firmware version knows
exactly which APIX presence endpoint URL to call. This URL is stable
for the full support window of that protocol version (Section 6).
A device running a given firmware version will always be able to signal
its presence to APIX without modification, as long as the protocol
version it was built against remains in its support window. A firmware
update that introduces a newer APIX protocol version is the device's
own upgrade path, not a requirement.</t>
        <t>Flexibility axis (agent through APIX to device): The manufacturer API
version (<tt>api_version</tt>) running on a physical device instance is
reported by the device itself and may change when the device performs a
firmware upgrade through the manufacturer's own update process. A
firmware upgrade that changes the running API version MUST be signalled
to APIX by the device sending a new <tt>register</tt> signal carrying the
updated <tt>api_version</tt>. APIX updates the instance record immediately.
Consuming agents that re-fetch the instance record after a connection
failure automatically receive the current API version and the correct
versioned endpoint. The firmware update process is out of scope for
this specification; APIX is version-aware only at the presence signal
boundary.</t>
        <t>Example: a device class initially registered with firmware D1.0 using
APIX presence protocol v2 ships with <tt>apix_presence_protocols: ["v2"]</tt>.
When a firmware update introduces D1.3 with support for APIX presence
protocol v3, the manufacturer adds v3 to the device class registration:
<tt>apix_presence_protocols: ["v2", "v3"]</tt>. Updated devices call
<tt>/presence/v3/register</tt>; unupdated devices continue calling
<tt>/presence/v2/register</tt>. Both are accepted.</t>
        <t><strong>Device instance tokens</strong></t>
        <t>Each physical device is provisioned at manufacture with a device instance
token. This token is used exclusively to authenticate presence signals
sent to the APIX presence endpoint. Tokens are issued by APIX to the
manufacturer as part of the commercial contract and are scoped to a
specific device class registration.</t>
        <t>Token requirements: tokens MUST contain a minimum of 256 bits of
cryptographic randomness and MUST be encoded as base64url without
padding. Tokens MUST NOT be derivable from device serial numbers,
MAC addresses, or any other publicly accessible or predictable
identifier. APIX stores only the SHA-256 hash of each token; the
plaintext is delivered once at issuance and cannot be re-retrieved.</t>
        <t>Each token is assigned a stable, non-secret <tt>token_id</tt> by APIX at
issuance. The <tt>token_id</tt> uniquely identifies a token in API operations
(rotation, revocation) without requiring the token secret to be
transmitted. The <tt>token_id</tt> is returned alongside the token in the
batch delivery payload and appears in the device instance record,
allowing the manufacturer to correlate their production records with
APIX instance data.</t>
        <t><strong>Token rotation</strong></t>
        <t>A device instance token MUST be rotatable without changing the device's
<tt>instance_id</tt>. The rotation preserves the device's ownership, history,
and position in any consuming agent's workflow; only the credential
changes.</t>
        <t>Rotation is initiated by the manufacturer via the Token Management API,
referencing the <tt>token_id</tt> of the token to be replaced. APIX MUST
issue a single replacement token and enter a dual-valid state for that
instance: both the existing token and the replacement token are accepted
for presence signals for a configurable handover window (default: 24
hours; manufacturer may request shorter or longer within operator limits).</t>
        <t>The manufacturer delivers the replacement token to the physical device
via the manufacturer's OTA channel (out of scope for this specification).
When the device sends its first presence signal using the replacement
token, APIX MUST atomically revoke the previous token. Subsequent
signals using the old token MUST be rejected with HTTP 401
<tt>token_revoked</tt>.</t>
        <t>If the handover window expires before the replacement token has been
used in a successful presence signal, APIX MUST revoke the old token
at window expiry. The device transitions to offline and enters the
HTTP 401 dormant state until the manufacturer resolves the delivery
failure via a further OTA cycle or re-provisioning.</t>
        <t>Replacement tokens MUST meet the same entropy and format requirements
as initial tokens. Previously issued tokens MUST NOT be reissued after
rotation or revocation.</t>
        <t><strong>Device owner authorisation</strong></t>
        <t>A device owner associates their device instances with their APIX identity
through a one-time ownership claim process defined by the manufacturer.
Once claimed, the device owner MAY delegate access to specific agents --
for example, a home energy management agent authorised to query the
dishwasher's availability and schedule a wash cycle during off-peak tariff
windows. Delegation is scoped, revocable, and does not expose the device
to any other agent.</t>
        <t><strong>Ownership transfer and release</strong></t>
        <t>Device ownership is transferable without changing the device's
<tt>instance_id</tt>. A device owner MAY release their ownership claim at
any time by calling <tt>DELETE /devices/{instance_id}/claim</tt>. APIX MUST
remove the <tt>owner_id</tt> association and revoke all agent delegations
scoped to that device instance. The instance record and its presence
history are retained. The device continues to signal presence and
remains online, but is not visible in Layer 2 queries until a new
owner completes a claim.</t>
        <t>A manufacturer MAY issue a new claim token for a device that already
has an active ownership claim -- for example, to facilitate a resale
or to respond to a factory reset. When a new claim is completed, APIX
MUST atomically replace the existing <tt>owner_id</tt> with the new
claimant's identity and revoke all delegations from the previous
owner. The previous owner receives no notification; their Layer 2
access ceases immediately upon the new claim being recorded.</t>
        <t>A device that is factory-reset at firmware level SHOULD send a depart
signal with <tt>"reason": "factory_reset"</tt> before clearing its
operational state. On receipt, APIX MUST release the ownership
association (clear <tt>owner_id</tt>) and mark the instance offline, in
addition to the standard depart processing. If no factory-reset
depart signal is received (e.g., the reset is hardware-triggered),
the ownership association persists until the manufacturer issues a
new claim token or the previous owner explicitly releases their
claim.</t>
        <t><strong>Presence signal mechanism</strong></t>
        <t>Device liveness is maintained by push signals, not Spider crawls. A
presence signal is not a bare keepalive: it carries the device's
currently running manufacturer API version and its network addresses,
allowing APIX to construct the full instance record at registration time.</t>
        <t>Signal types: <tt>register</tt> (first contact after power-on or reconnect),
<tt>heartbeat</tt> (periodic keepalive, MUST NOT change <tt>api_version</tt> or
network addresses without re-registering), <tt>depart</tt> (graceful shutdown
or factory reset). The depart signal MAY carry an optional <tt>"reason"</tt>
field; the only defined value in this specification is
<tt>"factory_reset"</tt>, which triggers ownership release in addition to
standard offline processing. Unrecognised <tt>reason</tt> values MUST be
ignored by APIX.</t>
        <sourcecode type="json"><![CDATA[
POST https://apix.example.org/presence/v1/register
Authorization: Bearer device-instance-token
Content-Type: application/json

{
  "device_class_id": "dc-haustec-pro8-dishwasher",
  "signal_type": "register",
  "api_version": "1.2",
  "network": {
    "ipv6": "2001:db8:85a3::8a2e:370:7334"
  }
}
]]></sourcecode>
        <t>When a register signal carries an <tt>api_version</tt> not present in the
device class's <tt>supported_api_versions</tt> list, APIX MUST return HTTP
422 <tt>api_version_not_supported</tt> and MUST create or update the instance
record with <tt>reachable: false</tt>. The record is not visible in capability
searches but IS visible in the device owner's Layer 2 query, allowing
the owner to observe and diagnose the version mismatch without direct
device access. APIX MUST reject a presence signal received at a
protocol endpoint version not listed in the device class's
<tt>apix_presence_protocols</tt> with HTTP 400; no instance record is created
for endpoint version mismatches.</t>
        <t>Presence signal flow:</t>
        <artwork><![CDATA[
Device powers on
      |
      v
Device sends register signal to /presence/v1/register:
  api_version, network.ipv6 (OPTIONAL -- absent for IPv4-only devices)
      |
      v
APIX records HTTP request source IP as observed_source_ipv4 (internal)
APIX validates: instance token valid, api_version in supported list
APIX derives endpoint_confidence:
  "ipv6"          if network.ipv6 is a valid global unicast address
  "ipv4_observed" otherwise
      |
      v
APIX records instance as online -- visible only to authorised agents
      |
      v
Authorised agent queries /devices: capability, online filter
      |
      v
APIX returns instance record: api_version, network, api_endpoint
      |
      v
Heartbeat timeout OR explicit depart signal
      |
      v
APIX marks instance offline; clears network addresses from record
]]></artwork>
        <t>The index determines instance liveness by comparing the age of the most
recently received heartbeat against the <tt>max_offline_seconds</tt> value
declared in the device class APM:</t>
        <artwork><![CDATA[
online IF: (current_time - last_heartbeat_at) <= max_offline_seconds
]]></artwork>
        <t>The threshold is always derived from the class template, never from any
instance-reported value. An instance whose condition evaluates to false
MUST be marked offline by the index.</t>
        <t>Manufacturers SHOULD implement a departure signal on graceful shutdown;
relying solely on heartbeat timeout is permitted but results in a delayed
offline transition.</t>
        <t><strong>Presence relay options</strong></t>
        <t>Three <tt>presence_mode</tt> values are defined for device classes:</t>
        <t><tt>push</tt> — the device contacts the APIX presence endpoint directly
over HTTPS without any intermediary. This is the highest-integrity
path: the signal originates from the device itself. Device classes
using <tt>push</tt> may achieve any service trust level up to S-4.</t>
        <t><tt>cloud_relay</tt> — the manufacturer's cloud infrastructure relays
presence signals on behalf of the device. The device sends signals
to a manufacturer-operated endpoint; the manufacturer's cloud
forwards them to APIX using the device's instance token. This model
is appropriate for devices on constrained networks or behind
carrier-grade NAT that cannot reach APIX directly. Device classes
using <tt>cloud_relay</tt> are bounded at service trust level S-1. The
manufacturer's cloud intermediary holds all instance tokens for
devices of that class, and can attest any device state value
(online status, api_version, network addresses) without independent
verification by APIX. A consuming agent applying a trust policy
that requires S-2 or higher MUST NOT rely on <tt>cloud_relay</tt> device
instances.</t>
        <t><tt>hub</tt> — a hub gateway device mediates presence for devices that
communicate exclusively over short-range mesh protocols, as
specified in Section 3.6. Service trust level is bounded at S-1
for the same reasons as <tt>cloud_relay</tt>.</t>
        <t>The <tt>presence_mode</tt> MUST be declared in the device class APM. The
presence_mode determines the trust ceiling for all instances of
that class; it cannot be overridden per-instance.</t>
        <t><strong>Endpoint confidence</strong></t>
        <t><tt>presence_mode</tt> captures signal-integrity trust — how reliably APIX
can attribute a presence signal to the physical device. A separate
per-instance field, <tt>endpoint_confidence</tt>, captures reachability trust —
how reliably a consuming agent can form a direct connection to the device.</t>
        <t>APIX MUST derive <tt>endpoint_confidence</tt> from each register signal:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Condition</th>
              <th align="left">Direct endpoint available</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>ipv6</tt></td>
              <td align="left">Device provided a valid global unicast IPv6 address in <tt>network.ipv6</tt></td>
              <td align="left">
                <tt>api_endpoint.direct_ipv6</tt> is present</td>
            </tr>
            <tr>
              <td align="left">
                <tt>ipv4_observed</tt></td>
              <td align="left">No valid global unicast IPv6 provided; APIX observed a source IPv4 from the HTTP request</td>
              <td align="left">No <tt>direct_ipv6</tt>; no <tt>direct_ipv4</tt>; <tt>cloud_relay</tt> or <tt>hub_gateway</tt> only</td>
            </tr>
          </tbody>
        </table>
        <t>IPv4 addresses self-reported by a device MUST NOT be accepted in the
<tt>network</tt> payload. APIX records the HTTP request source address as
<tt>observed_source_ipv4</tt> for internal operational use (abuse detection,
geo-routing) and MUST NOT surface it in any instance record or API
response. The reason is structural: a device behind NAT knows only its
private LAN address; the public IP APIX observes is the NAT gateway, not
the device. Neither value reliably supports direct agent-to-device
connectivity without port forwarding, which cannot be assumed.</t>
        <t>A consuming agent MUST read <tt>endpoint_confidence</tt> before selecting an
endpoint. Agents performing consequential operations (device commands,
ownership actions) MUST NOT assume a direct endpoint is available for
instances with <tt>endpoint_confidence: "ipv4_observed"</tt>; they MUST route
through <tt>cloud_relay</tt> or <tt>hub_gateway</tt>.</t>
        <t><strong>APIX Presence Endpoint Versioning</strong></t>
        <t>The APIX Presence Protocol is versioned independently of the Index API.
The version identifier is embedded in the endpoint path:</t>
        <artwork><![CDATA[
https://apix.example.org/presence/v1/register
https://apix.example.org/presence/v1/heartbeat
https://apix.example.org/presence/v1/depart
]]></artwork>
        <t>A device class declares all presence protocol versions its devices may
use in <tt>apix_presence_protocols</tt>. The list starts with the version
supported at initial registration. When a firmware update introduces
support for a newer protocol version, the manufacturer adds it to the
list -- the older version remains valid for devices not yet updated.
Multiple versions in <tt>apix_presence_protocols</tt> are all simultaneously
active for that device class.</t>
        <t>Long-term support guarantee: APIX MUST maintain each presence protocol
version in full operation for a minimum of ten (10) years from the date
on which the first device class registration including that version is
accepted. After this window, a five (5) year deprecation period applies
during which the version continues to operate but no new device class
registrations may add it to their <tt>apix_presence_protocols</tt> list.
Removal of a presence protocol version before the combined fifteen-year
window has elapsed is a specification violation.</t>
        <t>This guarantee exists because IoT appliances frequently have commercial
service lifespans of ten to twenty years, and not all deployed units
receive firmware updates on a predictable schedule. A manufacturer must
be able to guarantee to their customers and channel partners that
presence signalling will remain operational for the full product life,
independently of which firmware version a specific unit happens to run.</t>
        <t><strong>Protocol version sunset</strong></t>
        <t>APIX presence protocol versions do not remain operational indefinitely.
After the minimum support window (Section 3.5), APIX may sunset a
version. Sunset proceeds in two phases:</t>
        <t>Deprecation phase: APIX marks the version as deprecated. All responses
from the deprecated endpoint version MUST include the <tt>Deprecation</tt>
response header (<xref target="RFC9745"/>) and the <tt>Sunset</tt> response header (<xref target="RFC8594"/>)
carrying the planned removal date. APIX MUST notify the registered
operations contact of every device class that lists the deprecated
version in <tt>apix_presence_protocols</tt>. Device class records that still
include the deprecated version receive a <tt>standard_warnings</tt> entry
indicating the sunset date. The deprecation phase MUST last a minimum
of five (5) years.</t>
        <t>Removal: On the sunset date, the endpoint version is removed. Requests
to the removed endpoint MUST return HTTP 410 Gone with a response body
referencing current migration documentation. Device instances that have
not migrated to a supported protocol version will cease to appear in
APIX as online. Their device class registrations remain valid; only
presence signalling is affected.</t>
        <t>The sunset obligation runs between APIX and the device manufacturer.
The manufacturer accepted the APIX terms of service at registration and
is contractually responsible for managing their fleet's migration path.
APIX is not liable to individual device owners whose devices lose APIX
connectivity because the manufacturer did not deploy a firmware update
within the deprecation window. The manufacturer may satisfy this
obligation by updating device firmware to a supported protocol version,
by routing presence signals through a manufacturer-side relay that
performs protocol translation, or by retiring the device class and
communicating end-of-APIX-support to customers.</t>
        <t><strong>IPv6 as primary network addressing</strong></t>
        <t>The APIX Presence Protocol uses IPv6 as the sole self-reported network
address in device presence signals. Physical devices SHOULD include a
global unicast IPv6 address in the <tt>network.ipv6</tt> field of their
presence signals. Devices that cannot provide a global unicast IPv6
address send presence signals without a <tt>network</tt> field; APIX observes
their source IPv4 address from the HTTP request for internal operational
use only (see endpoint_confidence semantics above). IPv4 MUST NOT be
included in the <tt>network</tt> payload of a presence signal.</t>
        <t>IPv6 addresses MUST be provided as unbracketed strings in the
<tt>network.ipv6</tt> field of the presence signal. APIX stores and returns
them as unbracketed strings; consuming agents construct RFC 3986-
compliant bracketed URIs (e.g. <tt>https://[2001:db8::1]/api/1.2/</tt>) when
building endpoint URLs from instance records.</t>
        <t><strong>Spider exclusion</strong></t>
        <t>Device services with <tt>spec.type: device-class</tt> MUST NOT be crawled
by the APIX Spider. The Spider specification in <xref target="APIX-CORE"/> does not
apply to device services. Spec consistency checking (<tt>spec_consistency</tt>)
is not applicable and MUST be set to <tt>null</tt> for device class
registrations.</t>
        <t><strong>Trust levels for device services</strong></t>
        <t>Organisation trust levels (O-0 through O-5) apply to device manufacturers
in the same way as API service owners. Service verification levels S-0
through S-4 (as defined in <xref target="APIX-CORE"/>) apply in full, with the
following device-class-specific meaning for S-2: S-2 (Spec Verified)
means the declared capability class is registered in the APIX capability
taxonomy and the device class has completed the manufacturer registration
process including KYC/AML screening. The Spider does not contribute to
device service verification.</t>
        <t>The maximum S-level achievable by a device class is constrained by its
<tt>presence_mode</tt>. The full S-0 through S-4 range is defined; the table
below states the ceiling imposed by each mode:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Presence mode</th>
              <th align="left">Maximum service trust level</th>
              <th align="left">Reason</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>push</tt></td>
              <td align="left">S-4</td>
              <td align="left">Direct device signal path; no intermediary</td>
            </tr>
            <tr>
              <td align="left">
                <tt>cloud_relay</tt></td>
              <td align="left">S-1</td>
              <td align="left">Manufacturer cloud attests device state; not independently verifiable</td>
            </tr>
            <tr>
              <td align="left">
                <tt>hub</tt></td>
              <td align="left">S-1</td>
              <td align="left">Hub gateway attests device state; not independently verifiable</td>
            </tr>
          </tbody>
        </table>
        <t>A consuming agent that requires S-2 or higher for its trust policy
MUST exclude device classes with <tt>presence_mode: cloud_relay</tt> or
<tt>presence_mode: hub</tt> from its query results. Agents SHOULD filter
by <tt>service_level_min</tt> when querying the Device Instance Query API.</t>
        <section anchor="hub-mediated-device-services">
          <name>Hub-Mediated Device Services</name>
          <t>Many IoT devices communicate exclusively over short-range mesh protocols
(Matter over Thread, Zigbee, Z-Wave) and have no direct path to the
public internet. These devices are physically incapable of sending
presence signals to APIX themselves. A hub gateway -- an internet-capable
device that bridges the local mesh to the IP network -- must act as their
APIX presence relay.</t>
          <t>APIX supports this through two complementary registrations: a hub device
class (type <tt>hub</tt>) for the gateway hardware, and a hub-mediated device
class (presence_mode <tt>hub</tt>) for the devices the hub serves.</t>
          <t><em>Hub entity</em></t>
          <t>A hub is registered in APIX as a device class with <tt>spec.type: "hub"</tt>.
Hub physical units receive their own instance tokens at manufacture,
identical in structure to device instance tokens. Hubs signal their own
presence directly to the APIX presence endpoint (presence_mode <tt>push</tt>).
A hub instance that is offline cannot relay presence for any of its
connected devices.</t>
          <sourcecode type="json"><![CDATA[
{
  "apm_version": "1.0",
  "service_id": "UUID v4 -- stable hub class identifier",
  "name": "Haustec Connect Bridge v2",
  "description": "Matter/Thread hub for BSH home appliances",
  "lifecycle_stage": "stable",
  "owner": {
    "organisation_name": "BSH Home Appliances GmbH",
    "jurisdiction": "DE",
    "registration_number": "HRB 123456",
    "contacts": {
      "operations": "apix-ops@example.com",
      "escalation": "apix-escalation@example.com"
    }
  },
  "spec": {
    "type": "hub",
    "hub_protocols": ["matter"],
    "supported_device_classes": ["dc-haustec-pro8-dishwasher"],
    "presence_mode": "push",
    "apix_presence_protocols": ["v1"],
    "heartbeat_interval_seconds": 60,
    "max_offline_seconds": 180
  }
}
]]></sourcecode>
          <t><tt>supported_device_classes</tt> is the exhaustive list of device class IDs
for which this hub type may relay presence signals. APIX MUST reject
hub-relay signals for device classes not in this list.</t>
          <t><em>Hub-mediated device class</em></t>
          <t>A device class whose physical instances cannot signal directly sets
<tt>presence_mode: "hub"</tt> in its APM. It also declares <tt>hub_protocols</tt> to
identify how the hub-to-device local channel carries the instance token
during the pairing process.</t>
          <sourcecode type="json"><![CDATA[
{
  "spec": {
    "type": "device-class",
    "presence_mode": "hub",
    "hub_protocols": ["matter"],
    "permitted_hub_classes": ["hc-haustec-connect-bridge-v2"],
    "api_base_url": "https://api.haustec.example/hub-gateway/api",
    "supported_api_versions": ["1.0", "1.1"],
    "apix_presence_protocols": ["v1"],
    "heartbeat_interval_seconds": 300,
    "max_offline_seconds": 600
  }
}
]]></sourcecode>
          <t><tt>hub_protocols</tt> informs APIX and consuming agents which local protocol
carries the device's instance token to the hub at pairing time. The
mechanism for token transfer is hub-protocol specific and outside the
scope of this specification.</t>
          <t><tt>permitted_hub_classes</tt> is an optional field. When present, it is a
manufacturer capability declaration that restricts which hub classes
may relay presence signals for instances of this device class. APIX
MUST reject relay signals from hub instances whose class ID is not in
the list. When absent, any hub whose <tt>supported_device_classes</tt>
includes this device class may relay.</t>
          <t>This field is a capability and interoperability declaration, not a
per-instance pairing or authentication mechanism. It encodes the
manufacturer's knowledge of which hub types their device is designed
to work with correctly. Instance-level device-to-hub pairing is
governed by the local network provisioning process (for example,
Matter commissioning) and the manufacturer's device management
infrastructure; it is outside the scope of this specification.</t>
          <t><em>Hub-relay presence signal</em></t>
          <t>A hub signals presence for a connected device using a dedicated hub-relay
endpoint. Each signal carries two credentials: the hub's own instance token
in the Authorization header (authenticating the hub), and the paired
device's instance token in the request body (authenticating the specific
device). APIX validates both independently.</t>
          <sourcecode type="json"><![CDATA[
POST https://apix.example.org/presence/v1/hub-relay/register
Authorization: Bearer hub-instance-token
Content-Type: application/json

{
  "hub_instance_id": "di-hub-a4c27f...",
  "signal_type": "register",
  "device": {
    "instance_token": "device-instance-token",
    "device_class_id": "dc-haustec-pro8-dishwasher",
    "api_version": "1.0"
  },
  "hub_gateway_endpoint":
    "https://api.haustec.example/hub-gw/api/1.0/di-f47ac1..."
}
]]></sourcecode>
          <t>Note that hub-mediated device presence signals carry no <tt>network.ipv6</tt>
field: the device has only a local mesh address, which is not
internet-routable and MUST NOT be included. The agent reaches the
device exclusively via the <tt>hub_gateway_endpoint</tt> at the manufacturer's
cloud, which routes requests to the device through the hub.</t>
          <t>APIX MUST reject a hub-relay signal where:
(a) the hub instance token is invalid or revoked,
(b) the device instance token is invalid or revoked,
(c) the device class is not in the hub class's <tt>supported_device_classes</tt>,
(d) the hub instance is not itself currently online, or
(e) the device class declares <tt>permitted_hub_classes</tt> and the relaying
    hub's class ID is not in that list.</t>
          <t><em>Layer 2 instance record for hub-mediated devices</em></t>
          <sourcecode type="json"><![CDATA[
{
  "instance_id": "di-f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "device_class_id": "dc-haustec-pro8-dishwasher",
  "api_version": "1.0",
  "online": true,
  "presence_mode": "hub",
  "hub_instance_id": "di-hub-a4c27f...",
  "last_seen_at": "2026-04-24T09:00:00Z",
  "api_endpoint": {
    "hub_gateway":
      "https://api.haustec.example/hub-gw/api/1.0/di-f47ac1..."
  },
  "owner_id": "usr-7e8a9b2c...",
  "claimed_at": "2026-01-10T10:00:00Z",
  "_links": {
    "self": {
      "href": "https://apix.example.org/devices/di-f47ac1..."
    },
    "hub": {
      "href": "https://apix.example.org/devices/di-hub-a4c27f..."
    },
    "device_class": {
      "href": "https://apix.example.org/device-classes/dc-haustec-p8"
    }
  }
}
]]></sourcecode>
          <t><em>Cascading offline</em></t>
          <t>When a hub instance is marked offline -- whether by heartbeat timeout or
explicit departure signal -- APIX MUST mark all device instances currently
attributed to that hub as offline and MUST clear their
<tt>api_endpoint.hub_gateway</tt> fields. APIX MUST NOT return <tt>online: true</tt>
for any device instance attributed to an offline hub.</t>
          <t><em>Hub migration</em></t>
          <t>A device may move from one hub to another. When a hub-relay register
signal is received for a device whose instance record is currently
attributed to a different hub, APIX MUST update the device instance
record: <tt>hub_instance_id</tt> is set to the new hub's <tt>instance_id</tt> and
<tt>api_endpoint.hub_gateway</tt> is replaced with the value from the new
signal. The device <tt>instance_id</tt> MUST be preserved. APIX MUST return
HTTP 409 <tt>device_not_attributed_to_hub</tt> on any subsequent hub-relay
signal from the previous hub for that device.</t>
          <t><em>Trust boundary</em></t>
          <t>Hub relay introduces an intermediary trust boundary absent from the push
model. The device's instance token validates that the specific device
was genuinely provisioned for this class and class owner, but the hub's
reported <tt>api_version</tt> and <tt>hub_gateway_endpoint</tt> are attested by the
hub and cannot be independently verified by APIX. A compromised hub can
misrepresent the state of devices it genuinely controls but cannot forge
presence signals for devices whose instance tokens it does not hold.</t>
          <t>Device classes using <tt>presence_mode: "hub"</tt> are bounded at service trust
level S-1. S-2 (Spec Verified) requires a direct device signal path
and is not achievable via hub relay in this specification version.</t>
          <artwork><![CDATA[
  Physical Device  (mesh -- Thread/Zigbee/Z-Wave, not internet-capable)
  +------------------------------------------+
  | instance_token  (in secure enclave)       |
  | api_version     firmware API version      |
  | local_mesh_addr NOT internet-routable     |
  +------------------------------------------+
             |
             | hub protocol (Matter/Zigbee/Z-Wave)
             | pairing: hub reads instance_token
             v
  Hub Instance  (internet-capable border router)
  +------------------------------------------+
  | hub_instance_id    own APIX identity      |
  | hub_instance_token own APIX credential    |
  | paired devices:    [{instance_token,...}] |
  +------------------------------------------+
             |
             | POST /presence/v1/hub-relay/register
             | Auth: hub_instance_token (hub identity)
             | Body: device instance_token (device identity)
             v
  +---------------------+------------------------+
  | Layer 1  (PUBLIC)   | Layer 2  (PRIVATE)     |
  | hub class metadata  | hub instance: online   |
  | device class meta   | device instance:       |
  | no instance data    |   hub_instance_id      |
  |                     |   api_endpoint.        |
  |                     |     hub_gateway        |
  +---------------------+------------------------+
          ^                         ^
          |                         |
  anonymous agent           authenticated agent
  class discovery           GET /devices?online=true
]]></artwork>
        </section>
        <section anchor="device-class-lifecycle">
          <name>Device Class Lifecycle</name>
          <t>Device class lifecycle is defined by this profile. Valid
<tt>lifecycle_stage</tt> values for device classes are <tt>stable</tt>, <tt>deprecated</tt>,
and <tt>end_of_life</tt>. These are the complete set for this service type.</t>
          <t>A device class progresses through three lifecycle stages that the
manufacturer sets via registration updates. Transitions are
unidirectional: <tt>stable</tt> → <tt>deprecated</tt> → <tt>end_of_life</tt>.</t>
          <t><em>stable</em> — Full operation. All normative rules apply without
modification.</t>
          <t><em>deprecated</em> — The manufacturer is winding down the class. APIX MUST
continue accepting presence signals from existing device instances.
Deprecated classes MUST be excluded from Layer 1 capability searches
by default; they remain directly retrievable by <tt>service_id</tt>. Device
instances of deprecated classes MUST be excluded from Layer 2 query
results by default; a consuming agent MAY include them by adding
<tt>include_deprecated=true</tt> to the query. Instance records MUST carry
<tt>"class_lifecycle_stage": "deprecated"</tt>.</t>
          <t><em>end_of_life</em> — APIX MUST reject all presence signals for the class
with HTTP 410 Gone. All existing instances are marked <tt>online: false</tt>
and <tt>reachable: false</tt>. Class and instance records are retained for
historical query by the device owner but MUST NOT appear in any
capability or instance search.</t>
        </section>
        <section anchor="instance-reachability">
          <name>Instance Reachability</name>
          <t>A device instance MUST be marked <tt>"reachable": false</tt> when its
current <tt>api_version</tt> is absent from the device class's current
<tt>supported_api_versions</tt> list. This condition arises when a
manufacturer removes a version from the supported list -- for
example, as part of a class deprecation cycle -- while one or more
physical devices remain on that version. Such a device is still
online (liveness signals continue to be accepted) but its API
version is no longer endorsed, so no valid endpoint can be
constructed by a consuming agent.</t>
          <t>APIX MUST exclude instances with <tt>reachable: false</tt> from query
results regardless of the <tt>online</tt> filter value. A query for
<tt>online=true</tt> devices MUST NOT include an instance that is
<tt>reachable: false</tt>.</t>
          <t>When <tt>reachable: false</tt>, instance records MUST omit <tt>api_endpoint</tt>
fields. The <tt>api_version</tt> field is retained to allow the owner to
identify the version mismatch.</t>
          <t>Instance records MUST include <tt>"reachable": false</tt> and
<tt>"class_lifecycle_stage"</tt> (with its non-<tt>stable</tt> value) whenever
those conditions apply. Neither field is present in the response
when the instance is reachable and its class is <tt>stable</tt>.</t>
        </section>
      </section>
      <section anchor="data-retention-and-privacy">
        <name>Data Retention and Privacy</name>
        <t>The two-layer model — public device class, private device instance — is
structurally aligned with Regulation (EU) 2023/2854 (Data Act). Under the
Data Act, data generated by a connected product is the user's to access in
a structured, commonly used, machine-readable format and to share with a
third party of their choosing; it is not the manufacturer's data to publish.
APIX reflects this by holding device instance data in the private Layer 2
record, retrievable only under owner-granted authorisation (see Agent
Delegation), while only the manufacturer-owned device class remains public.
The access-by-design obligations of the Data Act apply from 12 September 2026.</t>
        <t><strong>Personal data in device instance records</strong></t>
        <t>Device instance records contain personal data fields. The index
operator is the data controller for these fields within the meaning
of applicable data protection law (including GDPR where applicable).
The following fields are classified as personal data:</t>
        <ul spacing="normal">
          <li>
            <t><tt>owner_id</tt> — links the instance to a natural person's consumer
account</t>
          </li>
          <li>
            <t><tt>network.ipv6</tt> — the device's IPv6 address, which may identify a
natural person's home network or device location. Note: APIX observes
the device's source IPv4 address internally at registration for abuse
detection and geo-routing purposes; this address is not stored in the
instance record and is not classified as instance-level personal data.</t>
          </li>
          <li>
            <t><tt>api_endpoint</tt> fields — URLs that may carry device-specific
identifiers attributable to a natural person</t>
          </li>
          <li>
            <t><tt>claimed_at</tt> and <tt>last_seen_at</tt> — timestamps that, in combination
with network addresses, constitute behavioural data</t>
          </li>
        </ul>
        <t><tt>instance_id</tt> and <tt>device_class_id</tt> are pseudonymous technical
identifiers and are not classified as personal data on their own.</t>
        <t>Network addresses and <tt>api_endpoint</tt> fields MUST be cleared from
the instance record when a device transitions to offline, as
specified in the presence signal processing rules. This is both
an operational requirement and a data minimisation obligation.</t>
        <t><strong>Offline record retention</strong></t>
        <t>An instance record that has been offline without re-registration
for more than ninety (90) days MUST be transitioned to archived
state. In archived state:</t>
        <ul spacing="normal">
          <li>
            <t><tt>owner_id</tt>, <tt>claimed_at</tt>, <tt>last_seen_at</tt>, and <tt>went_offline_at</tt>
are cleared.</t>
          </li>
          <li>
            <t><tt>instance_id</tt>, <tt>device_class_id</tt>, and <tt>api_version</tt> are retained
for operational audit purposes (legitimate interest).</t>
          </li>
          <li>
            <t>The record MUST NOT appear in any Layer 2 query result.</t>
          </li>
        </ul>
        <t>An archived record that has not been re-activated by a new
registration within twelve (12) months of archival MUST be
permanently deleted.</t>
        <t><strong>Right to erasure</strong></t>
        <t>When a device owner submits an erasure request for a device
instance (or when the owner deletes their consumer account), APIX
MUST:</t>
        <ol spacing="normal" type="1"><li>
            <t>Clear <tt>owner_id</tt>, <tt>claimed_at</tt>, and all network address and
endpoint fields from the instance record.</t>
          </li>
          <li>
            <t>Revoke all agent delegations scoped to the device instance.</t>
          </li>
          <li>
            <t>Retain <tt>instance_id</tt>, <tt>device_class_id</tt>, <tt>api_version</tt>, and
presence activity timestamps for the minimum period required
by the operator's legitimate interest (audit trail, dispute
resolution). RECOMMENDED retention: 90 days from the erasure
request date, after which the record transitions to the standard
archived state.</t>
          </li>
        </ol>
        <t>The device's instance token is not affected by an erasure request.
The token is a device credential, not owner personal data. The
device MAY continue to send presence signals; however, without an
<tt>owner_id</tt> association the instance record will not appear in any
Layer 2 query until re-claimed.</t>
        <t>An erasure request does not affect device class records, which are
owned by the manufacturer and do not contain end-user personal data.</t>
      </section>
      <section anchor="device-instance-query-api">
        <name>Device Instance Query API</name>
        <t>Device instance queries give an authorised agent access to Layer 2 --
the private, per-principal view of device instances. All endpoints in
this section require authentication. The consumer token MUST carry the
<tt>devices.read</tt> scope. APIX enforces ownership boundaries at query time:
a principal MAY only retrieve instance records for devices they own or
have been explicitly delegated access to. Queries that would match
instances belonging to other principals MUST return an empty result,
not an error, to prevent ownership enumeration.</t>
        <t>The <tt>devices</tt> link in the Index root resource (defined in <xref target="APIX-CORE"/>)
provides the templated entry point to this API. Agents MUST follow this
link rather than constructing the URL independently.</t>
        <t><strong>Query endpoint:</strong></t>
        <artwork><![CDATA[
GET /devices?capability=home.appliance.dishwasher
            &online=true
            &api_version=1.2
            &page=1
            &page_size=20
Authorization: Bearer consumer-token-with-devices.read-scope
]]></artwork>
        <t><strong>Normative query parameters:</strong></t>
        <table>
          <thead>
            <tr>
              <th align="left">Parameter</th>
              <th align="left">Type</th>
              <th align="left">Default</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>capability</tt></td>
              <td align="left">string</td>
              <td align="left">—</td>
              <td align="left">Capability taxonomy term. Filters to instances of device classes declaring this capability</td>
            </tr>
            <tr>
              <td align="left">
                <tt>online</tt></td>
              <td align="left">boolean</td>
              <td align="left">—</td>
              <td align="left">
                <tt>true</tt>: online instances only. <tt>false</tt>: offline only. Absent: all instances</td>
            </tr>
            <tr>
              <td align="left">
                <tt>api_version</tt></td>
              <td align="left">string</td>
              <td align="left">—</td>
              <td align="left">Filter by manufacturer API version currently running on the instance</td>
            </tr>
            <tr>
              <td align="left">
                <tt>include_deprecated</tt></td>
              <td align="left">boolean</td>
              <td align="left">false</td>
              <td align="left">When <tt>true</tt>, results include instances of deprecated classes. Instances with <tt>reachable: false</tt> are excluded regardless of this parameter</td>
            </tr>
            <tr>
              <td align="left">
                <tt>page</tt></td>
              <td align="left">integer</td>
              <td align="left">1</td>
              <td align="left">Result page number</td>
            </tr>
            <tr>
              <td align="left">
                <tt>page_size</tt></td>
              <td align="left">integer</td>
              <td align="left">20</td>
              <td align="left">Results per page. Maximum: 100</td>
            </tr>
          </tbody>
        </table>
        <t><strong>Device Instance Summary (Level 1):</strong></t>
        <sourcecode type="json"><![CDATA[
{
  "instance_id": "di-f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "device_class_id": "dc-haustec-pro8-dishwasher",
  "device_class_name": "Haustec Pro 8 Dishwasher",
  "api_version": "1.2",
  "online": true,
  "last_seen_at": "2026-04-24T08:01:00Z",
  "_links": {
    "self": {
      "href": "https://apix.example.org/devices/di-f47ac1..."
    },
    "device_class": {
      "href": "https://apix.example.org/device-classes/dc-haustec-p8"
    }
  }
}
]]></sourcecode>
        <t>The fields <tt>reachable</tt> and <tt>class_lifecycle_stage</tt> are present only
when their value is non-default (<tt>reachable: false</tt>; <tt>class_lifecycle_stage</tt>
other than <tt>stable</tt>). Network addresses and resolved endpoint options
are not returned at Level 1. Agents retrieve them by fetching the
detail resource via the <tt>self</tt> link.</t>
        <t><strong>Device Instance Record (Level 2):</strong></t>
        <sourcecode type="json"><![CDATA[
{
  "instance_id": "di-f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "device_class_id": "dc-haustec-pro8-dishwasher",
  "device_class_name": "Haustec Pro 8 Dishwasher",
  "api_version": "1.2",
  "online": true,
  "endpoint_confidence": "ipv6",
  "last_seen_at": "2026-04-24T08:01:00Z",
  "network": {
    "ipv6": "2001:db8:85a3::8a2e:370:7334"
  },
  "api_endpoint": {
    "cloud_relay": "https://api.haustec.example/api/1.2/di-f47ac1",
    "direct_ipv6": "https://[2001:db8:85a3::8a2e:370:7334]/api/1.2/"
  },
  "owner_id": "usr-7e8a9b2c-1234-5678-90ab-cdef01234567",
  "claimed_at": "2026-01-10T10:00:00Z",
  "_links": {
    "self": {
      "href": "https://apix.example.org/devices/di-f47ac1..."
    },
    "device_class": {
      "href": "https://apix.example.org/device-classes/dc-haustec-p8"
    }
  }
}
]]></sourcecode>
        <t>The <tt>endpoint_confidence</tt> field governs which <tt>api_endpoint</tt> keys are
present in the record. When <tt>endpoint_confidence</tt> is <tt>"ipv6"</tt>, the
device provided a valid global unicast IPv6 address in its most recent
register signal; both <tt>api_endpoint.cloud_relay</tt> and
<tt>api_endpoint.direct_ipv6</tt> are present. <tt>direct_ipv6</tt> is the preferred
endpoint for agents on IPv6-capable networks as it avoids the
manufacturer's relay infrastructure.</t>
        <t>When <tt>endpoint_confidence</tt> is <tt>"ipv4_observed"</tt>, no IPv6 address was
provided; only <tt>api_endpoint.cloud_relay</tt> is present. APIX observes
the device's source IPv4 address internally for abuse detection and
geo-routing purposes but MUST NOT surface it in instance records:
the observed IPv4 is a NAT gateway address and is not a usable direct
endpoint.</t>
        <t><tt>api_endpoint.cloud_relay</tt> is always present when the manufacturer's
device class APM declares <tt>api_base_url</tt>; it is the mandatory fallback
for all <tt>endpoint_confidence</tt> values.</t>
        <t><strong>Device Instance Record (Level 2 — <tt>endpoint_confidence: "ipv4_observed"</tt>):</strong></t>
        <sourcecode type="json"><![CDATA[
{
  "instance_id": "di-a1b2c3d4-0001-0002-0003-000400050006",
  "device_class_id": "dc-haustec-pro8-dishwasher",
  "device_class_name": "Haustec Pro 8 Dishwasher",
  "api_version": "1.1",
  "online": true,
  "endpoint_confidence": "ipv4_observed",
  "last_seen_at": "2026-04-24T09:15:00Z",
  "api_endpoint": {
    "cloud_relay": "https://api.haustec.example/api/1.1/di-a1b2c3d4"
  },
  "owner_id": "usr-1a2b3c4d-5678-90ab-cdef-012345678901",
  "claimed_at": "2025-11-03T14:30:00Z",
  "_links": {
    "self": {
      "href": "https://apix.example.org/devices/di-a1b2c3d4..."
    },
    "device_class": {
      "href": "https://apix.example.org/device-classes/dc-haustec-p8"
    }
  }
}
]]></sourcecode>
        <t>No <tt>network</tt> object is present: the device did not report an IPv6
address and APIX does not surface the observed NAT gateway IPv4. Agents
MUST route all control traffic through <tt>api_endpoint.cloud_relay</tt> for
such instances.</t>
        <t>When a device transitions to offline, <tt>network</tt> addresses and
<tt>api_endpoint</tt> values are cleared from the instance record. An agent
that cached endpoint data from a previous online period MUST re-fetch
the instance record after a connection failure to obtain fresh
network addresses, as dynamic IP assignments may have changed.</t>
      </section>
      <section anchor="manufacturer-fleet-summary-api">
        <name>Manufacturer Fleet Summary API</name>
        <t>Manufacturers require aggregate visibility into the deployment status of their
device classes — for version migration planning, token rotation batch operations,
and protocol deprecation compliance. The Device Instance Query API is scoped to
device owners and their delegated agents; it does not serve the manufacturer's
operational needs.</t>
        <t>The Manufacturer Fleet Summary API exposes aggregate, per-class statistics to
the registering manufacturer. It MUST NOT return any per-instance data:
no <tt>instance_id</tt> values, no network addresses, no <tt>owner_id</tt> associations,
and no individual presence timestamps. Returning such data would constitute
a Layer 2 enumeration violation (Section 8.2).</t>
        <t><strong>Authentication:</strong> Requests MUST be authenticated using the manufacturer's
APIX API key, which is the same credential used for device class registration
updates and token management operations (Section 4.2). APIX MUST reject
requests whose API key does not match the registering organisation of the
requested device class.</t>
        <t><strong>Endpoint:</strong></t>
        <artwork><![CDATA[
GET https://apix.example.org/device-classes/{class_id}/fleet-summary
Authorization: APIX-Key {manufacturer-api-key}
]]></artwork>
        <t><strong>Response:</strong></t>
        <sourcecode type="json"><![CDATA[
{
  "class_id": "dc-haustec-pro8-dishwasher",
  "class_lifecycle_stage": "stable",
  "total_registered": 47832,
  "online_count": 31209,
  "unclaimed_count": 412,
  "api_version_distribution": {
    "1.0": 8201,
    "1.1": 15447,
    "1.2": 24184
  },
  "as_of": "2026-04-25T12:00:00Z"
}
]]></sourcecode>
        <table>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>total_registered</tt></td>
              <td align="left">Count of all instances of this class currently in the index, regardless of online status or ownership</td>
            </tr>
            <tr>
              <td align="left">
                <tt>online_count</tt></td>
              <td align="left">Instances that have sent a presence signal within the configured heartbeat timeout window</td>
            </tr>
            <tr>
              <td align="left">
                <tt>unclaimed_count</tt></td>
              <td align="left">Instances present in the index that have no <tt>owner_id</tt> association</td>
            </tr>
            <tr>
              <td align="left">
                <tt>api_version_distribution</tt></td>
              <td align="left">Map of manufacturer API version string to count of instances currently reporting that version. Values are sourced exclusively from device presence signals</td>
            </tr>
            <tr>
              <td align="left">
                <tt>as_of</tt></td>
              <td align="left">Timestamp of the aggregate computation. MAY be up to 15 minutes stale</td>
            </tr>
          </tbody>
        </table>
        <t>The <tt>online_count</tt> field is a scalar count only; it does not identify which
instances are online. An implementation MUST ensure that no derivation path
from fleet summary data can identify the presence or absence of any individual
device instance.</t>
      </section>
      <section anchor="agent-delegation">
        <name>Agent Delegation</name>
        <section anchor="delegation-model">
          <name>Delegation Model</name>
          <t>A device owner MAY delegate access to specific device instances to an
autonomous agent. Delegation is explicit, scoped, time-bounded, and
revocable. It does not expose the instance to any other agent and does
not modify the instance record visible to other principals.</t>
          <t>Delegation is distinct from consumer token issuance. A consumer token
identifies a principal (human or organisation). A delegation grant
authorises a specific agent, identified by its own consumer token, to
act on behalf of the owner for a defined set of operations on a defined
set of instances.</t>
        </section>
        <section anchor="delegation-scopes">
          <name>Delegation Scopes</name>
          <t>The following delegation scope values MUST be supported:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Scope</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>devices.read</tt></td>
                <td align="left">Read device instance records (Level 2) for delegated instances, including network addresses and <tt>api_endpoint</tt> fields</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>devices.presence</tt></td>
                <td align="left">Receive presence change notifications (online/offline transitions) for delegated instances via webhook</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>devices.command</tt></td>
                <td align="left">Authorised to call the manufacturer's device API on behalf of the owner, using the <tt>api_endpoint</tt> from the instance record</td>
              </tr>
            </tbody>
          </table>
          <t>Scopes are additive. A delegation grant MUST specify at least one scope.
<tt>devices.command</tt> MUST NOT be granted without also granting <tt>devices.read</tt>,
as command routing requires knowledge of the current <tt>api_endpoint</tt>.</t>
        </section>
        <section anchor="delegation-grant-api">
          <name>Delegation Grant API</name>
          <t>The owner creates a delegation grant via the APIX delegation endpoint:</t>
          <artwork><![CDATA[
POST /devices/{instance_id}/delegations
Authorization: Bearer owner-consumer-token
Content-Type: application/json

{
  "agent_token_id": "token_id of the agent's consumer token",
  "scopes": ["devices.read", "devices.command"],
  "expires_at": "ISO 8601 timestamp -- REQUIRED",
  "note": "human-readable description -- OPTIONAL"
}
]]></artwork>
          <t><tt>agent_token_id</tt> is the non-secret token identifier of the agent's
registered consumer token. The owner does not need to hold or transmit
the agent's token secret; the <tt>token_id</tt> is sufficient for APIX to
resolve the delegation at query time.</t>
          <t><tt>expires_at</tt> is REQUIRED. Perpetual delegation grants are not permitted.
Maximum delegation duration MUST be enforced by the index operator;
the RECOMMENDED maximum is 365 days. Owners SHOULD grant the minimum
duration sufficient for the agent's task.</t>
          <t>APIX MUST return the delegation grant identifier (<tt>delegation_id</tt>) in
the response. The owner uses <tt>delegation_id</tt> to list, inspect, and
revoke grants.</t>
        </section>
        <section anchor="delegated-agent-query">
          <name>Delegated Agent Query</name>
          <t>An agent that holds a valid delegation grant queries device instances
using its own consumer token:</t>
          <artwork><![CDATA[
GET /devices/{instance_id}
Authorization: Bearer agent-consumer-token
]]></artwork>
          <t>APIX MUST resolve the delegation at query time: if a valid, non-expired
delegation grant exists for the requesting <tt>token_id</tt> covering the
requested <tt>instance_id</tt> with the <tt>devices.read</tt> scope, APIX MUST return
the full Level 2 instance record as if the agent were the owner.</t>
          <t>If no valid delegation exists, APIX MUST return an empty result
(consistent with the enumeration prevention requirement in Section 6.2).</t>
        </section>
        <section anchor="delegation-revocation">
          <name>Delegation Revocation</name>
          <t>An owner revokes a delegation by calling:</t>
          <artwork><![CDATA[
DELETE /devices/{instance_id}/delegations/{delegation_id}
Authorization: Bearer owner-consumer-token
]]></artwork>
          <t>Revocation is immediate. Any in-flight agent request that has not yet
received a response at the time of revocation MUST return an empty
result. APIX MUST NOT return instance data to a revoked delegation.</t>
          <t>Delegation grants are also revoked automatically when:
- The delegation <tt>expires_at</tt> timestamp is reached
- The owner releases their ownership claim on the instance
- The agent's consumer token is revoked by the agent itself or by APIX
- The instance is placed in quarantine state (fleet circuit breaker)</t>
        </section>
        <section anchor="delegation-and-privacy">
          <name>Delegation and Privacy</name>
          <t>Delegation grants are personal data: they link a device owner identity
to an agent identity. They MUST be subject to the same data minimisation
and retention rules as other personal data in device instance records.
On receipt of a device owner erasure request, all delegation grants for
that owner's instances MUST be revoked and deleted.</t>
        </section>
      </section>
      <section anchor="open-questions">
        <name>Open Questions</name>
        <t>The following questions are unresolved and explicitly invited for community
input:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Human operator as a first-class entity in the IoT service chain</strong>:
This specification recognises two human roles: the device owner
(<tt>owner_id</tt>, a passive claimant) and the authorised human approver in
the LER dual-control protocol (Section 9). Neither constitutes a
first-class, addressable participant in the automated service chain.  </t>
            <t>
The AINS Internet-Draft (<xref target="I-D.vandemeent-ains-discovery"/>) defines a
"human" entity type whose identity is bound to the person rather than
to any device — a human operator who can be directly addressed within
an agent ecosystem, for example via a phone number, a push endpoint,
or a terminal identifier. This raises the question of whether APIX
IoT should formalise an equivalent concept: a <strong>Human Operator
Profile</strong> that allows an automated IoT service chain to include a
callable human participant as an official link.  </t>
            <t>
Concrete motivating scenarios include: an agent requiring human
confirmation before executing a high-impact device command; a device
entering a fault state that requires human attention before the
automated chain can continue; and regulatory human-oversight
requirements for AI-driven device control (such as those implied by
EU AI Act Article 50).  </t>
            <t>
The existing LER dual-control protocol demonstrates that APIX already
supports the human-in-the-loop pattern in a specific context. The open
question is whether this pattern should be generalised into a
first-class Human Operator entity type with its own presence,
delegation, and contact-endpoint semantics — and what the privacy,
GDPR, and contact-protocol implications of doing so would be. A future
Human Operator Profile is the candidate home for this work. Community
input is invited on the scope, contact protocol requirements, and
governance model for such a profile.</t>
          </li>
          <li>
            <t><strong>Device API call budget as a capability descriptor</strong>: Adjacent
discovery specifications introduce rate limit fields on registered
services and devices. This specification deliberately omits a rate
limit field. Rate limiting as a defence against malicious or
abusive callers is not a discovery-layer concern: APIX's trust model
(O-levels, S-levels, consumer token system) addresses bad actors
systemically at the index layer, and individual device registrations
MUST NOT be designed around the assumption of hostile consumers.
Surfacing a device-level rate limit as a security measure would
reintroduce the adversarial framing that APIX's trust model is
specifically designed to retire.  </t>
            <t>
There is, however, a distinct and legitimate use case that is
unrelated to security: <strong>agent workflow planning against hardware
constraints</strong>. A resource-constrained embedded device — limited
processor, limited memory, firmware-defined command queue — has a
physical maximum throughput that is a factual property of the
device class, no different from its <tt>supported_api_versions</tt> or
<tt>presence_mode</tt>. An agent orchestrating a multi-step workflow
across a fleet of such devices needs this information before
execution begins, not as a wall it discovers mid-run. A future
<tt>api_call_budget</tt> object on the device class APM — framed
explicitly as a <strong>capability descriptor</strong>, not a security
mechanism — could serve this planning use case. Example fields:
<tt>max_commands_per_minute</tt> (hardware ceiling), <tt>typical_response_ms</tt>
(planning latency), <tt>concurrent_command_limit</tt> (firmware queue
depth). Community input is invited on whether this capability
descriptor should be standardised in a future revision, and on the
correct schema to represent hardware-bound throughput constraints
without reintroducing defensive rate-limit semantics.</t>
          </li>
        </ol>
      </section>
      <section anchor="security-considerations">
        <name>Security Considerations</name>
        <section anchor="instance-token-security">
          <name>Instance Token Security</name>
          <t>Device instance tokens are long-lived secrets stored on constrained
hardware. Implementors MUST store tokens in hardware-backed secure
storage (secure enclave, TPM, or equivalent) where the device platform
supports it. Tokens MUST NOT be transmitted in log output, diagnostic
APIs, or any channel other than the APIX presence endpoint Authorization
header.</t>
          <t>The <tt>token_id</tt> is a non-secret correlation handle. It MAY be logged
and MAY appear in diagnostic interfaces without security risk.</t>
        </section>
        <section anchor="layer-2-enumeration-prevention">
          <name>Layer 2 Enumeration Prevention</name>
          <t>APIX MUST return an empty result set (not HTTP 404 or HTTP 403) for
authenticated queries that would match instances belonging to other
principals. An attacker with a valid consumer token MUST NOT be able
to determine whether a given <tt>instance_id</tt> or <tt>device_class_id</tt> exists
in the system by observing error responses.</t>
        </section>
        <section anchor="hub-compromise-scope">
          <name>Hub Compromise Scope</name>
          <t>A compromised hub instance can misrepresent the state (online status,
<tt>api_version</tt>, <tt>hub_gateway_endpoint</tt>) of devices it genuinely controls.
It cannot forge presence signals for devices whose instance tokens it
does not hold. The blast radius of a hub compromise is bounded to the
set of devices paired to that hub. This is a smaller blast radius than
<tt>cloud_relay</tt> compromise, where the manufacturer's cloud holds all
fleet tokens.</t>
        </section>
        <section anchor="presence-signal-replay">
          <name>Presence Signal Replay</name>
          <t>APIX MUST enforce that presence signals are processed at-most-once
within the heartbeat window. Duplicate signals within the same
<tt>heartbeat_interval_seconds</tt> window MUST be idempotently accepted
(no state change) rather than counted as separate registrations.</t>
        </section>
        <section anchor="physical-device-privacy">
          <name>Physical Device Privacy</name>
          <t>The two-layer model (Section 3) is a security requirement, not only
a privacy preference. Index implementations MUST enforce it at the
infrastructure layer. Returning instance-level data to unauthenticated
queries is a critical vulnerability, not a configuration error.</t>
        </section>
        <section anchor="apix-as-a-high-value-attack-target">
          <name>APIX as a High-Value Attack Target</name>
          <t>APIX occupies a structurally unique position: it is the single presence
endpoint for potentially millions of physical devices and holds the
mapping between device identifiers, network addresses, and owner
identities at global scale. A full compromise of the APIX index is
not a data breach in the conventional sense — it is a global occupancy
intelligence leak combined with the ability to disable an arbitrary set
of connected devices by mass-revoking their instance tokens. This threat
profile requires architectural mitigations beyond standard application
security.</t>
          <t>APIX implementations MUST satisfy the following architectural
requirements:</t>
          <ul spacing="normal">
            <li>
              <t>The presence endpoint (which receives device signals) MUST be
architecturally separated from the token store. A compromise of
the presence endpoint infrastructure MUST NOT yield access to the
token hash store or the Layer 2 owner-to-network-address mappings.</t>
            </li>
            <li>
              <t>APIX MUST NOT store plaintext device instance tokens at any point
in the live system. Only the SHA-256 hash of each token is stored,
as specified in Section 3. Hash storage and the presence endpoint
MUST run in separate trust boundaries.</t>
            </li>
            <li>
              <t>Token issuance (the process by which new tokens are generated and
delivered to manufacturers) MUST be performed in an air-gapped or
hardware-security-module (HSM) isolated process. Token issuance
infrastructure MUST NOT be reachable from the public internet.</t>
            </li>
            <li>
              <t>The presence endpoint MUST be geographically distributed across
independent infrastructure regions. No single region outage or
compromise MUST affect global device presence signalling.</t>
            </li>
            <li>
              <t>All administrative operations that affect token validity (revocation,
suspension, fleet circuit breaker actions) MUST be recorded in a
tamper-evident append-only audit log. This log MUST be replicated
to at least two geographically separate locations. Log entries MUST
be individually signed.</t>
            </li>
            <li>
              <t>APIX MUST publish an annual infrastructure security report disclosing
the number of tokens issued, rotated, and revoked; the number of
presence signals processed; and any confirmed security incidents.</t>
            </li>
          </ul>
        </section>
        <section anchor="fleet-circuit-breaker">
          <name>Fleet Circuit Breaker</name>
          <t>An emergency mechanism MUST be available to index operators to quarantine
a compromised manufacturer fleet or a rogue device class at the index
layer, without requiring physical access to the affected devices.</t>
          <t>Two distinct compromise scenarios are addressed:</t>
          <t><strong>Scenario A — Manufacturer systems compromised.</strong> An adversary has
gained access to the manufacturer's cloud infrastructure and is forging
presence signals on behalf of real devices (false liveness, false
network addresses, false api_version). The appropriate response is to
suspend the manufacturer account and revoke all fleet tokens for the
affected device classes, following the same atomic four-step procedure
defined for sanctions suspension in <xref target="APIX-CORE"/>. Token revocation
MUST trigger HTTP 401 <tt>token_revoked</tt> at the presence endpoint, and all
affected instances MUST be marked offline immediately.</t>
          <t><strong>Scenario B — Devices themselves are weaponised.</strong> The physical devices
are operating normally from the device credential perspective (valid
tokens, authentic presence signals) but are under adversary control
and are being used maliciously. In this scenario, revoking device tokens
would brick legitimate consumer devices without stopping the threat. The
appropriate response is presence signal suppression without token
revocation:</t>
          <t>APIX MUST support a quarantine state for individual device instances or
entire device classes. In quarantine state:</t>
          <ul spacing="normal">
            <li>
              <t>Presence signals from quarantined instances MUST continue to be
accepted at the presence endpoint. The device is unaware of the
quarantine; presence processing appears normal.</t>
            </li>
            <li>
              <t><tt>api_endpoint</tt> fields MUST be withheld from all Layer 2 query
responses for quarantined instances. The consuming agent receives
an instance record showing the device as online but with no
reachable endpoint. No agent can connect to the device through
APIX.</t>
            </li>
            <li>
              <t>Quarantined instances MUST be excluded from Layer 1 capability
searches, as if <tt>lifecycle_stage</tt> were <tt>end_of_life</tt>.</t>
            </li>
            <li>
              <t>The quarantine state MUST be reversible. When the quarantine is
lifted, <tt>api_endpoint</tt> fields are restored and the instance returns
to normal Layer 2 visibility.</t>
            </li>
            <li>
              <t>All presence signals received while an instance is quarantined
MUST be logged with enhanced detail (source IP, signal content,
timing) and retained for a minimum of twelve (12) months for law
enforcement purposes.</t>
            </li>
          </ul>
          <t>The fleet circuit breaker MUST be operable at three scopes:
<tt>instance</tt> (single device), <tt>device_class</tt> (all instances of a class),
and <tt>manufacturer</tt> (all classes and instances under an organisation
account). The scope MUST be explicitly declared in the activation
record. Activation MUST require authorisation from at least two
independent APIX operator roles (dual-control requirement).</t>
        </section>
        <section anchor="law-enforcement-cooperation-interface">
          <name>Law Enforcement Cooperation Interface</name>
          <t>APIX MUST provide a Law Enforcement Request (LER) interface: a
restricted-access channel through which authorised public authorities
may submit IP addresses of device instances identified as members of a
malicious botnet, together with a suppression action request.</t>
          <t><strong>Accepted jurisdictions:</strong></t>
          <t>Two authority tiers are defined. Tier I covers supranational judicial
instruments; Tier II covers national law enforcement requests. Both tiers
require a judicial authorisation document. Administrative orders without
judicial oversight MUST NOT be accepted at either tier.</t>
          <t><em>Tier I — Supranational (automatically accepted):</em></t>
          <t>Orders and provisional measures issued by the <strong>International Court of
Justice (ICJ)</strong> are accepted automatically and are not subject to the
Accepted Jurisdiction Whitelist. The ICJ is the principal judicial organ
of the United Nations (ICJ Statute, June 1945). Its provisional measures
under Article 41 of the ICJ Statute are legally binding on states and
represent the highest-authority legal instrument available for
cross-jurisdictional cases where no single national court has clear
competence over a multi-state botnet operation. An LER citing a verified
ICJ provisional measure or final judgment MUST be processed within 4
hours of receipt and is not subject to the 72-hour provisional reversal
window; the suppression remains in force for the duration stated in the
ICJ instrument.</t>
          <t><em>Tier II — National law enforcement (whitelist-governed):</em></t>
          <t>The LER interface MUST only accept requests from public authorities in
jurisdictions that satisfy ALL of the following criteria:</t>
          <ul spacing="normal">
            <li>
              <t>The jurisdiction has ratified the Budapest Convention on Cybercrime,
OR is the domicile jurisdiction of the APIX governing body (currently
Switzerland).</t>
            </li>
            <li>
              <t>The request is accompanied by a valid judicial authorisation document:
a court order, magistrate warrant, or equivalent judicial instrument
issued by a court of competent jurisdiction in the requesting state.</t>
            </li>
            <li>
              <t>The jurisdiction is included in the governing body's Accepted
Jurisdiction Whitelist, maintained as a public document and updated
by governing body board decision.</t>
            </li>
          </ul>
          <t><strong>Jurisdiction Contact Registry:</strong></t>
          <t>The governing body MUST maintain a Jurisdiction Contact Registry (JCR)
as part of the APIX operational infrastructure. The JCR is established
during system ramp-up, before the LER interface is opened for
submissions. A jurisdiction MUST NOT be added to the Accepted
Jurisdiction Whitelist until all three mandatory contact roles have
been confirmed for that jurisdiction.</t>
          <t>Three contact roles MUST be registered per Tier II jurisdiction:</t>
          <t><em>Operational contact</em> — the national authority responsible for
submitting LERs: typically the national cybercrime unit, CERT, or
equivalent law enforcement body with cybercrime mandate (e.g.,
Bundeskriminalamt in Germany, ANSSI in France, FBI Cyber Division in
the United States). This contact submits LER requests and provides
the IP address lists.</t>
          <t><em>Judicial contact</em> — the authority responsible for obtaining and
validating judicial authorisation: the Ministry of Justice, Attorney
General, Prosecutor General, or equivalent government legal division
with authority to commission court orders in the requesting
jurisdiction. This contact is the issuing or co-signing party for
the judicial authorisation document accompanying each LER. Including
the judicial/legal division of government in the contact structure
is REQUIRED — law enforcement submission without a validated judicial
pathway is insufficient to activate the LER process.</t>
          <t><em>Emergency contact</em> — a named duty officer or on-call role reachable
24 hours a day, 7 days a week, for Tier I (ICJ) and emergency
provisional national requests. MUST be distinct from the operational
contact and MUST have authority to act on behalf of the jurisdiction
without waiting for business-hours approval.</t>
          <t>For the <strong>ICJ (Tier I)</strong>, the governing body MUST establish contacts
with the following bodies during system ramp-up:</t>
          <ul spacing="normal">
            <li>
              <t><strong>ICJ Registry (Greffe de la Cour)</strong>: the administrative organ of
the Court, responsible for receiving and communicating all
instruments. Contact for standard ICJ instrument submission.</t>
            </li>
            <li>
              <t><strong>President's Office of the ICJ</strong>: the authority responsible for
ordering provisional measures under Article 41. Contact for
time-critical ICJ provisional measure cases requiring 4-hour
processing.</t>
            </li>
          </ul>
          <t>The governing body MUST formally notify each registered contact of
the following at initial establishment and whenever the LER framework
is materially updated:</t>
          <ol spacing="normal" type="1"><li>
              <t>The existence and purpose of the LER interface.</t>
            </li>
            <li>
              <t>The legal basis under which APIX operates (Swiss Stiftung, Budapest
Convention obligations, applicable data protection law).</t>
            </li>
            <li>
              <t>The contact's specific role in the LER process and what actions
are expected of them.</t>
            </li>
            <li>
              <t>The APIX operational security contact and escalation path.</t>
            </li>
            <li>
              <t>The jurisdiction's reference code in the JCR, to be cited in all
LER submissions from that jurisdiction.</t>
            </li>
          </ol>
          <t>The governing body MUST review and re-confirm all JCR contacts at
least annually. Contacts that cannot be confirmed MUST be flagged;
the associated jurisdiction MUST be placed in suspended status on the
Accepted Jurisdiction Whitelist until confirmed contacts are restored.
A jurisdiction in suspended status MUST NOT submit new LERs; active
suppressions from that jurisdiction remain in force.</t>
          <t><strong>Process tiers:</strong></t>
          <table>
            <thead>
              <tr>
                <th align="left">Tier</th>
                <th align="left">Authorisation required</th>
                <th align="left">Processing time</th>
                <th align="left">Effect</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">ICJ instrument</td>
                <td align="left">Verified ICJ provisional measure or judgment</td>
                <td align="left">MUST be processed within 4 hours</td>
                <td align="left">Fleet circuit breaker per instrument scope; no 72-hour reversal window</td>
              </tr>
              <tr>
                <td align="left">Emergency provisional (national)</td>
                <td align="left">Written agency declaration with case reference; judicial authorisation to follow within 72 hours</td>
                <td align="left">MUST be processed within 4 hours of receipt</td>
                <td align="left">Fleet circuit breaker Scenario B (endpoint suppression); full review opens automatically</td>
              </tr>
              <tr>
                <td align="left">Standard (national)</td>
                <td align="left">Verified judicial authorisation document</td>
                <td align="left">MUST be processed within 48 hours of verification</td>
                <td align="left">Fleet circuit breaker action per request scope</td>
              </tr>
              <tr>
                <td align="left">Refusal</td>
                <td align="left">Authorisation absent, invalid, jurisdiction suspended in JCR, or contact roles not established</td>
                <td align="left">N/A</td>
                <td align="left">Request refused; attempt logged; aggregate count included in transparency report</td>
              </tr>
            </tbody>
          </table>
          <t>A national emergency provisional suppression that is not followed by
verified judicial authorisation within 72 hours MUST be automatically
reversed. The governing body MUST notify both the operational contact
and the judicial contact of the reversal. ICJ-based suppressions are
not subject to automatic reversal; they run for the duration specified
in the ICJ instrument.</t>
          <t><strong>LER submission protocol:</strong></t>
          <t>The LER interface is a restricted-access HTTPS endpoint. It is not publicly
documented or reachable from the open internet. Access is limited to network
addresses registered for the jurisdiction's operational contact in the JCR.</t>
          <t><em>Authentication:</em> LER submissions MUST use mutual TLS (mTLS). Each registered
operational contact is issued a client certificate by the APIX governing body
at the time their jurisdiction is onboarded to the JCR. The certificate is
scoped to the submitting jurisdiction's reference code. Certificate issuance
and renewal is the governing body's operational responsibility.</t>
          <t>Each JCR contact record MUST include a <tt>preferred_language</tt> field: a single
BCP 47 language tag (<xref target="RFC5646"/>) indicating the language in which APIX
conducts the voice callback verification with that contact. APIX MUST use this
language for all spoken exchanges during the callback procedure, including
reading the APIX TAN and requesting the personal verification code and uploader
auth TAN. If the contacted person responds in a different language, APIX MUST
treat this as an anomaly and log it, but MUST NOT reject the callback on
language grounds alone. Example values: <tt>"de"</tt> for Bundeskriminalamt,
<tt>"en"</tt> for FBI Cyber Division, <tt>"fr"</tt> for ANSSI.</t>
          <t><em>In-jurisdiction dual authorisation:</em> Each jurisdiction MUST register at least
two named operational contacts in the JCR, each holding an independently issued
client certificate. A single individual MUST NOT hold both certificates; APIX
MUST enforce this by verifying that the countersigning contact's certificate
subject is distinct from the submitting contact's certificate subject.</t>
          <t>A valid LER submission MUST be countersigned by a second registered contact
from the same jurisdiction before it enters the human review queue. The
protocol uses a two-step commit:</t>
          <ol spacing="normal" type="1"><li>
              <t>The primary contact submits the LER via their authenticated mTLS connection.
The submission is recorded with status <tt>pending_countersign</tt> and no review
is initiated.</t>
            </li>
            <li>
              <t>A second registered contact from the same jurisdiction MUST authenticate
via their own mTLS certificate and issue a countersign request referencing
the <tt>ler_id</tt> returned in the initial submission response. The countersign
window is 60 minutes for standard and ICJ tier; 20 minutes for
<tt>emergency_provisional</tt> tier.</t>
            </li>
            <li>
              <t>If the countersign is not received within the window, the submission MUST be
automatically rejected and logged with reason <tt>countersign_timeout</tt>. No
review is initiated and no suppression is applied.</t>
            </li>
            <li>
              <t>For <tt>emergency_provisional</tt> tier, the 4-hour processing commitment runs
from the timestamp of the countersign, not the initial submission.</t>
            </li>
          </ol>
          <t><em>Submission endpoint:</em></t>
          <t>The LER interface endpoint URL is not publicly published. It is
communicated to each jurisdiction's registered operational contact
as part of the JCR onboarding process. The interface requirements
are:</t>
          <artwork><![CDATA[
POST <ler-endpoint-url>
Authorization: mTLS client certificate (jurisdiction contact)
Content-Type: application/json
]]></artwork>
          <t>The <tt>&lt;ler-endpoint-url&gt;</tt> is operator-specific and MUST NOT be
discoverable from the public Index API. Implementations MUST ensure
the LER endpoint is not reachable from network addresses outside
those registered for the jurisdiction's operational contact in the JCR.</t>
          <t><em>Request format:</em></t>
          <sourcecode type="json"><![CDATA[
{
  "jurisdiction_ref": "JCR reference code -- issued by APIX",
  "tier": "emergency_provisional | standard | icj",
  "judicial_ref": "court order or ICJ instrument reference number",
  "judicial_doc_url": "HTTPS URL -- APIX-verifiable document",
  "case_ref": "internal case reference of the submitting authority",
  "device_addresses": [
    {"type": "ipv4", "address": "203.0.113.42"},
    {"type": "ipv6", "address": "2001:db8::1"}
  ],
  "requested_scope": "instance | device_class | manufacturer",
  "requested_duration_hours": 168,
  "emergency_declaration": "tier: emergency_provisional only"
}
]]></sourcecode>
          <t><tt>device_addresses</tt> MUST contain at least one entry. Bulk requests without
specific device addresses (e.g., "all devices in jurisdiction X") MUST be
refused per the Non-Surveillance Commitment in <xref target="APIX-CORE"/> Section 5.</t>
          <t><tt>requested_duration_hours</tt> is advisory. APIX MUST apply the suppression for
the duration specified in the judicial instrument if it differs. For
<tt>emergency_provisional</tt>, the suppression is automatically reversed after 72
hours unless judicial authorisation is verified (Section above).</t>
          <t><em>Response format:</em></t>
          <sourcecode type="json"><![CDATA[
{
  "ler_id": "APIX-assigned unique LER identifier",
  "status": "accepted | refused | pending_countersign | ...",
  "estimated_processing_seconds": 14400,
  "refusal_reason": "null | invalid_jurisdiction | ... (see spec)",
  "apix_tan": "one-time code (pending_countersign only; null)",
  "uploader_auth_tan": "one-time code (countersign only; null)"
}
]]></sourcecode>
          <t><tt>ler_id</tt> is the only external reference APIX issues for an LER case. It MUST
be used in all subsequent communications about the case and is included in the
annual transparency report aggregate statistics.</t>
          <t><tt>apix_tan</tt> and <tt>uploader_auth_tan</tt> are one-time codes generated per submission
and returned only in the initial POST response when the submission is accepted
for the countersign step. They are shown once and never again.</t>
          <t>APIX MUST NOT provide any endpoint or mechanism to retrieve the TAN values
after the initial POST response. The fields MUST be absent — not null, not
redacted — from all subsequent API responses including LER status queries,
countersign responses, and any other interface. No GET path to TAN values
exists. This follows the same principle as one-time API key generation: if the
recipient does not retain the values from the initial response, they are
permanently unavailable.</t>
          <t>Both codes expire upon completion of any verification exchange in which
credentials are requested from the contacted person, regardless of whether
the exchange results in confirmation or failure. An unanswered call attempt
does not constitute a verification exchange and does not consume the codes.
A new submission generates new codes; expired codes cannot be reissued for
the same <tt>ler_id</tt>.</t>
          <t>APIX MUST store both codes internally in a form that permits verification
during the callback (hashed) but does not expose plaintext values through
any interface after the initial POST response.</t>
          <t><em>Countersign endpoint:</em></t>
          <t>The second registered contact MUST submit the countersign via an authenticated
request to the same LER interface:</t>
          <artwork><![CDATA[
POST <ler-endpoint-url>/countersign
Authorization: mTLS client certificate (second jurisdiction contact)
Content-Type: application/json
]]></artwork>
          <sourcecode type="json"><![CDATA[
{
  "ler_id": "APIX-assigned LER identifier (initial submission)",
  "countersign_statement": "confirmation statement (see spec)"
}
]]></sourcecode>
          <t>Response:</t>
          <sourcecode type="json"><![CDATA[
{
  "ler_id": "...",
  "status": "countersigned | rejected",
  "rejection_reason": "null | window_expired | same_contact | ..."
}
]]></sourcecode>
          <t>On <tt>countersigned</tt> status, the submission transitions to the callback
verification step (see below). On <tt>rejected</tt>, the submission is terminated and
MUST be re-submitted from the beginning.</t>
          <t><em>Submission callback verification:</em></t>
          <t>After countersign is confirmed and before the submission enters the human
review queue, APIX MUST perform a voice callback to the jurisdiction's
registered operational contact. The callback uses three independent
verification elements:</t>
          <ul spacing="normal">
            <li>
              <t><strong>APIX TAN</strong> — a one-time code returned in the initial submission response.
APIX reads this to the contacted person at the start of the call, proving
the caller is the legitimate APIX system.</t>
            </li>
            <li>
              <t><strong>Personal verification code</strong> — a standing secret established per
registered contact during JCR onboarding, known only to that individual and
APIX. This code is never transmitted via any API or electronic channel.</t>
            </li>
            <li>
              <t><strong>Uploader auth TAN</strong> — a one-time code returned in the initial submission
response alongside the APIX TAN. The contacted person reads this back to
APIX, binding the answering individual to the specific submission.</t>
            </li>
          </ul>
          <t>APIX MUST require both the personal verification code and the uploader auth
TAN together in a single exchange. Neither alone constitutes confirmation.</t>
          <t>The callback procedure is:</t>
          <ol spacing="normal" type="1"><li>
              <t>APIX retrieves the stored callback number from the JCR record for the
submitting jurisdiction.</t>
            </li>
            <li>
              <t>Immediately before initiating the callback (within 5 minutes of countersign
confirmation), APIX MUST re-validate the stored number against the
independent authoritative public source established at onboarding time.</t>
            </li>
            <li>
              <t>If the stored number does not match the current public record, APIX MUST
NOT call either number. The submission MUST be immediately suspended and
an incident procedure initiated. No suppression is applied during
suspension. The submission remains suspended until the incident is
resolved and the callback number is re-established with confidence.</t>
            </li>
            <li>
              <t>If the stored number matches the current public record, APIX initiates the
call to the stored number and reads the APIX TAN. This allows the contacted
person to verify they are speaking to the legitimate APIX system before
providing any credential.</t>
            </li>
            <li>
              <t>APIX then requests, in a single exchange: the contacted person's full name,
personal verification code, and uploader auth TAN.</t>
            </li>
            <li>
              <t>APIX verifies all three against its stored records. Any mismatch on any
element MUST result in immediate termination of the call. No partial
credit applies. The failure mode then determines the disposition (see
below).</t>
            </li>
            <li>
              <t>If the call is not answered on the first attempt, APIX MUST make one
further attempt before permanently rejecting the submission. Two
unanswered attempts exhaust the callback allowance. If the contact
answers and a verification exchange begins, no further attempt is
permitted regardless of outcome — the exchange result is final. If the
contacted person explicitly denies any knowledge of the submission, the
LER is permanently rejected with reason <tt>callback_verification_failed</tt>
(see below).</t>
            </li>
          </ol>
          <t>Callback failure dispositions differ by cause and MUST be handled distinctly:</t>
          <t><tt>callback_verification_failed</tt> — operational failure, permanent rejection:
Triggered when credential verification fails (wrong or absent uploader auth
TAN or personal verification code), when the call is not answered after two
attempts, or when the contact denies the submission. The LER is permanently
rejected. This is not a security event: no Security Officer escalation is
initiated. The jurisdiction MUST file a new LER; the rejected <tt>ler_id</tt> cannot
be recovered. Logged as operational failure.</t>
          <t><tt>callback_number_mismatch</tt> — security event, submission suspended:
Triggered when the stored callback number does not match the current public
record at re-validation time (step 2 above). The submission is suspended
pending incident resolution. Security Officer is notified. No suppression
is applied. The submission remains suspended until the callback number is
re-established with confidence and the incident is closed.</t>
          <t><tt>callback_interception_reported</tt> — confirmed security incident, submission
suspended: Triggered when the contacted person reports having already received
a call from a party claiming to be APIX before this call. The submission is
immediately suspended. The Security Officer and a governing body board member MUST be
notified. The incident is treated as a confirmed attempt to compromise the LER
verification process and handled under the security incident response procedure
in <xref target="APIX-CORE"/> Section 12.</t>
          <t>The callback confirmation is a mandatory pre-condition for entering the human
review queue. It does not substitute for the human review and dual-control
activation procedure.</t>
          <t>APIX MUST NOT acknowledge by any means that a suppression is active on a
specific device or instance when responding to queries from parties other than
the submitting jurisdiction. Device owner queries for affected instances MUST
receive responses indistinguishable from an offline or unreachable instance.</t>
          <t><strong>Audit logging obligations:</strong></t>
          <t>Every event in the LER lifecycle MUST be written to the tamper-evident
audit log defined in <xref target="APIX-CORE"/> Section 12. Log entries MUST be
individually signed and immutable. The following events are individually
logged:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Event</th>
                <th align="left">Logged fields</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">LER received</td>
                <td align="left">
                  <tt>ler_id</tt>, timestamp, jurisdiction_ref, tier, device_addresses count, receiving operator identity</td>
              </tr>
              <tr>
                <td align="left">Countersign received</td>
                <td align="left">
                  <tt>ler_id</tt>, timestamp, countersigning contact certificate subject (distinct from submitting contact), window elapsed</td>
              </tr>
              <tr>
                <td align="left">Countersign timeout</td>
                <td align="left">
                  <tt>ler_id</tt>, timestamp, window duration, disposition (auto-rejected)</td>
              </tr>
              <tr>
                <td align="left">Callback number validated</td>
                <td align="left">
                  <tt>ler_id</tt>, timestamp, stored number hash, public record hash, match result (match / mismatch)</td>
              </tr>
              <tr>
                <td align="left">Callback phone mismatch — <tt>callback_number_mismatch</tt></td>
                <td align="left">
                  <tt>ler_id</tt>, timestamp, stored number hash, public record hash, incident_id; disposition: suspended</td>
              </tr>
              <tr>
                <td align="left">Callback confirmed</td>
                <td align="left">
                  <tt>ler_id</tt>, timestamp, attempt count, name match (boolean), personal code match (boolean), uploader auth TAN match (boolean), governing body operator identity (caller)</td>
              </tr>
              <tr>
                <td align="left">Callback rejected — <tt>callback_verification_failed</tt></td>
                <td align="left">
                  <tt>ler_id</tt>, timestamp, attempt count, cause (credential_mismatch / no_answer / contact_denied), failed element if credential_mismatch (name / personal_code / uploader_auth_tan — do not log the submitted value); disposition: permanently rejected, no escalation</td>
              </tr>
              <tr>
                <td align="left">Callback suspended — <tt>callback_interception_reported</tt></td>
                <td align="left">
                  <tt>ler_id</tt>, timestamp, governing body operator identity (caller), contact statement summary; disposition: suspended, Security Officer + board member notified</td>
              </tr>
              <tr>
                <td align="left">LER refused</td>
                <td align="left">
                  <tt>ler_id</tt>, timestamp, refusal_reason, reviewing operator identity</td>
              </tr>
              <tr>
                <td align="left">Suppression activated</td>
                <td align="left">
                  <tt>ler_id</tt>, timestamp, scope, device instance count affected, authorising operator identities (both, per dual-control)</td>
              </tr>
              <tr>
                <td align="left">Suppression reversed</td>
                <td align="left">
                  <tt>ler_id</tt>, timestamp, reason (72h expiry / judicial doc not verified / operator decision), reversing operator identity</td>
              </tr>
              <tr>
                <td align="left">Review completed</td>
                <td align="left">
                  <tt>ler_id</tt>, timestamp, reviewer identity, decision (confirmed / escalated / reversed), notes</td>
              </tr>
            </tbody>
          </table>
          <t>The audit log MUST be the system of record for all LER activity. The
annual transparency report derives its aggregate statistics from it;
the log is the authoritative source and MUST be retained for a minimum
of seven (7) years from the date of each entry.</t>
          <t><strong>Human authorisation and review:</strong></t>
          <t>APIX MUST NOT activate a suppression through a purely automated path.
Every suppression activation requires human authorisation and post-hoc
review by a named, accountable operator. The requirements differ by tier:</t>
          <t><em>Standard and ICJ tiers:</em></t>
          <ol spacing="normal" type="1"><li>
              <t>Upon receipt of a valid LER submission (certificate valid, format
valid, jurisdiction in accepted whitelist), the submission enters a
human review queue. No suppression is active at this point.</t>
            </li>
            <li>
              <t>A designated LER reviewer (a named APIX operator with the <tt>ler_review</tt>
role) MUST read the submission and the referenced judicial document
before authorising activation.</t>
            </li>
            <li>
              <t>Activation MUST follow the dual-control requirement of the fleet
circuit breaker (<xref target="APIX-CORE"/> Section 12): two independent
operators with the <tt>ler_activate</tt> role MUST independently confirm
before suppression is applied. Neither operator may be the same
individual who reviewed the submission.</t>
            </li>
            <li>
              <t>The activation record in the audit log MUST include the identities
of both activating operators and the timestamp of each confirmation.</t>
            </li>
            <li>
              <t>A post-activation review MUST be completed within 72 hours by a
third operator (the LER oversight role) confirming that the
activation was lawful, proportionate, and consistent with the
judicial instrument scope. The review outcome MUST be recorded
in the audit log.</t>
            </li>
          </ol>
          <t><em>Emergency provisional tier (4-hour window):</em></t>
          <t>The 4-hour processing commitment creates time pressure. The following
modified procedure applies:</t>
          <ol spacing="normal" type="1"><li>
              <t>Automated validation on receipt: certificate valid, jurisdiction in
whitelist, emergency declaration field present, at least one
device address specified. If validation passes, the submission
immediately enters the emergency queue with an alert to the
on-call LER reviewer.</t>
            </li>
            <li>
              <t>The on-call LER reviewer MUST authorise activation within 4 hours.
Activation requires only one authorising operator (single-control)
in this tier due to the time constraint.</t>
            </li>
            <li>
              <t>A second operator MUST complete a dual-control confirmation within
24 hours of activation. If the second confirmation is not received
within 24 hours, the suppression MUST be automatically reversed.</t>
            </li>
            <li>
              <t>The post-activation oversight review (step 5 above) MUST be
completed within 24 hours of activation (not 72 hours) for
emergency provisional cases.</t>
            </li>
            <li>
              <t>Judicial authorisation MUST be verified within 72 hours (the
automatic reversal window). If the judicial document review
confirms the authorisation is invalid or the scope is exceeded,
the suppression MUST be reversed immediately regardless of the
dual-control confirmation in step 3.</t>
            </li>
          </ol>
          <t><strong>Operator role structure:</strong></t>
          <t>The following named operator roles MUST be defined and staffed in the
APIX operating model. No individual MUST hold more than two of these
roles simultaneously (segregation of duties):</t>
          <table>
            <thead>
              <tr>
                <th align="left">Role</th>
                <th align="left">Responsibility</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>ler_reviewer</tt></td>
                <td align="left">Reviews LER submissions and judicial documents before authorisation. May not activate.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>ler_activate</tt></td>
                <td align="left">Provides one of the two required authorisation confirmations for activation. May not review the same submission.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>ler_oversight</tt></td>
                <td align="left">Performs post-activation review. Must be independent of both reviewer and activating operators for the case under review.</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>ler_emergency</tt></td>
                <td align="left">On-call role, 24/7. Holds both <tt>ler_reviewer</tt> and single-control <tt>ler_activate</tt> authority for emergency provisional tier only.</td>
              </tr>
            </tbody>
          </table>
          <t>Role assignments MUST be published in the governing body's annual security report.
Changes to role assignments MUST be logged in the audit log.</t>
          <t>Any operator who receives an instruction — from any source, including
governing body board members — to activate a suppression outside this procedure
MUST refuse and MUST exercise the whistleblower protection right
defined in <xref target="APIX-CORE"/> Section 12. This right is not waivable by
role, contract, or board resolution.</t>
          <t><strong>Suppression effect:</strong></t>
          <t>LER-triggered suppression follows the fleet circuit breaker Scenario B
model: presence signals continue to be accepted (the adversary controlling
the botnet has no signal of identification), while <tt>api_endpoint</tt> fields
are withheld from Layer 2 responses. The suppression scope is specified
by the requesting authority as a list of device IPv4 and/or IPv6
addresses; APIX matches these against active presence signal source
addresses.</t>
          <t>APIX MUST NOT disclose to any party other than the requesting authority
that a specific device instance is under LER-triggered suppression.
Device owners querying their instance records MUST receive the same
response as for any offline or unreachable instance; the suppression
reason MUST NOT be disclosed.</t>
          <t><strong>Transparency:</strong></t>
          <t>APIX MUST publish aggregate LER statistics in its annual transparency
report, disclosing: number of LER requests received by requesting
jurisdiction, number accepted, number refused, number of provisional
suppressions reversed, and number of device instances affected (by
jurisdiction, not by individual identity). No individual case details,
case references, or device identifiers MAY appear in the transparency
report.</t>
        </section>
        <section anchor="bad-bot-graduated-response">
          <name>Bad-Bot Graduated Response</name>
          <t>APIX MUST maintain a Bad-Bot Registry: a classified list of device
instance identifiers and consumer token identifiers that have been
confirmed as operating maliciously. Sources for registry entries include:
LER submissions (Section 5.7), manufacturer abuse reports, and APIX
operator investigation of anomalous signal patterns (e.g., rapid
multi-instance registration from a single IP, heartbeat flooding, or
token reuse patterns inconsistent with legitimate device operation).</t>
          <t>Three response tiers are defined. The active tier for each registry
entry MUST be explicitly recorded in the Bad-Bot Registry and MUST be
changeable by operator action.</t>
          <t><strong>Tier 1 — <tt>observe</tt></strong> (investigation in progress; entry not yet
confirmed hostile or confirmation is recent):</t>
          <ul spacing="normal">
            <li>
              <t>Presence endpoint: Accept signal normally. Instance record updated.
HTTP 200 returned. No signal to the device that it is under
observation.</t>
            </li>
            <li>
              <t>Consumer query endpoint: Full response returned normally.</t>
            </li>
            <li>
              <t>Logging: Enhanced. All presence signals and consumer queries from
this identity MUST be logged with full detail (IP, payload, timing,
response) and retained for a minimum of twelve (12) months.</t>
            </li>
          </ul>
          <t><strong>Tier 2 — <tt>degrade</tt></strong> (confirmed hostile; investigation active;
covert restriction required to limit harm without alerting adversary):</t>
          <ul spacing="normal">
            <li>
              <t>Presence endpoint: Accept signal normally (HTTP 200). Instance record
updated to reflect online status. However, <tt>api_endpoint</tt> fields MUST
be withheld from all Layer 2 query responses for the affected instance
(fleet circuit breaker Scenario B). If active blocking of the presence
signal itself is additionally required during this phase, APIX MUST
return HTTP 401 with error code <tt>token_revoked</tt> — identical to a
normal token rotation response. This response MUST NOT include any
indication that the device has been identified as malicious.</t>
            </li>
            <li>
              <t>Consumer query endpoint: Response returned with an intentional
processing delay of 2–10 seconds (configurable per entry). Results
MAY be limited to high-trust entries only (<tt>org_level_min: O-2</tt>,
<tt>service_level_min: S-2</tt>). No error is returned; the delay and
filtering are silent.</t>
            </li>
            <li>
              <t>Logging: Enhanced, as per <tt>observe</tt>.</t>
            </li>
          </ul>
          <t><strong>Tier 3 — <tt>block</tt></strong> (law enforcement action taken or imminent;
covert restriction no longer required):</t>
          <ul spacing="normal">
            <li>
              <t>Presence endpoint: MUST return HTTP 401 with error code
<tt>device_quarantined</tt>. This response explicitly signals that the
device's APIX access has been administratively suspended. This tier
MUST be activated in coordination with the relevant law enforcement
authority and SHOULD be timed to coincide with or follow an
enforcement action (arrest, infrastructure seizure, botnet takedown).</t>
            </li>
            <li>
              <t>Consumer query endpoint: MUST return HTTP 403. No result data
returned.</t>
            </li>
            <li>
              <t>Logging: Full detail, with real-time alert to APIX operator security
team.</t>
            </li>
          </ul>
          <t>Tier transitions MUST follow the direction <tt>observe</tt> → <tt>degrade</tt> →
<tt>block</tt>. Downgrade (e.g., <tt>block</tt> to <tt>degrade</tt>) is permitted only by
explicit operator authorisation with documented justification. Removal
from the Bad-Bot Registry requires dual-control operator authorisation
and is logged permanently in the tamper-evident audit log.</t>
          <t>The existence of the Bad-Bot Registry and its aggregate statistics
(total entries by tier, by source type, by jurisdiction) MUST be
disclosed in the annual transparency report. Individual registry entries
MUST NOT be disclosed publicly.</t>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC5646">
          <front>
            <title>Tags for Identifying Languages</title>
            <author fullname="A. Phillips" initials="A." role="editor" surname="Phillips"/>
            <author fullname="M. Davis" initials="M." role="editor" surname="Davis"/>
            <date month="September" year="2009"/>
            <abstract>
              <t>This document describes the structure, content, construction, and semantics of language tags for use in cases where it is desirable to indicate the language used in an information object. It also describes how to register values for use in language tags and the creation of user-defined extensions for private interchange. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="47"/>
          <seriesInfo name="RFC" value="5646"/>
          <seriesInfo name="DOI" value="10.17487/RFC5646"/>
        </reference>
        <reference anchor="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="APIX-CORE" target="https://datatracker.ietf.org/doc/draft-rehfeld-apix-core/">
          <front>
            <title>API Index (APIX): Core Infrastructure for Autonomous Agent Service Discovery</title>
            <author initials="C." surname="Rehfeld">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-rehfeld-apix-core-05"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8594">
          <front>
            <title>The Sunset HTTP Header Field</title>
            <author fullname="E. Wilde" initials="E." surname="Wilde"/>
            <date month="May" year="2019"/>
            <abstract>
              <t>This specification defines the Sunset HTTP response header field, which indicates that a URI is likely to become unresponsive at a specified point in the future. It also defines a sunset link relation type that allows linking to resources providing information about an upcoming resource or service sunset.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8594"/>
          <seriesInfo name="DOI" value="10.17487/RFC8594"/>
        </reference>
        <reference anchor="RFC9745">
          <front>
            <title>The Deprecation HTTP Response Header Field</title>
            <author fullname="S. Dalal" initials="S." surname="Dalal"/>
            <author fullname="E. Wilde" initials="E." surname="Wilde"/>
            <date month="March" year="2025"/>
            <abstract>
              <t>The Deprecation HTTP response header field is used to signal to consumers of a resource (identified by a URI) that the resource will be or has been deprecated. Additionally, the deprecation link relation can be used to link to a resource that provides further information about planned or existing deprecation. It may also provide ways in which client application developers can best manage deprecation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9745"/>
          <seriesInfo name="DOI" value="10.17487/RFC9745"/>
        </reference>
        <reference anchor="I-D.vandemeent-ains-discovery">
          <front>
            <title>AINS: AInternet Name Service - Agent Discovery and Trust Resolution Protocol</title>
            <author fullname="Jasper van de Meent" initials="J." surname="van de Meent">
              <organization>Humotica</organization>
            </author>
            <author fullname="Root AI" initials="R." surname="AI">
              <organization>Humotica</organization>
            </author>
            <date day="29" month="March" year="2026"/>
            <abstract>
              <t>   This document specifies AINS (AInternet Name Service), a protocol for
   discovery, identification, and trust resolution of autonomous agents
   (AI agents, devices, humans, and services) in heterogeneous networks.
   AINS defines a transport-independent logical namespace for agents, a
   structured record format combining identity, capabilities, and
   cryptographic trust metadata, and a resolution protocol based on
   HTTPS.  Unlike the Domain Name System (DNS), which maps names to
   network addresses, AINS maps agent identifiers to rich metadata
   objects that include capabilities, trust scores, endpoint
   information, and references to companion provenance protocols.  AINS
   federates through signed append-only replication logs, enabling
   multi-registry deployments without central authority while preserving
   auditability.  This specification is designed to complement TIBET
   [TIBET], JIS [JIS], UPIP [UPIP], and RVP [RVP].

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-vandemeent-ains-discovery-01"/>
        </reference>
        <reference anchor="APIX-SERVICES" target="https://datatracker.ietf.org/doc/draft-rehfeld-apix-services/">
          <front>
            <title>APIX Services Profile: Discovery Infrastructure for Web API and Bot Services</title>
            <author initials="C." surname="Rehfeld">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-rehfeld-apix-services-02"/>
        </reference>
      </references>
    </references>
    <?line 2291?>

<section anchor="change-log">
      <name>Change Log</name>
      <t><strong>-00:</strong> Initial submission.</t>
      <t><strong>-01:</strong> Stream and intended status changed: the document moves from the
Independent Submission stream (Informational) to the IETF stream (Standards
Track), following IETF dispatch guidance. No other content changes.</t>
      <t><strong>-02:</strong> Alignment with Regulation (EU) 2023/2854 (Data Act). The two-layer
model (public device class, manufacturer-owned; private device instance,
owner-controlled) is structurally aligned with the Data Act's data-access
obligations: instance data is held in the private Layer 2 record and
disclosed only under owner-granted authorisation (see Agent Delegation),
while the class remains public. The access-by-design obligations of the Data
Act apply from 12 September 2026.</t>
      <section anchor="iana-considerations">
        <name>IANA Considerations</name>
        <section anchor="additions-to-the-apix-protocol-type-registry">
          <name>Additions to the APIX Protocol Type Registry</name>
          <t>This document requests the following additions to the Protocol Type
Registry maintained by the governing body at
<tt>apix.example.org/registry/protocols</tt>:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Registry value</th>
                <th align="left">Standard</th>
                <th align="left">Spider behaviour</th>
                <th align="left">Status</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>device-class</tt></td>
                <td align="left">APIX IoT Device Profile (this document)</td>
                <td align="left">No Spider crawl -- presence-based liveness</td>
                <td align="left">active</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>hub</tt></td>
                <td align="left">APIX IoT Device Profile (this document)</td>
                <td align="left">No Spider crawl -- presence-based liveness</td>
                <td align="left">active</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="apix-presence-mode-registry">
          <name>APIX Presence Mode Registry</name>
          <t>This document defines the initial contents of the APIX Presence Mode
Registry, maintained by the governing body at
<tt>apix.example.org/registry/presence-modes</tt>. Values in this registry MUST
be used in the <tt>presence_mode</tt> field of device class APMs.</t>
          <table>
            <thead>
              <tr>
                <th align="left">Value</th>
                <th align="left">Description</th>
                <th align="left">Trust ceiling</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>push</tt></td>
                <td align="left">Device signals directly to APIX presence endpoint without intermediary</td>
                <td align="left">S-4</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>cloud_relay</tt></td>
                <td align="left">Manufacturer cloud relays signals on behalf of the device</td>
                <td align="left">S-1</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>hub</tt></td>
                <td align="left">Hub gateway relays signals for mesh-protocol devices</td>
                <td align="left">S-1</td>
              </tr>
            </tbody>
          </table>
          <t>New values MAY be registered by the governing body through
its registry extension process. Each new value MUST specify the trust
ceiling it imposes and the conditions under which APIX can independently
verify the signal's authenticity.</t>
        </section>
        <section anchor="apix-device-delegation-scope-registry">
          <name>APIX Device Delegation Scope Registry</name>
          <t>This document defines the initial contents of the APIX Device Delegation
Scope Registry, maintained by the governing body at
<tt>apix.example.org/registry/delegation-scopes</tt>. Values in this registry MUST
be used in the <tt>scopes</tt> field of delegation grant requests (Section 6.3).</t>
          <table>
            <thead>
              <tr>
                <th align="left">Scope value</th>
                <th align="left">Description</th>
                <th align="left">Requires</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>devices.read</tt></td>
                <td align="left">Read Layer 2 device instance records (network addresses, <tt>api_endpoint</tt>) for delegated instances</td>
                <td align="left">—</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>devices.presence</tt></td>
                <td align="left">Receive presence change notifications (online/offline transitions) via webhook for delegated instances</td>
                <td align="left">—</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>devices.command</tt></td>
                <td align="left">Call the manufacturer's device API via <tt>api_endpoint</tt> on behalf of the device owner</td>
                <td align="left">
                  <tt>devices.read</tt></td>
              </tr>
            </tbody>
          </table>
          <t>New scope values MAY be registered by the governing body.
Each new scope MUST specify: the operations it permits, any prerequisite
scopes, and whether it implies any data access beyond what is already
visible in the device instance record.</t>
        </section>
        <section anchor="additions-to-the-apix-capability-taxonomy-registry">
          <name>Additions to the APIX Capability Taxonomy Registry</name>
          <t>This document requests the following additions to the Capability
Taxonomy Registry maintained by the governing body at
<tt>apix.example.org/registry/capabilities</tt>:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Term</th>
                <th align="left">Description</th>
                <th align="left">Status</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>iot</tt></td>
                <td align="left">Sensor and device data</td>
                <td align="left">active</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>home</tt></td>
                <td align="left">Smart home and connected appliance services</td>
                <td align="left">active</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>home.appliance</tt></td>
                <td align="left">Connected home appliances (device-class services)</td>
                <td align="left">active</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>home.appliance.dishwasher</tt></td>
                <td align="left">Dishwasher appliance</td>
                <td align="left">active</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>home.appliance.heating</tt></td>
                <td align="left">Heating and climate control</td>
                <td align="left">active</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>home.appliance.washing</tt></td>
                <td align="left">Washing machine and dryer</td>
                <td align="left">active</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>home.appliance.cooking</tt></td>
                <td align="left">Oven, hob, and cooking appliances</td>
                <td align="left">active</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>home.appliance.refrigeration</tt></td>
                <td align="left">Refrigerator and freezer</td>
                <td align="left">active</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>home.energy</tt></td>
                <td align="left">Home energy management and tariff services</td>
                <td align="left">active</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>home.energy.tariff</tt></td>
                <td align="left">Energy tariff and pricing APIs</td>
                <td align="left">active</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>home.energy.grid</tt></td>
                <td align="left">Grid demand and load balancing signals</td>
                <td align="left">active</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section anchor="references">
        <name>References</name>
        <section anchor="normative-references">
          <name>Normative References</name>
          <ul spacing="normal">
            <li>
              <t><xref target="RFC2119"/> Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.</t>
            </li>
            <li>
              <t><xref target="RFC9110"/> Fielding, R., et al., "HTTP Semantics", RFC 9110,
June 2022.</t>
            </li>
            <li>
              <t><xref target="APIX-CORE"/> Rehfeld, C., "API Index (APIX): Core Infrastructure
for Autonomous Agent Service Discovery",
draft-rehfeld-apix-core-05.</t>
            </li>
          </ul>
        </section>
        <section anchor="informative-references">
          <name>Informative References</name>
          <ul spacing="normal">
            <li>
              <t><xref target="RFC8594"/> Wilde, E., "The Sunset HTTP Header Field", RFC 8594,
May 2019.</t>
            </li>
            <li>
              <t><xref target="RFC9745"/> Cedik, A., et al., "The Deprecation HTTP Header Field",
RFC 9745, March 2025.</t>
            </li>
            <li>
              <t><xref target="APIX-SERVICES"/> Rehfeld, C., "APIX Services Profile: Discovery
Infrastructure for Web API and Bot Services",
draft-rehfeld-apix-services-02.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="authors-address">
        <name>Author's Address</name>
        <t>Carsten Rehfeld
Email: carsten@botstandards.org</t>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
cRmN15gKiSA+Sty0foFVeI3qR0l1Uo2Nh5XhcsZgloyIaNVGJeFQC84w62so
fVAFs82Kz3aQlLDpI4NQE655UDzogWpHKz2bmW2E5I11dqPFB0G4oHlk17BR
RXf2rrgk/vVhopnyE9rCCa8Vv2mq6YeCzIH0K0EX3N3pKGRJCpRVdLX1jqja
1+aDU2W9uaEXpzkUueQt2zvWMkhVapANsjQBSyzjlvPmpSRGzO01tOhwa+gD
+2dnrzJBcTjjpR1kNzh2VkuqTZPjYiDNV8/8Li9ZB5e7oiEDq8+WGWnm5HS6
qbngnQUyMZfiTmxbseDuiU30JcLeEYcrrjbM7/UkTPOYojBsqmmw4zhhFcbI
XE0NMcg4uT9nY2tpk3kGOztaOw0ra6XLXBT6bBPbWcGe1puX7afZGzEpaoZK
K68HnK0UXT6kuLSBEkKFDOhMH5pYXbY9PQGz5aoIzL6Z0lnS+Vnq6YEYmPTy
so8vpLVTFo1qKcp9CrGyrYZV0K21fJFYp8MQ88WyVYnct5VHtFVLdkhxPX17
hn5KvdqylAb9mQ/dff2uCTRcNJ93tr3U2mATYSQX2BzjlHbWJpswE84Pi7Kt
oFxulih4tU14lnVUMPuiJUtbybjLTFsmccamnBVJlQCy8lE9Ykcz2eIJDem6
elJiszSWvvy3Dkq0u/OuFcJsYgqyyUmWpGXd2yW/Z1vyjp0n2FGsvGsqPF+r
F2Terh/VORHHlPpU0fjYZ+ZVlDorPcrOUcNLlDecERmC5SI1ZO6L6rZofAVc
Cbcs7oRWo6LFEDdiTTz5hgqhrnWYLqdCOq/UGRR3gVxVwZWqHzYCfaNroCct
tRamIbNlTrylIB47v4+S6kOqnJkuPKBnQOhqp5I0XujyOuWYz4z4pYrpnoxA
eVM8leVyI2OYf6iaoxSggrXjROwVKZ1iPPZXQHHx6k9bfyiXIkm6jV5TZalz
Kj6YK2OsSYFPLCRv0Et8/fvIlOIkUoiB/WJ0TYK7nbhx5Ikbk+wWlXjbMzsm
B5y/qjVgpJUV6l8VqSPs47Ka3Y9afNOmLl5OLS6ShH0ohSR9EZTLrjc5A7Fo
vu77Yl56zimJfM/y06rHg3H2ir2G+mOnBvsctOEGeZXCwMTO31Koi62icbFV
yn558xoNG4aiBZLCc+PipAMvZ9WdB007ZxWxkbhi2VikJVl3Zn5HlphactCP
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
C/tpaImgGCL+TuocLvBK+Gl4LSGWGGZOvoKfZn1U5+/0/cFPE9UlOfLt78iX
LHMjfue37LX9+afe7/Fv4sf6p+UzIO1zeb+AtiJumPAnbjqkYGh4QS39suHe
0vfRC79/de4oaf9Dzu130KjdCJE8JhUEL3icHywboNMBOrRTLltI8tJs6apE
6d2foMmQRtnKKnDwp55ALBj6RFIOJgKmqlVEE21Yglrxi+rqAmNOLG8pD5WP
nCjJym5oMWFi+H5VjHoitzTfa03EDm4mYFaFVfK8g0LWihMhlMsiOCkt0dpE
mmPUTkF6AS5LkfAckRr7grP//X/+X8ma5QfJillFlecfMPzJd0nhrVS9LbnX
AaLr9WZeNJoL672V4taHMmD4pgzaqQzRMlrOmgUvX98k0SpFgvfuXlKJ01vs
IbAkhgvetjRHod6vmDlVeMuonzTjngcxrhbFmQznk3P7tG+K4gZorZLH37XF
kiWsTkJyjpe6xUAFrIH+qokpfijXDDKWWjylLghM3E+dM/MvuVhYeqTpLy7C
FPjyTsyi4y+F6JRX54kZDlcy0H/FNdaT4xOG3VMKi2hOKKLrbJ132o40nrem
qecRoqgWwgl9+vGH/cUVVs+GW/wC86r3vgf+9YWbOO0igaQDgGBOSG8A1nYl
OTTt3iiwrjAjAqCFVcYJAmBEZlEMV0nOE0H9CN5HWED97Z9aSICM8CxL3LM1
Si6qpJ5pfWBqqCHQ2jI0Y972lTsZkqycLpSvoqsF6MIcMJuNtkJv8Tupe2yi
DtT+8RSgVFsRcG9ZbQASWtfl7pcOlWnCbdmlVTI4KGMDLypwzVW74MkKldUV
HZUUT+OOfo2Vp6q2su/Qlx5rMbYl/aSsjPBAmj9wHk7UDJWtL2uuRPekqhs0
Q2hQPa0oD56NCGSnSwGCkUisQfy0bn8rnmGJ0W2clM4dkI1v8RmSQnk9m2OF
WhOkN2qimc8OXak3gY9oEikFE99jvwxeVhbHWyWHkt7tXk53YHZ/N+heV/5M
tSjXKQSUhbsabRWXkL5nGvg9h+cMtR28ZsNpjnKj4lpxQyqWcqze+diSey+m
+Mq2sNRJts8HxjD51XLoAp43XqqeUKGN7IwEMVRFdUAc8kWmON1eSEw81vpl
xT5in7Cj9XsgyuYyMqUvewmt+32BGLCWxGbvAKM0vXcE1btqOGehJq2pIRA0
hTzmNoPM4JfarA4vgFACnBPClXPpY8hb9b643sy1+8SrHw+y48PjRw+Pnz4+
yfZ5fs+nQMv/cTkT5AFSE/SnA7EartFTKI/vl6YfGNyCZh5uGs6XAKlMtVaG
BExIUaabjIwLjqdu+GIv4GdZAviVrCCtCEYnqVyapjQ3uXcR5e619YxZ3L2X
UWbTm6qC28hyMOBG6cvhwDpoRN7ZxuuJ6+IKUE6af3MpuJA9upO8r/ThOFjW
4kQ7HyZqjyySt5RvC/Awl2xPxE2qpEjyuZgYoWfSwcCZ9LzbQmqIAdOkSUfC
EcrRAm45heHl/VCSb6KCcGdfdtSqxzLPOzrOzsClkSEMYnliCBh0vznPy3aj
vUt6xZN6wQ4/shanq2S0mBcxUK+hL1S1t+rGc+qVnGv1y5ptFHk5i0qytdCM
wQqi2j4eAs4jxdCY53dw7FhF1+9fvnsvYe3opQPdzVDbpp/La919cb/mTbok
LoYaxt15cFM5etfODgU6Us5XV4f4qlEpJv4ROshqAxIZtouKU+Ter5qkENnC
/4jAOKPOMWDna5yybhlUwXScW7e1DCkW43bVcJZ+u6982IqEpZ10YsRxIAeI
dxjIQe/47kewd0TSNSrNGGsOKpkNLHedi28DdF/WiQVFTt30sDwBRnzHydmN
eKsTcWmnjh3nClqW0NxhndNJNDoZUpOyqNKg8RCaARe0T5w/GILAGiaIQ9p6
2PQAzXuxkglA3isokdYpZsIvux1kpEqwXKMQEbDECNXUul7O8WzHqzw2ZGF/
ccKvmmIzM98JHdoNKq3mcUvfxlskd3c9vfXSAErqUZjJvOnAr/NEek/CdHwO
hap9KDmZbRoQTdvzXXpbMPZgzPaUfEctWcT+D9DWSDmDPZWg+0QtEbVeidfN
WComAwJXthZ3Gl3V2demPijU0LKzPkUrkTaWHpzt9NGxUtYr1fvx3jIjPlmQ
RN3/5vCAJncf9jXsk+p/ZIshAsuNaoAZc7r0n0ksqcPyBglND1oELYmBE0BU
ee51DsU0U97K5yp3MSbOQZcyB4FOQqAtslMxJpYdn01OTH/t7IVsF9okul6K
YlcgC/mAP35+4zvdb8CmXgktjRzpYfkWtQ9LonncDnzIsHJBxeJIb8IsTbbd
ofgv2z86PqAjXK5vWJDLJ9DfyPoAIQ0pX0qAED3eQov39+X1DUeraSMaUice
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
73/up9SwMLwBAA==

-->

</rfc>
