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

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

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

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

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

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

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

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

<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>
      <section anchor="iana-considerations">
        <name>IANA Considerations</name>
        <section anchor="additions-to-the-apix-protocol-type-registry">
          <name>Additions to the APIX Protocol Type Registry</name>
          <t>This document requests the following additions to the Protocol Type
Registry maintained by the governing body at
<tt>apix.example.org/registry/protocols</tt>:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Registry value</th>
                <th align="left">Standard</th>
                <th align="left">Spider behaviour</th>
                <th align="left">Status</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>device-class</tt></td>
                <td align="left">APIX IoT Device Profile (this document)</td>
                <td align="left">No Spider crawl -- presence-based liveness</td>
                <td align="left">active</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>hub</tt></td>
                <td align="left">APIX IoT Device Profile (this document)</td>
                <td align="left">No Spider crawl -- presence-based liveness</td>
                <td align="left">active</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="apix-presence-mode-registry">
          <name>APIX Presence Mode Registry</name>
          <t>This document defines the initial contents of the APIX Presence Mode
Registry, maintained by the governing body at
<tt>apix.example.org/registry/presence-modes</tt>. Values in this registry MUST
be used in the <tt>presence_mode</tt> field of device class APMs.</t>
          <table>
            <thead>
              <tr>
                <th align="left">Value</th>
                <th align="left">Description</th>
                <th align="left">Trust ceiling</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>push</tt></td>
                <td align="left">Device signals directly to APIX presence endpoint without intermediary</td>
                <td align="left">S-4</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>cloud_relay</tt></td>
                <td align="left">Manufacturer cloud relays signals on behalf of the device</td>
                <td align="left">S-1</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>hub</tt></td>
                <td align="left">Hub gateway relays signals for mesh-protocol devices</td>
                <td align="left">S-1</td>
              </tr>
            </tbody>
          </table>
          <t>New values MAY be registered by the governing body through
its registry extension process. Each new value MUST specify the trust
ceiling it imposes and the conditions under which APIX can independently
verify the signal's authenticity.</t>
        </section>
        <section anchor="apix-device-delegation-scope-registry">
          <name>APIX Device Delegation Scope Registry</name>
          <t>This document defines the initial contents of the APIX Device Delegation
Scope Registry, maintained by the governing body at
<tt>apix.example.org/registry/delegation-scopes</tt>. Values in this registry MUST
be used in the <tt>scopes</tt> field of delegation grant requests (Section 6.3).</t>
          <table>
            <thead>
              <tr>
                <th align="left">Scope value</th>
                <th align="left">Description</th>
                <th align="left">Requires</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>devices.read</tt></td>
                <td align="left">Read Layer 2 device instance records (network addresses, <tt>api_endpoint</tt>) for delegated instances</td>
                <td align="left">—</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>devices.presence</tt></td>
                <td align="left">Receive presence change notifications (online/offline transitions) via webhook for delegated instances</td>
                <td align="left">—</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>devices.command</tt></td>
                <td align="left">Call the manufacturer's device API via <tt>api_endpoint</tt> on behalf of the device owner</td>
                <td align="left">
                  <tt>devices.read</tt></td>
              </tr>
            </tbody>
          </table>
          <t>New scope values MAY be registered by the governing body.
Each new scope MUST specify: the operations it permits, any prerequisite
scopes, and whether it implies any data access beyond what is already
visible in the device instance record.</t>
        </section>
        <section anchor="additions-to-the-apix-capability-taxonomy-registry">
          <name>Additions to the APIX Capability Taxonomy Registry</name>
          <t>This document requests the following additions to the Capability
Taxonomy Registry maintained by the governing body at
<tt>apix.example.org/registry/capabilities</tt>:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Term</th>
                <th align="left">Description</th>
                <th align="left">Status</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>iot</tt></td>
                <td align="left">Sensor and device data</td>
                <td align="left">active</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>home</tt></td>
                <td align="left">Smart home and connected appliance services</td>
                <td align="left">active</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>home.appliance</tt></td>
                <td align="left">Connected home appliances (device-class services)</td>
                <td align="left">active</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>home.appliance.dishwasher</tt></td>
                <td align="left">Dishwasher appliance</td>
                <td align="left">active</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>home.appliance.heating</tt></td>
                <td align="left">Heating and climate control</td>
                <td align="left">active</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>home.appliance.washing</tt></td>
                <td align="left">Washing machine and dryer</td>
                <td align="left">active</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>home.appliance.cooking</tt></td>
                <td align="left">Oven, hob, and cooking appliances</td>
                <td align="left">active</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>home.appliance.refrigeration</tt></td>
                <td align="left">Refrigerator and freezer</td>
                <td align="left">active</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>home.energy</tt></td>
                <td align="left">Home energy management and tariff services</td>
                <td align="left">active</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>home.energy.tariff</tt></td>
                <td align="left">Energy tariff and pricing APIs</td>
                <td align="left">active</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>home.energy.grid</tt></td>
                <td align="left">Grid demand and load balancing signals</td>
                <td align="left">active</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section anchor="references">
        <name>References</name>
        <section anchor="normative-references">
          <name>Normative References</name>
          <ul spacing="normal">
            <li>
              <t><xref target="RFC2119"/> Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.</t>
            </li>
            <li>
              <t><xref target="RFC9110"/> Fielding, R., et al., "HTTP Semantics", RFC 9110,
