<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.3.11) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-rehfeld-apix-iot-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="APIX IoT">APIX IoT Device Profile: Discovery and Presence for Connected Device Services</title>

    <author initials="C." surname="Rehfeld" fullname="Carsten Rehfeld">
      <organization></organization>
      <address>
        <email>carsten@botstandards.org</email>
      </address>
    </author>

    <date year="2026" month="June" day="15"/>

    
    
    

    <abstract>


<?line 59?>

<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 73?>

<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", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in
all capitals, as shown here. All JSON payloads defined in this
document MUST use UTF-8 encoding as mandated by <xref target="RFC8259"/> Section
8.1.</t>

</section>
<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 <spanx style="verb">spec.type: "device-class"</spanx> or <spanx style="verb">spec.type: "hub"</spanx> 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: <spanx style="verb">register</spanx>, <spanx style="verb">heartbeat</spanx>, <spanx style="verb">depart</spanx>.</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: <spanx style="verb">push</spanx>, <spanx style="verb">cloud_relay</spanx>, <spanx style="verb">hub</spanx>.</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
<spanx style="verb">spec.type: "hub"</spanx>.</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 <spanx style="verb">reachable: false</spanx>
when its current <spanx style="verb">api_version</spanx> is not present in the device class's
current <spanx style="verb">supported_api_versions</spanx> 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 <spanx style="verb">"ipv6"</spanx> indicates the device provided a valid global
unicast IPv6 address in its most recent register signal and can be
reached directly. Value <spanx style="verb">"ipv4_observed"</spanx> 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 <spanx style="verb">spec.type</spanx> field determines which model applies.
Services with <spanx style="verb">spec.type</spanx> set to <spanx style="verb">device-class</spanx> 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>

<figure><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></figure>

<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>

<figure><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></figure>

<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>

<figure><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", "energy.tariff"],
  "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></figure>

<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 <spanx style="verb">pricing</spanx> field using the schema defined
in <xref target="APIX-SERVICES"/>. For IoT device classes, the <spanx style="verb">"dynamic"</spanx> pricing
model is particularly relevant: a cloud relay service may price per
connected device-hour at rates that vary with platform load. When
<spanx style="verb">model</spanx> is <spanx style="verb">"dynamic"</spanx>, the <spanx style="verb">pricing_endpoint</spanx> 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 <spanx style="verb">custom</spanx> field using the schema and
normative rules defined in <xref target="APIX-SERVICES"/>. The <spanx style="verb">custom</spanx> 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
<spanx style="verb">custom_key</spanx> 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><spanx style="verb">heartbeat_interval_seconds</spanx> — 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><spanx style="verb">max_offline_seconds</spanx> — 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 <spanx style="verb">heartbeat_interval_seconds</spanx>.
APIX MUST reject device class registrations where <spanx style="verb">max_offline_seconds</spanx>
is less than <spanx style="verb">heartbeat_interval_seconds</spanx>.</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
<spanx style="verb">heartbeat_interval_seconds</spanx> (for example, 30 seconds) and a
<spanx style="verb">max_offline_seconds</spanx> 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 <spanx style="verb">heartbeat_interval_seconds</spanx> (for example, 3600 seconds)
and a <spanx style="verb">max_offline_seconds</spanx> 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 <spanx style="verb">notifications</spanx> 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
<spanx style="verb">webhook</spanx> only. <spanx style="verb">sse</spanx> and <spanx style="verb">websocket</spanx> 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 <spanx style="verb">devices.presence</spanx>
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 <spanx style="verb">supported_api_versions</spanx>. 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 <spanx style="verb">apix_presence_protocols</spanx> 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
<spanx style="verb">apix_presence_protocols</spanx>.</t>

<t>The APIX presence protocol version a device uses is implicit in the
endpoint URL it calls (e.g. <spanx style="verb">POST /presence/v1/register</spanx> vs
<spanx style="verb">POST /presence/v2/register</spanx>). 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 (<spanx style="verb">api_version</spanx>) 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 <spanx style="verb">register</spanx> signal carrying the
updated <spanx style="verb">api_version</spanx>. 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 <spanx style="verb">apix_presence_protocols: ["v2"]</spanx>.
When a firmware update introduces D1.3 with support for APIX presence
protocol v3, the manufacturer adds v3 to the device class registration:
<spanx style="verb">apix_presence_protocols: ["v2", "v3"]</spanx>. Updated devices call
<spanx style="verb">/presence/v3/register</spanx>; unupdated devices continue calling
<spanx style="verb">/presence/v2/register</spanx>. 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 <spanx style="verb">token_id</spanx> by APIX at
issuance. The <spanx style="verb">token_id</spanx> uniquely identifies a token in API operations
(rotation, revocation) without requiring the token secret to be
transmitted. The <spanx style="verb">token_id</spanx> 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
<spanx style="verb">instance_id</spanx>. 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 <spanx style="verb">token_id</spanx> 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
<spanx style="verb">token_revoked</spanx>.</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
<spanx style="verb">instance_id</spanx>. A device owner MAY release their ownership claim at
any time by calling <spanx style="verb">DELETE /devices/{instance_id}/claim</spanx>. APIX MUST
remove the <spanx style="verb">owner_id</spanx> 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 <spanx style="verb">owner_id</spanx> 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 <spanx style="verb">"reason": "factory_reset"</spanx> before clearing its
operational state. On receipt, APIX MUST release the ownership
association (clear <spanx style="verb">owner_id</spanx>) 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: <spanx style="verb">register</spanx> (first contact after power-on or reconnect),
<spanx style="verb">heartbeat</spanx> (periodic keepalive, MUST NOT change <spanx style="verb">api_version</spanx> or
network addresses without re-registering), <spanx style="verb">depart</spanx> (graceful shutdown
or factory reset). The depart signal MAY carry an optional <spanx style="verb">"reason"</spanx>
field; the only defined value in this specification is
<spanx style="verb">"factory_reset"</spanx>, which triggers ownership release in addition to
standard offline processing. Unrecognised <spanx style="verb">reason</spanx> values MUST be
ignored by APIX.</t>

<figure><artwork><![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"
  }
}
]]></artwork></figure>

<t>When a register signal carries an <spanx style="verb">api_version</spanx> not present in the
device class's <spanx style="verb">supported_api_versions</spanx> list, APIX MUST return HTTP
422 <spanx style="verb">api_version_not_supported</spanx> and MUST create or update the instance
record with <spanx style="verb">reachable: false</spanx>. 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
<spanx style="verb">apix_presence_protocols</spanx> with HTTP 400; no instance record is created
for endpoint version mismatches.</t>

<t>Presence signal flow:</t>

<figure><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></figure>

<t>The index determines instance liveness by comparing the age of the most
recently received heartbeat against the <spanx style="verb">max_offline_seconds</spanx> value
declared in the device class APM:</t>

<figure><artwork><![CDATA[
online IF: (current_time - last_heartbeat_at) <= max_offline_seconds
]]></artwork></figure>

<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 <spanx style="verb">presence_mode</spanx> values are defined for device classes:</t>

<t><spanx style="verb">push</spanx> — 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 <spanx style="verb">push</spanx> may achieve any service trust level up to S-4.</t>

<t><spanx style="verb">cloud_relay</spanx> — 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 <spanx style="verb">cloud_relay</spanx> 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 <spanx style="verb">cloud_relay</spanx> device
instances.</t>

<t><spanx style="verb">hub</spanx> — 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 <spanx style="verb">cloud_relay</spanx>.</t>

<t>The <spanx style="verb">presence_mode</spanx> 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><spanx style="verb">presence_mode</spanx> captures signal-integrity trust — how reliably APIX
can attribute a presence signal to the physical device. A separate
per-instance field, <spanx style="verb">endpoint_confidence</spanx>, captures reachability trust —
how reliably a consuming agent can form a direct connection to the device.</t>

<t>APIX MUST derive <spanx style="verb">endpoint_confidence</spanx> from each register signal:</t>

