<?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.35 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-rehfeld-apix-iot-00" category="info" submissionType="independent" 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-00"/>
    <author initials="C." surname="Rehfeld" fullname="Carsten Rehfeld">
      <organization/>
      <address>
        <email>carsten@botstandards.org</email>
      </address>
    </author>
    <date year="2026" month="April" day="29"/>
    <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@bsh-group.com",
      "escalation": "apix-escalation@bsh-group.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@bsh-group.com",
      "escalation": "apix-escalation@bsh-group.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 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-00.</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-00.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="authors-address">
        <name>Author's Address</name>
        <t>Carsten Rehfeld
Email: carsten@botstandards.org</t>
      </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-00"/>
        </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-00"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+y963IbV5Yu+H8/RQY74phUIyGSomQZ6jrnyJJcVh3r0iJd
1ZeoJpJAkswSgERnAqTZljvm1zzAxDzheZJZ37rsS2aCkt23iYlRdJclALlz
X9Ze9/WtPM/dptosykm29/z967/LXtdn2cvyppqV2fumvqzwzcuqndU3ZXOX
Fas5fVy25Yq+v6yb7EW9WpWzTTm3h07LBv9t91xxcdGUN9G4e25WbMqrurmb
ZNXqsnbzerYqlvSCeVNcbvKmvL4sF/O8WFc/5VW9yQ8PXbu9WFZtW9Wrzd26
xHPzcl3S/6w2bk6jTbLjw+Mn+eFJfvyNo5c9cq7Ybq7rZuKyLKeft5PsxTj7
IEPTZ1kmr3xRNO2mXCXflMuiWkyymXz1Py/qTbuhFRfNvB3XzZVzq7pZFpvq
psToH757cXx09I3+9fGTkyf616fHj+3Tb46ODvFXbEH+4t2HVxN+UbTj2Wta
zE/ZPn5xQNOqm5I+umyKdtNsZ5ttI/v8fLupV/Wy3rbZ8ytavO1zOJs9Hjks
Hn+GN6Atm6pscQL2u9erTdmsyk3+EgcxeB4zmhgOhKdfNFcl/ex6s1m3k4cP
6SCKTVPMPpbNuCo3l9ish3S4D3eM89A5vD3dy6ePvzmxXfv65DH++jp/Ob6h
AyiXJS05L2gx+dzW67f19NWHP75+8eq0t7V/54lxiJQHNvlP5QWGZCr/tt5E
tPwfurWtvubfY3ttLNriPM+z4qLFkxvnzq6rNqOHtktQz7y8rFa0L5vrMtt5
7YtVVv5EFwG3L9vU+LHjHw8RabsuZ9VlRTecf31dbLJyVVws6CXzmH24tbGP
ZbEqrkqeDjZ/fX3X0uOLbOZZypwn1I6z1xsbX+bsNrd1vijuysYPXlxUi2pz
ly3rebnI9tfbi0U10xGy2aJo21G2bqob4hn6KdEgrvesPBjxPviJtdXViuax
bupNPasXIxvFfk978bFcuTD/UfKebFFdlrO72aIcZdfbi3xZzqsCy7EXjLL6
dlU27XW1dnQ6q/aybEZMdJgGTjtrStp33kl8zPOe3WXNFttZrNe0NGwtDqWz
FnqSbhjxq5hjFOAYrRxKtVwvZNM3oIi1HDbxvJWzrfSrKdayq9j1YsOz0xXy
1t9WdCG2G5riHTNdzFjOX1ZDi6DbcFPShtxEu0fce11XIEKsVMe1b50MTWz/
L0QDWCDvVX5F+4Q9lEtYtfyasRD5sprPF6Vzf/VXuG1NPSeSpG9B80rdQwT7
88+eKf/yS3IhZvVySTt/WW+J9/NIoE/exJzeXfJE9KIF4p6Ey/SmWBEJtBtw
9TcHmXC6kcP3m+umLImJLeVaEZnRhOiXTLYjfnXZzCr6vF5d1CR5qtXVKGtp
azCR1tEP6PQLpiKjmIuiLVWM0OvH2RnO2V/1ShalG7dhluuakmjOC/Fiwbdu
Vq6JSjCql3N0hv+8rRommDZrr4sGZzBr6rZ1tgMQzO24y2GYc8zbaP/5Tdkl
NhW/oJfe0e5d8kQ2tp+RinAfQwCXNlaXXRc0USIf3IgfP/zAS3A004yOhVgG
f35BzCebNcXtgpgoczsdS56e35FWQPyCGPVt3XzMivmcLmtbtiMeyKZCM5ZL
TNu68uykXRc0kJyH8g7a8aoB6TLtE2G1dLvoam5oBOGkrMn8hMOi8fw+YEK6
5TRf5nnFomrLOZ3YVQVezkxBqaUIPCswqz7D2Ag90KluHJgHT+FWZZ3tIh3g
a2MNddNmb348PctwzdrLOyaQHTRB+5DcJHdRXuK0+UVEvEJ883m1EXLvPryJ
qWYsd/ZjeZfdgotle5jG3kj+m719x3//8Opvf3z94dVL/P30++c//OD/Ir9w
9I93P/6g3+Nv4ckX7968efX2pTz85vnf78mG7b17f/b63dvnP+zZnJynZBAA
bdgFjoxk+Rq8mS4BzbpsZ011Qf/gTVB98JdfiDxpv/5w+u6tWxd3i7qYt8pf
5r0Vyz5viQR+PPsuf0rMcVbjzmP8JXRPepcj4uXhoVgSrzotmRlkT8dHtGFg
e2dls6xW9aK+upMdvKwXi/qWt5++ankN0RRS3ocNoBnMs2siQePqRHD8AJ/b
hK/xiP73zShlcSMjoPNqPkp4mSMthX7UqkLA3yxIGpBwfpcfghHW26vr7F3+
+MAPojdWlQj+tds/jX59mp/Qr+1OJfySuASrOhG3zOh8SHMECxXF5XRdzSFr
6bctbX8jknzUs2JoW58HkpUt3HWCE+cePFDViXZle1mwfGkePMj+9//xf+N+
Z+lO4DauWUpBrAY2p5Ic7FTFJ2486QlZtWlTDQNnxOdApGbfLKN3E9N3BTPm
rL70psI7SFIh3GFKYG7Ey3V78XB7ECJMIbZ4UxtumWRwxdOX0Pu9QgiuWdiK
G0zIL5nkyfyWaHMc7eELrFA37/kKJJclvE+4mV69XRs44T2LFZhRukFgfURs
kMGt8UzTS0G+Y0cyiz5Z1xBidP2nWM9Yxt6TN+V8GHtTOt/0a9L66FPeK2jM
b6JTkvNTmSxK6ij7gXWeI9Xd4s14rWqR7Yf+hP6jcohZBUmd1dUiiKlsS9cW
G124+LXj7EVTsiaK9ZKtS0KY6YD4C2ue/Nuv2q4mTLLheU8HtiWIDLQ1HMdr
8I6CUx4mnGmkLNLbl3STSbnKWKyynNZ37dO+0jESJyKl8MDkJl9kP0OvTNK3
JesAVXuNA7Hl+eG6KvJYpyX6yySb2n2bjrLpdVk0mwvaLPxjXq7pX9Ohc8nO
wED86axJU9XJtyXxng2pHCV8FWBQVdtuebOFF+lyEqokyo7+TbbsshxnP+Li
lT/NFtuW+B5L71jd7hkudM5k5RJlkP582dTLDrcT9ah3GUjmtrxC/hFxc78o
0axGpACscl1VxWsiawzsBG+lGdJ6+lvNg2FZWDw+0eXgbvBXkRGIWYBbtF4E
sXG0rDYb0yPkGZlESmJv6NJGHHdZzq7BcpcgqNvranYdyIrvwletJ2VosvH9
113EgoTF/rFYbJlC1tv2GgQxW9Tb+TmTJRPL9kKI4/vtRSDyygx/5kJ0O6/o
rG6LO5sG8zEeo3/h2OCge3Gdm17n1VV+jKw1Uubo6WImciAz7RLuCCFj1lFc
ny/xTJXjRDtmvGi7Sm/nTVXeMitJOZhdc5KcuGURryUTvNwUbNvVK0zobQmb
cmY/9LSBn0STOY4nY1xleC5dXmQ2r3s+oy1qK+w23m13TH9fi/xb4TbBhK6g
jROvL6+EKbKVzDP6gI3FocXHqS+j/9Cdu1wUV+Pkc2KI08aem2SXdIzl1JGA
XIks2jZs50yLdXWukmeKh3CQkVERzVcJ1flH2+16XTc01/NokHZK+lC7IXa2
JWLwRM0qH3ONOa0NfMBBi//nLfww9LrtQtf6yjgoHeUlLvasjKUvKQekMhHj
mTN388uly7+YMzWSybYGHxGBoFsglCBa36ykf9ENrpbruh0QN2p0uU29ZhVW
b1w23avWN09Yks6ZAtp4d+hm3FRYW5HdkI00z64W9UWxcCT7ZmTmZ6/f3zwx
Ow4bi0NY1i1uzQy7aezeTDbQBd0r0vMdrwHmpr9U0YROzusLqKvlPJnZqk7f
eEuXz6b4LJ531WaeTIRKb6pCZhfxZNoW5jIi/MZ6yfkgWlHB5ACYwcu+95dj
RpMrZrDt6SXh97aLYqDoPbzNXsEvOxOG/IFMNfZi/PDqw4EXB+zNgE7HrvkN
bk6jPxQqW3knDX21oDHLaExzQ/DdBD3zZmFCNxVdXCGb+tLVq5KleN2U3eve
8obhke6EX9Q10ai4bNjvSruZ2D1mOX0zfgo+ktqeGS0TVMUsZHXlamKIV4UY
EuZqYRm4pcOvFgu5Bk2xLNllAKFFrxBhQ7+lZfBkSvYgkDhbDFtfNqfHasul
cRQWbAsx6oLXIja0QFBFM7uuNiVIR90qsfxXrcm7WOKH+6aAudPZjg1P6Suh
+28Xixw+p/nEeYVMLCts34VeU31ubAuKnie5Js+bVHOJ28RLw56nJNWWErNA
D27kwE/ZIFFb7wreuVXHgIrtTLV6eHo1ux1d8BLSviQPghC64oc0/FY9OPSD
GWQR9PE7p7tfsC4e7yWeIIZddr2QRgtPsv0zng+f/gGrAz0nnhpBa34CEnqx
EPeibbW5c4SGYdPipFSI0CHd1j1vnJJN4tqbpN42aI8vTcdV31EmntY3kRk0
VQY1LzfsnKAn5WoI3bETG14nH6JhmzZ+vi1Zq5/GxtaUxZocqUkS2Jqyb8zF
+DBpackaHjzg1Xd8hkXkNYQ3bUlsmWaaE3+e8+dpUMM4xciBCoKDMYi06Cp4
ug8bFzkSibe5y6pZwviVu5BBzWFPO2/ETock7/WdaYAkrMSpOefP48tTQepd
s3MVmhBU6UpcbLRH94dPsFvd2VfqWS/Zlhf3Ijs8S1JP8GTk2DOPI4vFyOcY
nwCHcisSj1tvuUcc3iQXvG6imdJ1CnNdlGxSk6lHYvaapSVJUjq6ZPlFRlZE
W17XRIb1bLZd09h3Kh9JV1yJxuc1atWNhErt5L3ezUxc3kE/L7Ir+KDYQuPY
SbW6RETkuiQyaPjNS54Dv7eS46nY8KcXkY7NAllozDYwctw6UlDr1sKSFzUR
RMz5hA2V4rZr/M1WOdsyXTcVwif+nOXWYbR5erAT58z9kOdGs+yDsSDawYSv
d0f9j1gv8/SBM2JjfnUn2zyi04Uyyg4LEqN3HJnCllca4Qs+nVtolZGSwo6s
qh3xF9BicFrzWvw2cl7eTqJvt3xN3tYhqMTWSNV6PbvQ6BfvjR6N7BP9pS0u
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
WgWVIzeFLSM3vS0viFV9nGqu+JQ2b8oLxTdtPftYkmKfviSod66nZCWJQ1ax
1FUpfLGqzQWHyUpwS4/NCqhmyTO2baw/kP7TIqFiZfLT0b4hcVzqP8RE3kAl
DpeExt8/PX2VCcbAKS/rILvGcbPCUW/bAhehvrSzvi0q1qflaqi73sqKZT6a
WTibbRsuz2Z5S4ykvBXLlI2wO2IJQxmit8TLysstc3U9A1MqZih8mmmC6CTO
5XRSnsHaKRtVnN1esMG0sqk8g40cLZxGlYXS1S1L/W0bjKVgCutFy/bTHIiY
/jTDo5MTQyysEq08ZIh0q/lDRQioS380tYJi+/XUaT0AZt7O6BDp4Cwp80AM
RHp2NcQG4vogC/8kWu+QdqvsqWWNcmeFWiSynZoglsVJ9L2rLqCrK7LPCNXf
3dn5sxlUfaUI5k981N7XbkK+5SLvorfdlVa2mogizs8GFed1s37Y+nlwPlWU
oARtcbtC2aZtwLOsp1fZC12wZLku0CSirZFYYFvNyyRHHnnpKJmQM5nu8E2G
DFY9IrE8Wsvm/TuPhOPedwKFbUw1NjPJI7S0c7vSd2wJ4iJxGRIW3df5n2/U
cbHo1kLqjIgzSqWl884tXxWoc9Ij7B0xnDpFy1mDPgwtkkEmvqxvytZPn6u8
VuWtEGhUiBeiNdCqkzeonOmbd+laaiS5SpZ9eetpVPVVKXFhK87vcQO8npVW
f7RkfiyIkZTESxd3IbM8ZJWZBcLj+ZQCXepMsqdLXVuvvvCZsx0AC7gjM04e
FG9itdrKEObPqRfIhq9htHjKtSqMXqEZOxmgkPhiRlt8qAtyO6k01oB6p+FH
8uoVq0fgCktJr7MyVf9u5BhxiiVY/X45viKp3M2DOPJ5ENPspnW970OexPSA
czu1zokUrVL9nyJXhFlc1PO7ccIgbdrih9Q6GklZjxCgsqttwbggnMb6oVxU
Ph2TpLlPh9NCvoNJ9oode/qxJwF7GRTb1hmnEvN8R7UpNomGxSYpl+VtazVK
5xP2ScIujFeTOrua17c+Ntk7o4hnRBW3xgot5bg37VuypdQUg9ZjwDCytw58
NS6o4AUZcgttb+TFIy7MdkRhpb3mtrNchg3UhuxiWy2Qzwous9FL6Cus0rVC
uxhkKj6bvO2yk27GRcw2vmodTI/t+qop5qhd2lyLSC7i7HOipO8WpM4lpGCp
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
7bBffExXvVMMH9U008NxjjMyPxY9iP6o4Yzz1WEB342NszZBkBQcEcahErd3
WqiUVPpIW8vYhSLFipxaNpXbJpdt6sz32eW16axglelkhP+zR9qnMsWOFFgb
jHfH1k8tT8gYjLHgM+aDvPAa0gDYVYL1JlbQEGjHjt1EXcgl58nxpsZALhES
S2ftzpATph1mwwaqBtbxHLKyhVEnUIOcOXTP8fDyBGw3qjjgAh+fowIQOEvQ
OAtTTN8TskIEqXiees1w3AY3+o01nGKMmrBJpOedc/SslhKp1kO4RkaA4Zt0
Uea8yzmqAgBtSCqBtQQg4gCxyFHH3TdWaTB0kzzlEUz8S7fttdN2kGf3+DeC
Ju8bcneA2R1aiZBatSVy5s6/Abje4+r6FDD9G/NtATz0Nk5ospGiDXEPuR2a
WFNq2DU0iebLngCVD4VfI9QormJe0rSXjB/CWk2xcvSvprQCRV42l1R7fywX
k4Rlc5y/XghakL6bln9V9oN8cUlJ5wpqWAiM0BIIUBjeaUhdGhDwDlfpfZXp
LqpMH8i9CIFnXwPWj7wzQLfly4T8BKjN1xFpDljavoWV1EllIZtO15fts7JP
XF/CMA8lKPtQYrIjVdvS4CcAeP46/+I/f00//5SlllkG3B3AwEPy0IYuOAAc
sFg+JTA7+ONTL2Mcu+j3bLmcYzHnsFxYZPSNFfv9r5x+9OdT5598At6hqHHu
dBcPuo+oH2eip1dEwDyyPekDN/RPsCAfxDfQonAkRH4N/BBsBzW/6YA6wgIv
1obfAXQ43vDk94quaL8PTpXwe3GA2EWc4It//DkdYETa1i9//vc+oH4LrgHn
RucZ+DomQ0vcZ91Lt6N3sN/Wc99ArUvxVhi64+GbnYveuRVybmJEHRFRvP/x
2x9evzjIwqfH+PTD6z8+P3t1kB6d+VbLTYE+BfZpgLpXDAt7JPXIlngifBqe
igkkxieTd+DTbIjQ7JGhP/g0UUbig979iLzHUhyiR37DJtuffxp8G38T/Wp4
TvZ6UiNXd0toH+IaCX/iNjEKq0W/Vyu8arlx7130+9+/OvNwW/9Djut3UIrF
fuDsHmXyL3iMHyx+3umvG9rVVh2ocGmLc1mhaOyP0EvctBOE9+BCA7FMMOup
ROingqyp9TBT6TiBEubz+vIcQ04tm6cIxXqcJ8j6amgXYJL1bl2Oe9FPmuuV
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
aUatAQA=

-->

</rfc>
