A PairingRequest is one pairing window on one adapter. Create it
to open the window, watch status.seen for the controller you put
in pairing mode, and approve that controller by writing its address
into spec.device. An empty spec.device never pairs anything.
The resource is namespaced, so RBAC can grant the right to pair in
one namespace without a shell on any node. A finished request
reports Paired or Expired and is collected after its TTL, and
the Pairing it produced records the
request’s name. Pair a controller
gives the steps.
One pairing window on one adapter. The scan and the window are one radio session, so an address in status.seen is one the radio observed in this same session.
spec
What a person asks the operator to do.
| Field | Type | Required | Description |
|---|---|---|---|
adapter |
string | yes | The name of the Adapter to open the window on, which is that radio’s address in lowercase with dashes. Only the operator holding that radio acts on the request. Pattern: ^([0-9a-f]{2}-){5}[0-9a-f]{2}$. |
windowSeconds |
integer | no | How long the radio stays discoverable, pairable, and scanning. The operator gives bluetoothd the same deadline, so the window closes on its own if the operator stops. Default: 180. |
device |
string | no | The address to pair with, which is the approval. Leave it empty to scan and report, and write an address from status.seen into it to pair that one device. An empty value never pairs anything. Pattern: ^$|^([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}$. |
ttlSecondsAfterFinished |
integer | no | How long the request stays after it reaches Paired or Expired. The Pairing records the request that produced it, so that record outlasts the deletion. Default: 86400. |
status
What the operator observes during the window.
| Field | Type | Required | Description |
|---|---|---|---|
phase |
string | no | Open while the window runs. Paired when the approved device bonded, and Expired when the window closed with no approval. Neither end state retries. One of: Open, Paired, Expired. |
windowClosesAt |
string | no | When the window closes if nobody approves a device. |
seen |
[]object | no | The devices the radio observed during this window that the cluster holds no bond with. The list is capped at 16 entries, because it is written from radio observations, and a busy room would otherwise grow the object without limit. |
pairing |
string | no | The name of the Pairing this request produced. |
finishedAt |
string | no | When the request reached Paired or Expired, which is what ttlSecondsAfterFinished counts from. |
message |
string | no | Why the request has not done what it was asked to do, such as a pairing bluetoothd refused. It is empty when there is nothing to report. |
status.seen[]
The devices the radio observed during this window that the cluster holds no bond with. The list is capped at 16 entries, because it is written from radio observations, and a busy room would otherwise grow the object without limit.
| Field | Type | Required | Description |
|---|---|---|---|
address |
string | yes | The device’s address. Write this into spec.device to approve the pairing. |
name |
string | no | The name the device broadcasts, cut to the same 64 bytes a ResourceSlice attribute takes. |
firstSeen |
string | no | When the radio first observed this device. |