<texttable>
      <ttcol align='left'>Value</ttcol>
      <ttcol align='left'>Condition</ttcol>
      <ttcol align='left'>Direct endpoint available</ttcol>
      <c><spanx style="verb">ipv6</spanx></c>
      <c>Device provided a valid global unicast IPv6 address in <spanx style="verb">network.ipv6</spanx></c>
      <c><spanx style="verb">api_endpoint.direct_ipv6</spanx> is present</c>
      <c><spanx style="verb">ipv4_observed</spanx></c>
      <c>No valid global unicast IPv6 provided; APIX observed a source IPv4 from the HTTP request</c>
      <c>No <spanx style="verb">direct_ipv6</spanx>; no <spanx style="verb">direct_ipv4</spanx>; <spanx style="verb">cloud_relay</spanx> or <spanx style="verb">hub_gateway</spanx> only</c>
</texttable>

<t>IPv4 addresses self-reported by a device MUST NOT be accepted in the
<spanx style="verb">network</spanx> payload. APIX records the HTTP request source address as
<spanx style="verb">observed_source_ipv4</spanx> 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 <spanx style="verb">endpoint_confidence</spanx> before selecting an
endpoint. Agents performing consequential operations (device commands,
ownership actions) MUST NOT assume a direct endpoint is available for
instances with <spanx style="verb">endpoint_confidence: "ipv4_observed"</spanx>; they MUST route
through <spanx style="verb">cloud_relay</spanx> or <spanx style="verb">hub_gateway</spanx>.</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>

<figure><artwork><![CDATA[
https://apix.example.org/presence/v1/register
https://apix.example.org/presence/v1/heartbeat
https://apix.example.org/presence/v1/depart
]]></artwork></figure>

<t>A device class declares all presence protocol versions its devices may
use in <spanx style="verb">apix_presence_protocols</spanx>. 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 <spanx style="verb">apix_presence_protocols</spanx> 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 <spanx style="verb">apix_presence_protocols</spanx> 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 <spanx style="verb">Deprecation</spanx>
response header (<xref target="RFC9745"/>) and the <spanx style="verb">Sunset</spanx> 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 <spanx style="verb">apix_presence_protocols</spanx>. Device class records that still
include the deprecated version receive a <spanx style="verb">standard_warnings</spanx> 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 <spanx style="verb">network.ipv6</spanx> field of their
presence signals. Devices that cannot provide a global unicast IPv6
address send presence signals without a <spanx style="verb">network</spanx> 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 <spanx style="verb">network</spanx> payload of a presence signal.</t>

<t>IPv6 addresses MUST be provided as unbracketed strings in the
<spanx style="verb">network.ipv6</spanx> field of the presence signal. APIX stores and returns
them as unbracketed strings; consuming agents construct RFC 3986-
compliant bracketed URIs (e.g. <spanx style="verb">https://[2001:db8::1]/api/1.2/</spanx>) when
building endpoint URLs from instance records.</t>

<t><strong>Spider exclusion</strong></t>

<t>Device services with <spanx style="verb">spec.type: device-class</spanx> 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 (<spanx style="verb">spec_consistency</spanx>)
is not applicable and MUST be set to <spanx style="verb">null</spanx> 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
<spanx style="verb">presence_mode</spanx>. The full S-0 through S-4 range is defined; the table
below states the ceiling imposed by each mode:</t>

<texttable>
      <ttcol align='left'>Presence mode</ttcol>
      <ttcol align='left'>Maximum service trust level</ttcol>
      <ttcol align='left'>Reason</ttcol>
      <c><spanx style="verb">push</spanx></c>
      <c>S-4</c>
      <c>Direct device signal path; no intermediary</c>
      <c><spanx style="verb">cloud_relay</spanx></c>
      <c>S-1</c>
      <c>Manufacturer cloud attests device state; not independently verifiable</c>
      <c><spanx style="verb">hub</spanx></c>
      <c>S-1</c>
      <c>Hub gateway attests device state; not independently verifiable</c>
</texttable>

<t>A consuming agent that requires S-2 or higher for its trust policy
MUST exclude device classes with <spanx style="verb">presence_mode: cloud_relay</spanx> or
<spanx style="verb">presence_mode: hub</spanx> from its query results. Agents SHOULD filter
by <spanx style="verb">service_level_min</spanx> 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 <spanx style="verb">hub</spanx>) for the gateway hardware, and a hub-mediated device
class (presence_mode <spanx style="verb">hub</spanx>) 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 <spanx style="verb">spec.type: "hub"</spanx>.
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 <spanx style="verb">push</spanx>).
A hub instance that is offline cannot relay presence for any of its
connected devices.</t>

<figure><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></figure>

<t><spanx style="verb">supported_device_classes</spanx> 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
<spanx style="verb">presence_mode: "hub"</spanx> in its APM. It also declares <spanx style="verb">hub_protocols</spanx> to
identify how the hub-to-device local channel carries the instance token
during the pairing process.</t>

<figure><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></figure>

<t><spanx style="verb">hub_protocols</spanx> 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><spanx style="verb">permitted_hub_classes</spanx> 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 <spanx style="verb">supported_device_classes</spanx>
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>

<figure><artwork><![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..."
}
]]></artwork></figure>

<t>Note that hub-mediated device presence signals carry no <spanx style="verb">network.ipv6</spanx>
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 <spanx style="verb">hub_gateway_endpoint</spanx> 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 <spanx style="verb">supported_device_classes</spanx>,
(d) the hub instance is not itself currently online, or
(e) the device class declares <spanx style="verb">permitted_hub_classes</spanx> 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>

<figure><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></figure>

<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
<spanx style="verb">api_endpoint.hub_gateway</spanx> fields. APIX MUST NOT return <spanx style="verb">online: true</spanx>
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: <spanx style="verb">hub_instance_id</spanx> is set to the new hub's <spanx style="verb">instance_id</spanx> and
<spanx style="verb">api_endpoint.hub_gateway</spanx> is replaced with the value from the new
signal. The device <spanx style="verb">instance_id</spanx> MUST be preserved. APIX MUST return
HTTP 409 <spanx style="verb">device_not_attributed_to_hub</spanx> 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 <spanx style="verb">api_version</spanx> and <spanx style="verb">hub_gateway_endpoint</spanx> 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 <spanx style="verb">presence_mode: "hub"</spanx> 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>

<figure><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></figure>

</section>
<section anchor="device-class-lifecycle"><name>Device Class Lifecycle</name>

<t>Device class lifecycle is defined by this profile. Valid
<spanx style="verb">lifecycle_stage</spanx> values for device classes are <spanx style="verb">stable</spanx>, <spanx style="verb">deprecated</spanx>,
and <spanx style="verb">end_of_life</spanx>. 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: <spanx style="verb">stable</spanx> → <spanx style="verb">deprecated</spanx> → <spanx style="verb">end_of_life</spanx>.</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 <spanx style="verb">service_id</spanx>. Device
instances of deprecated classes MUST be excluded from Layer 2 query
results by default; a consuming agent MAY include them by adding
<spanx style="verb">include_deprecated=true</spanx> to the query. Instance records MUST carry
<spanx style="verb">"class_lifecycle_stage": "deprecated"</spanx>.</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 <spanx style="verb">online: false</spanx>
and <spanx style="verb">reachable: false</spanx>. 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 <spanx style="verb">"reachable": false</spanx> when its
current <spanx style="verb">api_version</spanx> is absent from the device class's current
<spanx style="verb">supported_api_versions</spanx> 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 <spanx style="verb">reachable: false</spanx> from query
results regardless of the <spanx style="verb">online</spanx> filter value. A query for
<spanx style="verb">online=true</spanx> devices MUST NOT include an instance that is
<spanx style="verb">reachable: false</spanx>.</t>

<t>When <spanx style="verb">reachable: false</spanx>, instance records MUST omit <spanx style="verb">api_endpoint</spanx>
fields. The <spanx style="verb">api_version</spanx> field is retained to allow the owner to
identify the version mismatch.</t>

<t>Instance records MUST include <spanx style="verb">"reachable": false</spanx> and
<spanx style="verb">"class_lifecycle_stage"</spanx> (with its non-<spanx style="verb">stable</spanx> value) whenever
those conditions apply. Neither field is present in the response
when the instance is reachable and its class is <spanx style="verb">stable</spanx>.</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>

<t><list style="symbols">
  <t><spanx style="verb">owner_id</spanx> — links the instance to a natural person's consumer
account</t>
  <t><spanx style="verb">network.ipv6</spanx> — 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>
  <t><spanx style="verb">api_endpoint</spanx> fields — URLs that may carry device-specific
identifiers attributable to a natural person</t>
  <t><spanx style="verb">claimed_at</spanx> and <spanx style="verb">last_seen_at</spanx> — timestamps that, in combination