June 2022.</t>
            </li>
            <li>
              <t><xref target="APIX-CORE"/> Rehfeld, C., "API Index (APIX): Core Infrastructure
for Autonomous Agent Service Discovery",
draft-rehfeld-apix-core-04.</t>
            </li>
          </ul>
        </section>
        <section anchor="informative-references">
          <name>Informative References</name>
          <ul spacing="normal">
            <li>
              <t><xref target="RFC8594"/> Wilde, E., "The Sunset HTTP Header Field", RFC 8594,
May 2019.</t>
            </li>
            <li>
              <t><xref target="RFC9745"/> Cedik, A., et al., "The Deprecation HTTP Header Field",
RFC 9745, March 2025.</t>
            </li>
            <li>
              <t><xref target="APIX-SERVICES"/> Rehfeld, C., "APIX Services Profile: Discovery
Infrastructure for Web API and Bot Services",
draft-rehfeld-apix-services-01.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="authors-address">
        <name>Author's Address</name>
        <t>Carsten Rehfeld
Email: carsten@botstandards.org</t>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+y963LbWJYu+F8RegeEOuKU5CZpSZadTrrrnOO0nZWu41tZ
yqq+RLcIkZCEMkmwAVJKdTk75tc8wMQ84XmSWd+67b0BUHZm3yZixtFdaUvA
xr6sve7rW8PhcHdnXa7nxTjbe/7h9d9mr6uz7GVxU06L7ENdXZb4zcuymVY3
RX2X5csZ/bhoiiX9/rKqsxfVcllM18XMXjotavy32dvdyS8u6uImGph+Ns3X
xVVV342zZj3b3ZlV02W+oE/M6vxyPayL68tiPhvmq/KnYVmth4dHuzvN5mJR
Nk1ZLdd3K3r09auz7+lNGmicHR8ePxkePh4ef7O7Q196tLtDn92sr6t6vLuT
ZcOsXDbj7MUo+ygj44dZJp98kdfNulimvyoWeTkfZ1P53f+8qNbNmhad17Nm
VNVXGH9Z1Yt8Xd4U/ImP3784Pjr61v7++MnJE/v70+PH/vNvj44O+e/Yi+GL
9x9fjeWD0eZnr5ez4qdsH48c0PyquqAfXdZ5s6430/Wmli1/vllXy2pRbZrs
+VWxXNuWh2Pak6GjjcCfLZvRFHVZNOXysvInXy/XRb0s1sOXOJXew5nS5IaH
J7qGvL4q6Lnr9XrVjB8+pLPJ13U+/VTUo7JYX2LnHtJRP9wy0ENsK2bQ2tin
j7898Q385uQx//318OXoho6kWBS0+GFOixrObOVhi09fffzj6xevTrvb/LdO
o30U3rPhfyouMCYT/3fVOibx/+htbvRTfBH+rVttg/F2D4fDLL9o8O4a/z67
LpuMXtwsQFKz4rJc0gatr4tsK1vIl1nxE90SXM1sXeHh3R1+uo90m1UxLS9L
YgD8+HW+zoplfjGnr8xi/rK7szIGs8iX+VXBE8I5rK7vGnp/nk2d6cx4Ss0o
e722D8isiavdVsN5flfUPnx+Uc7L9V22qGbFPNtfbS7m5VSHyKbzvGkG2aou
b4iz6E9Blbj/0+JgwHvhU2vKqyXNZFVX62pazQc2jD1P+/GpWO7uhCUMki9l
8/KymN5N58Ugu95cDBfFrMyxIvvCIKtul0XdXJcrWkudL5vLoh4wDWIiOPes
Lmj3eTvxY5769C6rN9jTfLWi1WF/cTTt5dCrdPGIp8XcJAc3aeRoysVqLju/
BmGs5MyJL9KabD99QflKthZ7n695frpI3v/bki7IZk2TvBPujEkLHciCaB10
OW4K2pSbaAuL5WxVlaBGLFYHtt/u7sjgJB3+TLSARfKGDa9or7CRci3Lhr8z
MpJflLPZvMC//uqvcAHrakb0SU/IHVBq76Pfv/zFWffPPycXZFotFnQGl9WG
BIWMBXLl7RzSFAqej96+QOzjcLve5ksih2YN3v/2IBNGOKBzpwfW13VREIdb
yEUjoqMp0aNMxQP+eFFPS/p5tbyoSFCVy6tB1tAeYSoNidyKzrLMmaaMfC7y
plBxQxMYZWc4c7/9paxLd3DNPHl3py6IAl3w53O+h9NiRSSDYV0s0nH+86as
mXqarLnOa5zGtK4amoztAkR5M+oyHmYosyY6Bv5Ydom9xRP03Tvaw0uey9p2
NVYs7mMTYOPGBrPrnCZL1IQ78uPHN41wH5puRsdDnIR/cUFMKZvW+e2cOCyz
QR1MXp/dkTJBXITY+G1Vf8ry2YwucFM0AxnJJkOTlptNu7t0LtOschpJjkU5
Cm18WYOU+TIQiTW4cHRd1zSEMFkagQ4Oh0YD+l5gSrrzNGNmhvm8bIoZTu6q
BKdnVqF0kwdeFphYl42shTDodElKgKfwJG5VItpW8kG+NpZR1U329sfTswx3
r7m8Y1rZQh60GcnF2t25KC5x7PwtImWhxNmsXAvxt99ex+Qzslv8qbjLbsHg
sj3MZG8g/83evee/f3z1hx9ff3z1En8//eH5mzf+F3lid4f+9f7HN/oA/hZe
ffH+7dtX717K22+f/92e7Nve+w9nr9+/e/5mz6bF6q2QNUiB9u0CZ0dCfwXO
TZeCZl4007q8oH/wTqg2+fPPRKq0ab8/ff+O5GF+N6/yWaNMZ9ZZtuz2hojh
x7Pvh0+JcU4rsAF8YAHtdQ0qIErmD0AtJQ52WjCDyJ6OjnjbmCOeFfWiXFbz
6urOtvKyms+rWz4J+mXDS4kmkrJFbATNY5ZdE0ka4wcB8ht8hmO+2wP637eD
lPsNjJ7Oy9kg4XK7O6TW0FONKg/8qzlJDBLj74eH4JHV5uo6ez98fOCj6C1W
hYOf3t3ZP40ePx2e0ON2zxJeSryDVaOIk2Z0UqRygr2qmnO6KmcQyvRwQwdR
i9AfdIwi3t/ngYZlI7ed5hhPP3ig2hZtzuYyZxFUP3iQ/e//4//Gvc/S/cAl
XbEogwQOHNDEPritSlpwAlIrsnLdpAoJDovPg0jPfrOIPp6BoHNm3Fl16UbH
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
9T689LtXxIeaAq7D/xGk82+JJeAl/q1Kw9avu1dv25//Jlrib9f1JqiEDx68
3ebBU79Mb0ZEyKZoxakqjj6euT/c/MBJ1mAwwjTvYeDZhBw/MP9hlJvFQf80
ncCT8VxfiNTkS3UXSHg+WGQeuE8DNhLgi7VJt9mhX7MbmR1EiCjgyriB0g0w
c/Cewzo0i+iXptb+ucGG/AUHR2JkkYqRQ6Rg0S+CBoqfswZxc4KpqAYa6Z7i
hyxTf6oOg3x/DPBDvqGlTZHBnD1F8FoNI30sclri6ZDFE0wofLsgs+QK/nTS
lzQDRwfwnN5zmt8Vf1Imqr9niwbSTuVfnMRzbpP87vSH7Ae4Y56b/tlkv1tc
/CBj0Ft/3pAxOSunNs+Xr/xXMbWdLzeLC/7c3g8fv8uOjh+dPH7iT3JclPSM
MBvMx9RE/HiPc8arVfM/i59yGDojokx7nx6mzcrnuU2CHw4/St6RV1ig/6zn
StZ+tA/wlOy1c19spnYD8AD08qGmdfoDsbnBD2lqPP18dC0nPtLp4Gf+Xr+Q
ohF6zQ3fuJbRYNPqtbijRaj4xJ3FKwg3xCvok7A8FTJh/NueMXLOoX4S8+cN
Ge/LGR59dHhozy3yn87V+I4e+PbwMDqCWKbxh+5ZhK5QCF+nQ0sqp+XyKjpG
5kdY3GVdFItys4iWz8+2T2gG0xhE1zknGzyeMD1BxERTdRJehPd4aucp5cQP
YEtuSdjU5zCcz6c8sq6EYxLbriWb75j0++FJIB3lS/7L0+FR+CUR9zlyYcBH
l9M7+v1yM5/bry3dMLl599LH15/8l87ebuHuzs8u+95Va00NCWljvQ4iT6WI
tBNx5SBhB2HSyP1CMv2q5vSGgWaHR/EzsjPpqcWqkSzXBqkD6mJDuvpSon8a
ZktVBf+wOGMi9//UnCNN9vb536njFiGAiRKTxXw2jWX4NNPrYpFbuBFe8b54
4/ckWaIwJ38H/jGMMNnTEMjeJNPP7O54CBQpXeV0M8/rOYIORC35cj1GPjk7
QURhtCjQImd3FmLhcNW1k9eH19WGBWutWQj015scEQAEYuAKgt8o4yB69qdr
+CAnPBHO84jmqRO3K2nK6EQcYReFuqTMWbm7I/qbpmVzEm+uiYFQVSSwwuV5
A1YgSGkpuJanjNQNe1LD0qgcsky6wt//utMUPrD1MNndHSWbcxb7/QFl6Gk+
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
qrUC+9d4De3v/Q8kL1GSnrcBAA==

-->

</rfc>