with network addresses, constitute behavioural data</t>
</list></t>

<t><spanx style="verb">instance_id</spanx> and <spanx style="verb">device_class_id</spanx> are pseudonymous technical
identifiers and are not classified as personal data on their own.</t>

<t>Network addresses and <spanx style="verb">api_endpoint</spanx> 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>

<t><list style="symbols">
  <t><spanx style="verb">owner_id</spanx>, <spanx style="verb">claimed_at</spanx>, <spanx style="verb">last_seen_at</spanx>, and <spanx style="verb">went_offline_at</spanx>
are cleared.</t>
  <t><spanx style="verb">instance_id</spanx>, <spanx style="verb">device_class_id</spanx>, and <spanx style="verb">api_version</spanx> are retained
for operational audit purposes (legitimate interest).</t>
  <t>The record MUST NOT appear in any Layer 2 query result.</t>
</list></t>

<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>

<t><list style="numbers" type="1">
  <t>Clear <spanx style="verb">owner_id</spanx>, <spanx style="verb">claimed_at</spanx>, and all network address and
endpoint fields from the instance record.</t>
  <t>Revoke all agent delegations scoped to the device instance.</t>
  <t>Retain <spanx style="verb">instance_id</spanx>, <spanx style="verb">device_class_id</spanx>, <spanx style="verb">api_version</spanx>, 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>
</list></t>

<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
<spanx style="verb">owner_id</spanx> 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
<spanx style="verb">devices.read</spanx> 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 <spanx style="verb">devices</spanx> 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>

<figure><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></figure>

<t><strong>Normative query parameters:</strong></t>

<texttable>
      <ttcol align='left'>Parameter</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Default</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">capability</spanx></c>
      <c>string</c>
      <c>—</c>
      <c>Capability taxonomy term. Filters to instances of device classes declaring this capability</c>
      <c><spanx style="verb">online</spanx></c>
      <c>boolean</c>
      <c>—</c>
      <c><spanx style="verb">true</spanx>: online instances only. <spanx style="verb">false</spanx>: offline only. Absent: all instances</c>
      <c><spanx style="verb">api_version</spanx></c>
      <c>string</c>
      <c>—</c>
      <c>Filter by manufacturer API version currently running on the instance</c>
      <c><spanx style="verb">include_deprecated</spanx></c>
      <c>boolean</c>
      <c>false</c>
      <c>When <spanx style="verb">true</spanx>, results include instances of deprecated classes. Instances with <spanx style="verb">reachable: false</spanx> are excluded regardless of this parameter</c>
      <c><spanx style="verb">page</spanx></c>
      <c>integer</c>
      <c>1</c>
      <c>Result page number</c>
      <c><spanx style="verb">page_size</spanx></c>
      <c>integer</c>
      <c>20</c>
      <c>Results per page. Maximum: 100</c>
</texttable>

<t><strong>Device Instance Summary (Level 1):</strong></t>

<figure><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></figure>

<t>The fields <spanx style="verb">reachable</spanx> and <spanx style="verb">class_lifecycle_stage</spanx> are present only
when their value is non-default (<spanx style="verb">reachable: false</spanx>; <spanx style="verb">class_lifecycle_stage</spanx>
other than <spanx style="verb">stable</spanx>). Network addresses and resolved endpoint options
are not returned at Level 1. Agents retrieve them by fetching the
detail resource via the <spanx style="verb">self</spanx> link.</t>

<t><strong>Device Instance Record (Level 2):</strong></t>

<figure><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></figure>

<t>The <spanx style="verb">endpoint_confidence</spanx> field governs which <spanx style="verb">api_endpoint</spanx> keys are
present in the record. When <spanx style="verb">endpoint_confidence</spanx> is <spanx style="verb">"ipv6"</spanx>, the
device provided a valid global unicast IPv6 address in its most recent
register signal; both <spanx style="verb">api_endpoint.cloud_relay</spanx> and
<spanx style="verb">api_endpoint.direct_ipv6</spanx> are present. <spanx style="verb">direct_ipv6</spanx> is the preferred
endpoint for agents on IPv6-capable networks as it avoids the
manufacturer's relay infrastructure.</t>

<t>When <spanx style="verb">endpoint_confidence</spanx> is <spanx style="verb">"ipv4_observed"</spanx>, no IPv6 address was
provided; only <spanx style="verb">api_endpoint.cloud_relay</spanx> 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><spanx style="verb">api_endpoint.cloud_relay</spanx> is always present when the manufacturer's
device class APM declares <spanx style="verb">api_base_url</spanx>; it is the mandatory fallback
for all <spanx style="verb">endpoint_confidence</spanx> values.</t>

<t><strong>Device Instance Record (Level 2 — <spanx style="verb">endpoint_confidence: "ipv4_observed"</spanx>):</strong></t>

<figure><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></figure>

<t>No <spanx style="verb">network</spanx> 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 <spanx style="verb">api_endpoint.cloud_relay</spanx> for
such instances.</t>

<t>When a device transitions to offline, <spanx style="verb">network</spanx> addresses and
<spanx style="verb">api_endpoint</spanx> 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 <spanx style="verb">instance_id</spanx> values, no network addresses, no <spanx style="verb">owner_id</spanx> 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>

<figure><artwork><![CDATA[
GET https://apix.example.org/device-classes/{class_id}/fleet-summary
Authorization: APIX-Key {manufacturer-api-key}
]]></artwork></figure>

<t><strong>Response:</strong></t>

<figure><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></figure>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">total_registered</spanx></c>
      <c>Count of all instances of this class currently in the index, regardless of online status or ownership</c>
      <c><spanx style="verb">online_count</spanx></c>
      <c>Instances that have sent a presence signal within the configured heartbeat timeout window</c>
      <c><spanx style="verb">unclaimed_count</spanx></c>
      <c>Instances present in the index that have no <spanx style="verb">owner_id</spanx> association</c>
      <c><spanx style="verb">api_version_distribution</spanx></c>
      <c>Map of manufacturer API version string to count of instances currently reporting that version. Values are sourced exclusively from device presence signals</c>
      <c><spanx style="verb">as_of</spanx></c>
      <c>Timestamp of the aggregate computation. MAY be up to 15 minutes stale</c>
</texttable>

<t>The <spanx style="verb">online_count</spanx> 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>

<texttable>
      <ttcol align='left'>Scope</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c><spanx style="verb">devices.read</spanx></c>
      <c>Read device instance records (Level 2) for delegated instances, including network addresses and <spanx style="verb">api_endpoint</spanx> fields</c>
      <c><spanx style="verb">devices.presence</spanx></c>
      <c>Receive presence change notifications (online/offline transitions) for delegated instances via webhook</c>
      <c><spanx style="verb">devices.command</spanx></c>
      <c>Authorised to call the manufacturer's device API on behalf of the owner, using the <spanx style="verb">api_endpoint</spanx> from the instance record</c>
</texttable>

<t>Scopes are additive. A delegation grant MUST specify at least one scope.
<spanx style="verb">devices.command</spanx> MUST NOT be granted without also granting <spanx style="verb">devices.read</spanx>,
as command routing requires knowledge of the current <spanx style="verb">api_endpoint</spanx>.</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>

<figure><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></figure>

<t><spanx style="verb">agent_token_id</spanx> 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 <spanx style="verb">token_id</spanx> is sufficient for APIX to
resolve the delegation at query time.</t>

<t><spanx style="verb">expires_at</spanx> 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 (<spanx style="verb">delegation_id</spanx>) in
the response. The owner uses <spanx style="verb">delegation_id</spanx> 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>

<figure><artwork><![CDATA[
GET /devices/{instance_id}
Authorization: Bearer agent-consumer-token
]]></artwork></figure>

<t>APIX MUST resolve the delegation at query time: if a valid, non-expired
delegation grant exists for the requesting <spanx style="verb">token_id</spanx> covering the
requested <spanx style="verb">instance_id</spanx> with the <spanx style="verb">devices.read</spanx> 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>

<figure><artwork><![CDATA[
DELETE /devices/{instance_id}/delegations/{delegation_id}
Authorization: Bearer owner-consumer-token
]]></artwork></figure>

<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 <spanx style="verb">expires_at</spanx> 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>

<t><list style="numbers" type="1">
  <t><strong>Human operator as a first-class entity in the IoT service chain</strong>:
This specification recognises two human roles: the device owner
(<spanx style="verb">owner_id</spanx>, 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.  <vspace blankLines='1'/>
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.  <vspace blankLines='1'/>
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).  <vspace blankLines='1'/>
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>
  <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.  <vspace blankLines='1'/>
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 <spanx style="verb">supported_api_versions</spanx> or
<spanx style="verb">presence_mode</spanx>. 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
<spanx style="verb">api_call_budget</spanx> 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:
<spanx style="verb">max_commands_per_minute</spanx> (hardware ceiling), <spanx style="verb">typical_response_ms</spanx>
(planning latency), <spanx style="verb">concurrent_command_limit</spanx> (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>
</list></t>

</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 <spanx style="verb">token_id</spanx> 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 <spanx style="verb">instance_id</spanx> or <spanx style="verb">device_class_id</spanx> 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,
<spanx style="verb">api_version</spanx>, <spanx style="verb">hub_gateway_endpoint</spanx>) 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
<spanx style="verb">cloud_relay</spanx> 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
<spanx style="verb">heartbeat_interval_seconds</spanx> 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>

<t><list style="symbols">
  <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>
  <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>
  <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>
  <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>
  <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>
  <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>
</list></t>

</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 <spanx style="verb">token_revoked</spanx> 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>

<t><list style="symbols">
  <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>
  <t><spanx style="verb">api_endpoint</spanx> 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>
  <t>Quarantined instances MUST be excluded from Layer 1 capability
searches, as if <spanx style="verb">lifecycle_stage</spanx> were <spanx style="verb">end_of_life</spanx>.</t>
  <t>The quarantine state MUST be reversible. When the quarantine is
lifted, <spanx style="verb">api_endpoint</spanx> fields are restored and the instance returns
to normal Layer 2 visibility.</t>
  <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>
</list></t>

<t>The fleet circuit breaker MUST be operable at three scopes:
<spanx style="verb">instance</spanx> (single device), <spanx style="verb">device_class</spanx> (all instances of a class),
and <spanx style="verb">manufacturer</spanx> (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>

<t><list style="symbols">
  <t>The jurisdiction has ratified the Budapest Convention on Cybercrime,
OR is the domicile jurisdiction of the APIX governing body (currently
Switzerland).</t>
  <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>
  <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>
</list></t>

<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>

<t><list style="symbols">
  <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>
  <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>
</list></t>

<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>

<t><list style="numbers" type="1">
  <t>The existence and purpose of the LER interface.</t>
  <t>The legal basis under which APIX operates (Swiss Stiftung, Budapest
Convention obligations, applicable data protection law).</t>
  <t>The contact's specific role in the LER process and what actions
are expected of them.</t>
  <t>The APIX operational security contact and escalation path.</t>
  <t>The jurisdiction's reference code in the JCR, to be cited in all
LER submissions from that jurisdiction.</t>
</list></t>

<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>

<texttable>
      <ttcol align='left'>Tier</ttcol>
      <ttcol align='left'>Authorisation required</ttcol>
      <ttcol align='left'>Processing time</ttcol>
      <ttcol align='left'>Effect</ttcol>
      <c>ICJ instrument</c>
      <c>Verified ICJ provisional measure or judgment</c>
      <c>MUST be processed within 4 hours</c>
      <c>Fleet circuit breaker per instrument scope; no 72-hour reversal window</c>
      <c>Emergency provisional (national)</c>
      <c>Written agency declaration with case reference; judicial authorisation to follow within 72 hours</c>
      <c>MUST be processed within 4 hours of receipt</c>
      <c>Fleet circuit breaker Scenario B (endpoint suppression); full review opens automatically</c>
      <c>Standard (national)</c>
      <c>Verified judicial authorisation document</c>
      <c>MUST be processed within 48 hours of verification</c>
      <c>Fleet circuit breaker action per request scope</c>
      <c>Refusal</c>
      <c>Authorisation absent, invalid, jurisdiction suspended in JCR, or contact roles not established</c>
      <c>N/A</c>
      <c>Request refused; attempt logged; aggregate count included in transparency report</c>
</texttable>

<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 <spanx style="verb">preferred_language</spanx> 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: <spanx style="verb">"de"</spanx> for Bundeskriminalamt,
<spanx style="verb">"en"</spanx> for FBI Cyber Division, <spanx style="verb">"fr"</spanx> 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>

<t><list style="numbers" type="1">
  <t>The primary contact submits the LER via their authenticated mTLS connection.
The submission is recorded with status <spanx style="verb">pending_countersign</spanx> and no review
is initiated.</t>
  <t>A second registered contact from the same jurisdiction MUST authenticate
via their own mTLS certificate and issue a countersign request referencing
the <spanx style="verb">ler_id</spanx> returned in the initial submission response. The countersign
window is 60 minutes for standard and ICJ tier; 20 minutes for
<spanx style="verb">emergency_provisional</spanx> tier.</t>
  <t>If the countersign is not received within the window, the submission MUST be
automatically rejected and logged with reason <spanx style="verb">countersign_timeout</spanx>. No
review is initiated and no suppression is applied.</t>
  <t>For <spanx style="verb">emergency_provisional</spanx> tier, the 4-hour processing commitment runs
from the timestamp of the countersign, not the initial submission.</t>
</list></t>

<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>

<figure><artwork><![CDATA[
POST <ler-endpoint-url>
Authorization: mTLS client certificate (jurisdiction contact)
Content-Type: application/json
]]></artwork></figure>

<t>The <spanx style="verb">&lt;ler-endpoint-url&gt;</spanx> 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>

<figure><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></figure>

<t><spanx style="verb">device_addresses</spanx> 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><spanx style="verb">requested_duration_hours</spanx> is advisory. APIX MUST apply the suppression for
the duration specified in the judicial instrument if it differs. For
<spanx style="verb">emergency_provisional</spanx>, the suppression is automatically reversed after 72
hours unless judicial authorisation is verified (Section above).</t>

<t><em>Response format:</em></t>

<figure><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></figure>

<t><spanx style="verb">ler_id</spanx> 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><spanx style="verb">apix_tan</spanx> and <spanx style="verb">uploader_auth_tan</spanx> 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 <spanx style="verb">ler_id</spanx>.</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>

<figure><artwork><![CDATA[
POST <ler-endpoint-url>/countersign
Authorization: mTLS client certificate (second jurisdiction contact)
Content-Type: application/json
]]></artwork></figure>

<figure><sourcecode type="json"><![CDATA[
{
  "ler_id": "APIX-assigned LER identifier (initial submission)",
  "countersign_statement": "confirmation statement (see spec)"
}
]]></sourcecode></figure>

<t>Response:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "ler_id": "...",
  "status": "countersigned | rejected",
  "rejection_reason": "null | window_expired | same_contact | ..."
}
]]></sourcecode></figure>

<t>On <spanx style="verb">countersigned</spanx> status, the submission transitions to the callback
verification step (see below). On <spanx style="verb">rejected</spanx>, 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>

<t><list style="symbols">
  <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>
  <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>
  <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>
</list></t>

<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>

<t><list style="numbers" type="1">
  <t>APIX retrieves the stored callback number from the JCR record for the
submitting jurisdiction.</t>
  <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>
  <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>
  <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>
  <t>APIX then requests, in a single exchange: the contacted person's full name,
personal verification code, and uploader auth TAN.</t>
  <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>
  <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 <spanx style="verb">callback_verification_failed</spanx>
(see below).</t>
</list></t>

<t>Callback failure dispositions differ by cause and MUST be handled distinctly:</t>

<t><spanx style="verb">callback_verification_failed</spanx> — 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 <spanx style="verb">ler_id</spanx> cannot
be recovered. Logged as operational failure.</t>

<t><spanx style="verb">callback_number_mismatch</spanx> — 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><spanx style="verb">callback_interception_reported</spanx> — 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>

<texttable>
      <ttcol align='left'>Event</ttcol>
      <ttcol align='left'>Logged fields</ttcol>
      <c>LER received</c>
      <c><spanx style="verb">ler_id</spanx>, timestamp, jurisdiction_ref, tier, device_addresses count, receiving operator identity</c>
      <c>Countersign received</c>
      <c><spanx style="verb">ler_id</spanx>, timestamp, countersigning contact certificate subject (distinct from submitting contact), window elapsed</c>
      <c>Countersign timeout</c>
      <c><spanx style="verb">ler_id</spanx>, timestamp, window duration, disposition (auto-rejected)</c>
      <c>Callback number validated</c>
      <c><spanx style="verb">ler_id</spanx>, timestamp, stored number hash, public record hash, match result (match / mismatch)</c>
      <c>Callback phone mismatch — <spanx style="verb">callback_number_mismatch</spanx></c>
      <c><spanx style="verb">ler_id</spanx>, timestamp, stored number hash, public record hash, incident_id; disposition: suspended</c>
      <c>Callback confirmed</c>
      <c><spanx style="verb">ler_id</spanx>, timestamp, attempt count, name match (boolean), personal code match (boolean), uploader auth TAN match (boolean), governing body operator identity (caller)</c>
      <c>Callback rejected — <spanx style="verb">callback_verification_failed</spanx></c>
      <c><spanx style="verb">ler_id</spanx>, 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</c>
      <c>Callback suspended — <spanx style="verb">callback_interception_reported</spanx></c>
      <c><spanx style="verb">ler_id</spanx>, timestamp, governing body operator identity (caller), contact statement summary; disposition: suspended, Security Officer + board member notified</c>
      <c>LER refused</c>
      <c><spanx style="verb">ler_id</spanx>, timestamp, refusal_reason, reviewing operator identity</c>
      <c>Suppression activated</c>
      <c><spanx style="verb">ler_id</spanx>, timestamp, scope, device instance count affected, authorising operator identities (both, per dual-control)</c>
      <c>Suppression reversed</c>
      <c><spanx style="verb">ler_id</spanx>, timestamp, reason (72h expiry / judicial doc not verified / operator decision), reversing operator identity</c>
      <c>Review completed</c>
      <c><spanx style="verb">ler_id</spanx>, timestamp, reviewer identity, decision (confirmed / escalated / reversed), notes</c>
</texttable>

<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>

<t><list style="numbers" type="1">
  <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>
  <t>A designated LER reviewer (a named APIX operator with the <spanx style="verb">ler_review</spanx>
role) MUST read the submission and the referenced judicial document
before authorising activation.</t>
  <t>Activation MUST follow the dual-control requirement of the fleet
circuit breaker (<xref target="APIX-CORE"/> Section 12): two independent
operators with the <spanx style="verb">ler_activate</spanx> role MUST independently confirm
before suppression is applied. Neither operator may be the same
individual who reviewed the submission.</t>
  <t>The activation record in the audit log MUST include the identities
of both activating operators and the timestamp of each confirmation.</t>
  <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>
</list></t>

<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>

<t><list style="numbers" type="1">
  <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>
  <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>
  <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>
  <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>
  <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>
</list></t>

<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>

<texttable>
      <ttcol align='left'>Role</ttcol>
      <ttcol align='left'>Responsibility</ttcol>
      <c><spanx style="verb">ler_reviewer</spanx></c>
      <c>Reviews LER submissions and judicial documents before authorisation. May not activate.</c>
      <c><spanx style="verb">ler_activate</spanx></c>
      <c>Provides one of the two required authorisation confirmations for activation. May not review the same submission.</c>
      <c><spanx style="verb">ler_oversight</spanx></c>
      <c>Performs post-activation review. Must be independent of both reviewer and activating operators for the case under review.</c>
      <c><spanx style="verb">ler_emergency</spanx></c>
      <c>On-call role, 24/7. Holds both <spanx style="verb">ler_reviewer</spanx> and single-control <spanx style="verb">ler_activate</spanx> authority for emergency provisional tier only.</c>
</texttable>

<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 <spanx style="verb">api_endpoint</spanx> 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 — <spanx style="verb">observe</spanx></strong> (investigation in progress; entry not yet
confirmed hostile or confirmation is recent):</t>

<t><list style="symbols">
  <t>Presence endpoint: Accept signal normally. Instance record updated.
HTTP 200 returned. No signal to the device that it is under
observation.</t>
  <t>Consumer query endpoint: Full response returned normally.</t>
  <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>
</list></t>

<t><strong>Tier 2 — <spanx style="verb">degrade</spanx></strong> (confirmed hostile; investigation active;
covert restriction required to limit harm without alerting adversary):</t>

<t><list style="symbols">
  <t>Presence endpoint: Accept signal normally (HTTP 200). Instance record
updated to reflect online status. However, <spanx style="verb">api_endpoint</spanx> 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 <spanx style="verb">token_revoked</spanx> — identical to a
normal token rotation response. This response MUST NOT include any
indication that the device has been identified as malicious.</t>
  <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 (<spanx style="verb">org_level_min: O-2</spanx>,
<spanx style="verb">service_level_min: S-2</spanx>). No error is returned; the delay and
filtering are silent.</t>
  <t>Logging: Enhanced, as per <spanx style="verb">observe</spanx>.</t>
</list></t>

<t><strong>Tier 3 — <spanx style="verb">block</spanx></strong> (law enforcement action taken or imminent;
covert restriction no longer required):</t>

<t><list style="symbols">
  <t>Presence endpoint: MUST return HTTP 401 with error code
<spanx style="verb">device_quarantined</spanx>. 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>
  <t>Consumer query endpoint: MUST return HTTP 403. No result data
returned.</t>
  <t>Logging: Full detail, with real-time alert to APIX operator security
team.</t>
</list></t>

<t>Tier transitions MUST follow the direction <spanx style="verb">observe</spanx> → <spanx style="verb">degrade</spanx> →
<spanx style="verb">block</spanx>. Downgrade (e.g., <spanx style="verb">block</spanx> to <spanx style="verb">degrade</spanx>) 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>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<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="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</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></organization>
    </author>
    <date year="n.d."/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-rehfeld-apix-core-07"/>
</reference>


    </references>

    <references title='Informative References' anchor="sec-informative-references">



<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></organization>
    </author>
    <date year="n.d."/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-rehfeld-apix-services-04"/>
</reference>
<reference anchor="MATTER" target="https://csa-iot.org/all-solutions/matter/">
  <front>
    <title>Matter Specification</title>
    <author >
      <organization>Connectivity Standards Alliance</organization>
    </author>
    <date year="2024"/>
  </front>
</reference>
<reference anchor="OPC-UA" target="https://opcfoundation.org/about/opc-technologies/opc-ua/">
  <front>
    <title>OPC Unified Architecture</title>
    <author >
      <organization>OPC Foundation</organization>
    </author>
    <date year="2024"/>
  </front>
</reference>
<reference anchor="OCPP" target="https://www.openchargealliance.org/protocols/ocpp/">
  <front>
    <title>Open Charge Point Protocol</title>
    <author >
      <organization>Open Charge Alliance</organization>
    </author>
    <date year="2024"/>
  </front>
</reference>


    </references>

</references>


<?line 2312?>

<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>

<t><strong>-03:</strong> IoT capability taxonomy expanded for cross-segment seeding. New
top-level terms <spanx style="verb">industrial</spanx>, <spanx style="verb">mobility</spanx>, <spanx style="verb">building</spanx>, <spanx style="verb">logistics</spanx>, <spanx style="verb">city</spanx>,
<spanx style="verb">health</spanx>, <spanx style="verb">environment</spanx>, <spanx style="verb">agriculture</spanx>, and a cross-cutting <spanx style="verb">energy</spanx>
namespace, each with 2-6 child terms covering the principal sub-domains.
Additional <spanx style="verb">home</spanx> subdomains (<spanx style="verb">home.security</spanx>, <spanx style="verb">home.lighting</spanx>, <spanx style="verb">home.audio</spanx>,
<spanx style="verb">home.water</spanx>, plus appliance terms for cleaning and coffee). The orphan root
term <spanx style="verb">iot</spanx> is withdrawn (the IoT nature of a service is encoded in
<spanx style="verb">spec.type</spanx>, not as a capability). <spanx style="verb">home.energy</spanx>, <spanx style="verb">home.energy.tariff</spanx>, and
<spanx style="verb">home.energy.grid</spanx> (proposed in -02, never operational) are replaced with
cross-cutting <spanx style="verb">energy</spanx>, <spanx style="verb">energy.tariff</spanx>, and <spanx style="verb">energy.grid</spanx>. Alignment notes
added to the IANA Considerations preamble pointing at <xref target="MATTER"/> for
<spanx style="verb">home.*</spanx>, <xref target="OPC-UA"/> Companion Specifications for <spanx style="verb">industrial.*</spanx>, and
<xref target="OCPP"/> for <spanx style="verb">mobility.charging</spanx>. Three new informative references: Matter,
OPC UA, OCPP. Editorial: BCP 14 boilerplate updated to the current
post-RFC 8174 form. Top-level body section headings normalised to start at
level 1, aligning with kramdown-rfc convention. Two HTTP+JSON examples
(presence register and hub-relay register) re-tagged from <spanx style="verb">~~~json</spanx> to
<spanx style="verb">~~~</spanx> because the embedded HTTP request line breaks JSON parse.
Cross-references updated to the co-submission cluster (core-06,
services-03). No normative change to the wire format; the additions take
effect through the registry lifecycle defined in <xref target="APIX-SERVICES"/>.</t>

<t><strong>-04:</strong> Cross-reference sync. <xref target="APIX-CORE"/> reference bumped to -07 and
<xref target="APIX-SERVICES"/> reference bumped to -04 (co-submission cluster snapshot
for the IETF 126 Dispatch / SecDispatch presentation: core-07, services-04,
iot-04, quality-00). No normative or editorial change to the body.</t>

</section>
<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
<spanx style="verb">apix.example.org/registry/protocols</spanx>:</t>

<texttable>
      <ttcol align='left'>Registry value</ttcol>
      <ttcol align='left'>Standard</ttcol>
      <ttcol align='left'>Spider behaviour</ttcol>
      <ttcol align='left'>Status</ttcol>
      <c><spanx style="verb">device-class</spanx></c>
      <c>APIX IoT Device Profile (this document)</c>
      <c>No Spider crawl -- presence-based liveness</c>
      <c>active</c>
      <c><spanx style="verb">hub</spanx></c>
      <c>APIX IoT Device Profile (this document)</c>
      <c>No Spider crawl -- presence-based liveness</c>
      <c>active</c>
</texttable>

</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
<spanx style="verb">apix.example.org/registry/presence-modes</spanx>. Values in this registry MUST
be used in the <spanx style="verb">presence_mode</spanx> field of device class APMs.</t>

<texttable>
      <ttcol align='left'>Value</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Trust ceiling</ttcol>
      <c><spanx style="verb">push</spanx></c>
      <c>Device signals directly to APIX presence endpoint without intermediary</c>
      <c>S-4</c>
      <c><spanx style="verb">cloud_relay</spanx></c>
      <c>Manufacturer cloud relays signals on behalf of the device</c>
      <c>S-1</c>
      <c><spanx style="verb">hub</spanx></c>
      <c>Hub gateway relays signals for mesh-protocol devices</c>
      <c>S-1</c>
</texttable>

<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
<spanx style="verb">apix.example.org/registry/delegation-scopes</spanx>. Values in this registry MUST
be used in the <spanx style="verb">scopes</spanx> field of delegation grant requests (Section 6.3).</t>

<texttable>
      <ttcol align='left'>Scope value</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Requires</ttcol>
      <c><spanx style="verb">devices.read</spanx></c>
      <c>Read Layer 2 device instance records (network addresses, <spanx style="verb">api_endpoint</spanx>) for delegated instances</c>
      <c>—</c>
      <c><spanx style="verb">devices.presence</spanx></c>
      <c>Receive presence change notifications (online/offline transitions) via webhook for delegated instances</c>
      <c>—</c>
      <c><spanx style="verb">devices.command</spanx></c>
      <c>Call the manufacturer's device API via <spanx style="verb">api_endpoint</spanx> on behalf of the device owner</c>
      <c><spanx style="verb">devices.read</spanx></c>
</texttable>

<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
<spanx style="verb">apix.example.org/registry/capabilities</spanx>. The starter set seeds the namespace
for the physical-world verticals an IoT discovery layer must serve — beyond
connected home appliances this includes industrial IoT, mobility, commercial
building automation, logistics, smart-city services, connected health,
environment, agriculture, and a cross-cutting <spanx style="verb">energy</spanx> namespace.</t>

<t>Where applicable, terms are intended to align with established external
device-type taxonomies, so that a device class registered in APIX can be
declared with a term that an implementer of the external taxonomy
recognises. Implementations and proposed additions SHOULD consult:</t>

<t><list style="symbols">
  <t><xref target="MATTER"/> device types for the <spanx style="verb">home.*</spanx> subtree.</t>
  <t><xref target="OPC-UA"/> Companion Specifications for the <spanx style="verb">industrial.*</spanx> subtree.</t>
  <t><xref target="OCPP"/> for <spanx style="verb">mobility.charging</spanx>.</t>
</list></t>

<t>The governing body applies the governance process defined in
<xref target="APIX-SERVICES"/> (proposal, quarterly review, deprecation lifecycle) when
reconciling proposed additions with these external taxonomies. A proposed
addition's evaluation SHOULD include whether an equivalent term already
exists in the named external taxonomies; where alignment is possible, the
registry entry's <em>Description</em> SHOULD note the corresponding external term.</t>

<texttable>
      <ttcol align='left'>Term</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Status</ttcol>
      <c><spanx style="verb">home</spanx></c>
      <c>Smart home services (residential scope)</c>
      <c>active</c>
      <c><spanx style="verb">home.appliance</spanx></c>
      <c>Connected home appliances (device-class services)</c>
      <c>active</c>
      <c><spanx style="verb">home.appliance.dishwasher</spanx></c>
      <c>Dishwasher appliance</c>
      <c>active</c>
      <c><spanx style="verb">home.appliance.heating</spanx></c>
      <c>Heating and climate control</c>
      <c>active</c>
      <c><spanx style="verb">home.appliance.washing</spanx></c>
      <c>Washing machine and dryer</c>
      <c>active</c>
      <c><spanx style="verb">home.appliance.cooking</spanx></c>
      <c>Oven, hob, and cooking appliances</c>
      <c>active</c>
      <c><spanx style="verb">home.appliance.refrigeration</spanx></c>
      <c>Refrigerator and freezer</c>
      <c>active</c>
      <c><spanx style="verb">home.appliance.cleaning</spanx></c>
      <c>Robotic vacuum and other cleaning devices</c>
      <c>active</c>
      <c><spanx style="verb">home.appliance.coffee</spanx></c>
      <c>Connected coffee and espresso machines</c>
      <c>active</c>
      <c><spanx style="verb">home.security</spanx></c>
      <c>Locks, alarms, cameras, and sensors</c>
      <c>active</c>
      <c><spanx style="verb">home.lighting</spanx></c>
      <c>Connected lighting (bulbs, switches, scenes)</c>
      <c>active</c>
      <c><spanx style="verb">home.audio</spanx></c>
      <c>Smart speakers and multi-room audio</c>
      <c>active</c>
      <c><spanx style="verb">home.water</spanx></c>
      <c>Water metering and leak detection</c>
      <c>active</c>
      <c><spanx style="verb">energy</spanx></c>
      <c>Energy services (cross-cutting across home, building, industrial, mobility)</c>
      <c>active</c>
      <c><spanx style="verb">energy.tariff</spanx></c>
      <c>Energy tariff and pricing APIs</c>
      <c>active</c>
      <c><spanx style="verb">energy.grid</spanx></c>
      <c>Grid demand, load-balancing, and curtailment signals</c>
      <c>active</c>
      <c><spanx style="verb">industrial</spanx></c>
      <c>Industrial IoT (sensors, machines, and process data)</c>
      <c>active</c>
      <c><spanx style="verb">industrial.manufacturing</spanx></c>
      <c>Manufacturing-line equipment and process data</c>
      <c>active</c>
      <c><spanx style="verb">industrial.machine</spanx></c>
      <c>Machine state, control, and telemetry</c>
      <c>active</c>
      <c><spanx style="verb">industrial.process</spanx></c>
      <c>Process-control data (continuous and batch processes)</c>
      <c>active</c>
      <c><spanx style="verb">industrial.predictive-maintenance</spanx></c>
      <c>Condition monitoring and failure prediction</c>
      <c>active</c>
      <c><spanx style="verb">industrial.energy</spanx></c>
      <c>Industrial energy management and metering</c>
      <c>active</c>
      <c><spanx style="verb">mobility</spanx></c>
      <c>Connected mobility services</c>
      <c>active</c>
      <c><spanx style="verb">mobility.vehicle</spanx></c>
      <c>Connected vehicle telemetry and services</c>
      <c>active</c>
      <c><spanx style="verb">mobility.charging</spanx></c>
      <c>EV charging services (see <xref target="OCPP"/>)</c>
      <c>active</c>
      <c><spanx style="verb">mobility.fleet</spanx></c>
      <c>Fleet management services</c>
      <c>active</c>
      <c><spanx style="verb">mobility.telematics</spanx></c>
      <c>Vehicle telematics data feeds</c>
      <c>active</c>
      <c><spanx style="verb">building</spanx></c>
      <c>Commercial building automation</c>
      <c>active</c>
      <c><spanx style="verb">building.hvac</spanx></c>
      <c>Heating, ventilation, and air conditioning systems</c>
      <c>active</c>
      <c><spanx style="verb">building.lighting</spanx></c>
      <c>Commercial lighting control</c>
      <c>active</c>
      <c><spanx style="verb">building.access</spanx></c>
      <c>Access control and door systems</c>
      <c>active</c>
      <c><spanx style="verb">building.metering</spanx></c>
      <c>Sub-metering (electricity, water, gas, heat)</c>
      <c>active</c>
      <c><spanx style="verb">logistics</spanx></c>
      <c>Logistics, asset tracking, and warehousing</c>
      <c>active</c>
      <c><spanx style="verb">logistics.tracking</spanx></c>
      <c>Asset and shipment tracking</c>
      <c>active</c>
      <c><spanx style="verb">logistics.cold-chain</spanx></c>
      <c>Temperature-controlled chain monitoring</c>
      <c>active</c>
      <c><spanx style="verb">logistics.warehousing</spanx></c>
      <c>Warehouse and yard IoT</c>
      <c>active</c>
      <c><spanx style="verb">city</spanx></c>
      <c>Smart city services</c>
      <c>active</c>
      <c><spanx style="verb">city.parking</spanx></c>
      <c>Parking availability and reservation</c>
      <c>active</c>
      <c><spanx style="verb">city.lighting</spanx></c>
      <c>Street lighting control</c>
      <c>active</c>
      <c><spanx style="verb">city.waste</spanx></c>
      <c>Waste collection and bin telemetry</c>
      <c>active</c>
      <c><spanx style="verb">city.traffic</spanx></c>
      <c>Traffic flow and signalling</c>
      <c>active</c>
      <c><spanx style="verb">health</spanx></c>
      <c>Connected health services</c>
      <c>active</c>
      <c><spanx style="verb">health.wearable</spanx></c>
      <c>Consumer fitness and activity wearables</c>
      <c>active</c>
      <c><spanx style="verb">health.medical</spanx></c>
      <c>Medical devices. Use of this term does not imply compliance with applicable medical device regulation; operators remain responsible for regulatory conformity.</c>
      <c>active</c>
      <c><spanx style="verb">environment</spanx></c>
      <c>Environmental monitoring</c>
      <c>active</c>
      <c><spanx style="verb">environment.air-quality</spanx></c>
      <c>Air quality sensors and networks</c>
      <c>active</c>
      <c><spanx style="verb">environment.weather</spanx></c>
      <c>Weather and meteorological data</c>
      <c>active</c>
      <c><spanx style="verb">agriculture</spanx></c>
      <c>Connected agriculture</c>
      <c>active</c>
      <c><spanx style="verb">agriculture.irrigation</spanx></c>
      <c>Irrigation control and water management</c>
      <c>active</c>
      <c><spanx style="verb">agriculture.soil</spanx></c>
      <c>Soil moisture and chemistry sensors</c>
      <c>active</c>
      <c><spanx style="verb">agriculture.livestock</spanx></c>
      <c>Livestock monitoring and welfare sensors</c>
      <c>active</c>
</texttable>

</section>
</section>
<section anchor="references"><name>References</name>

<section anchor="normative-references"><name>Normative References</name>

<t><list style="symbols">
  <t><xref target="RFC2119"/> Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.</t>
  <t><xref target="RFC8174"/> Leiba, B., "Ambiguity of Uppercase vs Lowercase in
RFC 2119 Key Words", BCP 14, RFC 8174, May 2017.</t>
  <t><xref target="RFC9110"/> Fielding, R., et al., "HTTP Semantics", RFC 9110,
June 2022.</t>
  <t><xref target="APIX-CORE"/> Rehfeld, C., "API Index (APIX): Core Infrastructure
for Autonomous Agent Service Discovery",
draft-rehfeld-apix-core-07.</t>
</list></t>

</section>
<section anchor="informative-references"><name>Informative References</name>

<t><list style="symbols">
  <t><xref target="RFC8594"/> Wilde, E., "The Sunset HTTP Header Field", RFC 8594,
May 2019.</t>
  <t><xref target="RFC9745"/> Cedik, A., et al., "The Deprecation HTTP Header Field",
RFC 9745, March 2025.</t>
  <t><xref target="APIX-SERVICES"/> Rehfeld, C., "APIX Services Profile: Discovery
Infrastructure for Web API and Bot Services",
draft-rehfeld-apix-services-04.</t>
</list></t>

</section>
</section>
<section anchor="authors-address"><name>Author's Address</name>

<t>Carsten Rehfeld
Email: carsten@botstandards.org</t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA+y963IbV5Yu+H8/RQY74phUIyGSomSZ6jrn0JJcZh3r0iJd
1ZeoJpJAkswSgERnAqTZljvm1zzAxDzheZJZ37rsS2aCkt23iYlRdJclALlz
X9Ze9/WtPM/dulrPy+Ns5+T96d9lp/V59qq8raZl9r6pryp886pqp/Vt2dxn
xXJGH5dtuaTvr+ome1kvl+V0Xc7sobOywX/bHVdcXjblbTTujpsW6/K6bu6P
s3Y9c7N6uiwWNP6sKa7WeVPeXJXzWV6sqp/yql7n+0eu3Vwuqrat6uX6fkW/
PH19/p2b0SjH2eH+4bN8/1l+8NTRS544V2zWN3Vz7LIsz6ple5y9HGcfZEz6
LMvkXS+Lpl2Xy+SbclFU8+NsKl/9z8t63a5ppUUza8d1c+3csm4Wxbq6LTH6
h+9eHh4cfKN/fX7w9ZH+9emzo2f26eFT+8E3Bwf7+Ct2IX/57sPrY35ntOnZ
6XJW/pTt4hd7NMO6Kemjq6Zo181mut40stUnm3W9rBf1ps1Orsvl2rY6HM8O
jxz2AX+G96Itm6psq+VVbb87Xa7LZlmu81c4jMEzmdLE8v2vZfpFc13Sz27W
61V7/PgxnUmxborpx7IZV+X6Cvv2mA748ZZxHjuHt6fb+vzpN7aX33x99BR/
Pc1fjW/pLMpFSUvOC1pMPrP1+m09e/3hj6cvX5/1tvbvPD0OUfPAJv+pvMSQ
TOjf1uuInP9Dt7bV14Dm/63ba2M9ppHenJyfv/6QbsubYk3zyc5W5bS6quhK
0u0aXh695NhueHVbre+zM7sX2cl8XhXEBfjH/kYOz37aFrjQPOliPs/ber7B
W9vHC54LZvru/cv8x5N0pvRZ9uOSJkns5aSZ3lTrkk/qgdnike/qDU0SL/iS
ydWr6ZV/QKZ4WW/W+Dyn990s63l9TSfKH2wKnuvL9+87M10RS3l5g6Gz93VF
l5PIbV1P6/lDc40e+jXbeXd3N67p2Sk/WuiTPPWVvpVmO12t6JLleZ4Vly1o
Z+3c+U3VZkQ2mwX4x6y8qpZ0M9Y3ZbaV9xfLrPyJuCJ4cLau8WPHPx5iU21M
U/TTYp2Vy+JyTi+ZxTLErUyGLIplcV3ydHD9Vjf3LT0+z6Zersx4Qu04O13b
+DJnt76r83lxT7RsgxeX1Rxkuqhn5TzbXW0u59VUR8im86JtR9mqqW5pf/VT
4kLg9dNyb8T74CfWVtdLmodt6MhGsd/TXnwsly7Mf5S8J5tXV+X0fjovR9nN
5jJflLOqwHLsBaOsvluWTXtTrRydzrK9KpsRsx1MA/c9a0rad95JfMzznt5n
zQbbWaxWtDRsLQ6lsxZ6kngsCa9YZhSQGa0cSrVYzWXT16CIlRw2CcCls630
qylWsqvY9WLNs9MV8tbfVUTZmzVN8Z4lMGYs5y+roUUQP7wtaUNuo90rl7MV
3xNeqY5r3zoZmoT/X4gGsEDeq/ya9gl7KLepauXKCpEvqtlsXjr3V2C3TT0j
igQDIJJX4h6i159/9lL5l1+S+zCtFwva+MAZHMiT9zCnV5c8D+W0gbaPw116
UxDjKts1xPqbvUxE3cjh+/VNU5YkxRZyq4jKaEL0S6baEb+6bKYVfV4vL2vi
ttXyepS1tDPMNB39YCV3PhDMZdGWqkfQ68fZOY7Z3/RKFqX7tmaZ65qSSM4r
csRGcOmm5YqIBKN6nYeO8J83VcP00mYtMR0cwbSp29bZDkA7a8ddBsOMA7LC
7z+/KbvCpuIX9NJ72r0rnsja9jNSEx/iBxDTJuuym4ImStSDC/Hjhx94CY5m
mtGxEMfgzy+J92TTpribkxRlZqdjydOze9IQiV2QpL6rm49ZMZvRXW3LdsQD
2VRoxnKHaVuXnpu0q4IGkvNQ1kE7XjWgXCZ9IqyWLhfdzDWNIIyUBqADw2HR
eH4fMCHdcpovs7xiXrXljE7sugIrZ56g1FIElhV4VZ9frIUe6FTXDryDp3Cn
yo7tIh3gqXGGummzNz+enWe4Ze3VPRPIFpqgfUhukrssr3Da/CIiXiG+2axa
C7l3H17HVDOWO/uxvM/uwMRIYaFp7Izkv9nbd/z3D6//9sfTD69f4e9n35/8
8IP/i/zC0T/e/fiDfo+/hSdfvnvz5vXbV/IwfZp1Pnpz8vc7vIeONJDz03dv
T37Y6U0zA03QHl7iFEmHWYFb072gX5TttKku6R/V0n378n12cETbo1YDsRn+
O8wG+vsd8Us5rnpJZyL/pN26x96VRYMh+GaSZke3BQSGKwiiuiFaGUNvyP5w
9u5ttiru53Uxa5WLzWzCzk+Yt29DhPbj+Xf5c+LA0xqcBSMuoNVh+nRFZHpk
v9D0zkrhos/HB3QsxFvPy2ZRsUZ0L8d0Vc/n9R2fMX3V8q5EM0gZLNZJE5jx
3E1yEFXzA0wcx8wrRvS/b0YpHx0ZlV5Us1HCMB0pPvSjVpUO/mZOEocUgHf5
Prhtvbm+yd7lT/f8IMoWVFHhX7vds+jXZ/kR/doubsKUiRWxOhWx5IxOnOwT
8GlRjs5W1QzynH7b0u43oi2MeuYy7epJuBeyhZ0D9BR37NyjR6qe0a5srgoW
Ys2jR9n//j/+bzCRLN0JXPkVi0KI7sBLVVsAz1YRDbZCukhWrdtUi8EZ8TkQ
pdk3i+jdJFlcwdw/q6+8QfoO0lquwjAlMMvj5bqdeLgdSCqmEFu8qSZ3TDLg
I+lL6P1e6QRrLmzFDSbkl0xCa3ZHtDmO9vAlVqibd7IEyWUJgxWWqZd52wYe
857FStIo3SDwVyI2CPrWGLPpviDfsSPBSJ+sakhKYigTrGcsY+/Im3I+jJ0J
nW/6NWmW9CnvFbTyN9Epyfmp4BdFeJT9wHrVgeqH8Wacqupl+6E/of+osGNO
QaJteT0PsjDb0LXFRhcufu04e9mUzE+w3gUZ7euC6YDYC2u3/Nuv2q62TQLo
pKdn2xJE0NoaDuM1eI/UGQ8TzjRSSOntC7rJpMFlLLtZGdB37dK+0jESJyLF
c8+EM19kP0OvsNK3JSsaVXuDA7Hl+eG6avhYpyVK0nE2sfs2GWWTG2Ly60va
LPxjVq7oX5Ohc8nOwUD86axIG9bJtyXxnjXpNcRGaan0nqptN7zZwot0OQlV
EmVH/yYzdkGy5EdcvPKn6XzTEt9jFSFW6XvGEZ3zK1pIRUwwu2rqRYfbiQ7W
uwwk2FteIf+IuLlflKhvI9IylrmuquI1kcUHdoK30gxpPf2t5sGwLCyezWFZ
Du4GfxUZmpgFuEXrRRAbYItqvTZlRZ6RSaQk9oYubcRxFyVZ4cRyFyCou5tq
ehPIiu/CV60nZajL8f3XXcSChMX+sZhvmEJWm/YGBDGd15vZBZMlE8vmUojj
+81lIPLK3EvMheh2XtNZ3RX3Ng3mYzxG/8KxVUP34iY35dHrxPwYWYSkMdLT
xVTkQGYqLJxeQsas9bg+X+KZKseJdsx40WaZ3s7bqrxjVpJyMLvmJDlxyyJe
S2Z+uS7YfoTyNM7elrBbp/ZDTxv4STSZw3gyxlWG59LlRWZXu5MpbVFbYbdZ
cdM7pr+vRf4tcZtgpldQ+YnXl9fCFNkS5xl9wMbi0OLj1JfRf+jOXc2L63Hy
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
dnoHLfgAfP+gUEISV9JoC6AHKmn+/J/Vw+jZwy2MDp7vx0U2k23rmfQxXT0w
acJ7Tl+1nDtmsS7UKBKVMi8VtI3kHga80U61iANH1V4vEeBHR3MQxUVeo/iq
YJxdViy/f9SLMotjbaCVmzIN5VmeQZGB1dVcjbkaGiGntZ0i7NTWIYo9SQhp
Ai1b+cE9548p+w/ZHCoULWoU1y2m7NVii2zmF+LWMhS+Dg/7Na3BOlT5a66E
z9G+wE/j+3AT7oMy3Fz0gPw2tAL7NW3HsGUqkX99C7I//zvess91Cnu2n16z
DjlUS3Faek92z9Ui10mIwkfLh6pZuwU4KlNxBwEAqhTChaaS9OtBqlklkWcM
l0Eub+59qQG8Ag1XAsyx4BR4oOHELYJM2EGSYJYSF3uyy0qTKzTpbsSZXChI
TqzeLa2G1CgRhHXbMy+BSTnfzoC6Xdx1JUmWQ1TfrxVtHf4EYyTWRYzBGGc0
l7+2LRCAYckluZTVQiXBCPLcdm5sTsa2P83AZS3sLq5ADtBHG8elzKBklrT9
3VSY0zQT1einbmJwPq6SMzpi7hf1SummlSe9UsIRCdD+OsFywcIEnQ0BNDYH
WLVVGEykwJuNZs3bhZkRG8WYNtuqddewoiIoF7lJZmTEiDke/CVpH+HUGIMx
V7X60xC27awxuL8UvcWlVQ8vlKxjpPCHrxBLtUHS9daBkWGq42Zd1VZrGmAy
zLQ1nBe1UfYeo+R1amzZivLIZe2xcRbFgO0IJnN3xSXLPpodU49KLxpoz7dd
5bMrrbFLn63p4ObRR3R0cFDfUkwG2ht32lQLMlni+/jV1dl++z5Xp40f/pYi
bTDNCGuGpXYFCs+Lo+nh11do0/350mzZgagC20bkmUSqQDpFE6q/vlJ8qBx8
P/SgjHInffL1zrEK288J/TsNGew/pp24Ovq6mB5gF/qNGQcM8z7zF+ABZFcn
QRTBHDiOnbI3hWb/FrHbQoM2ll0rbN55BwiCmqmzXsMMFioS76d41jiLX1mn
vjT2Ghlk3GRo+yYG05vyI8e+NJsd57S2dnXaDnptjPNMr0hy/n0dd1c3l75S
x2632PPaRvfC4gpLtqJCf30sZyO3e7kXv/0LH5omD3k3s7cGIrs7rfPviFEa
ajYwYxtKQLMDPIjBH9WN2y0HphDU/S0KT4A7pL2Dcw3ELgy0ryOExBvwfyvd
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
YrsNrN7Z/wJqpU3kt8wBAA==

-->

</rfc>

