# airdress.enrollment.*

{/* Generated by scripts/generate-event-reference.mjs from https://schemas.airdress.co/operator/events/v1.json (operator v0.1.138).
    Do not edit by hand: run `pnpm generate:event-reference` and commit the result. */}

The events in the `airdress.enrollment` family. How to read a section, and what
each audience means, is on the [event reference](/events/) page.

## `airdress.enrollment.airdress_not_served`

Owner warn Functions

An enrollment named an airdress this operator does not serve. Nothing was consumed and nothing counted against the backoff.

**Audience: owner.** About the airdress as a whole. Only the owner receives it: the owner's devices and the owner's subscriptions.

**Where it goes**

- **The operator's journal**, as one log line at this level, and **the event log**, where `airdress events tail` reads it.
- **Subscriptions** that name it, within its audience.
- **Functions bound to this operator's events** (`source: operator`).

**Versions**

- Version 1: first carried by operator v0.1.135.

**Data**

| Field | Type | Required | Description |
| ----- | ---- | -------- | ----------- |
| `ip` | string (ip) | yes |  |
| `requested_airdress` | string | yes |  |
| `served_airdress` | string | yes |  |

<details>
<summary>JSON Schema</summary>

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "An enrollment named an airdress this operator does not serve. Nothing was consumed and nothing counted against the backoff.",
  "properties": {
    "ip": {
      "format": "ip",
      "type": "string"
    },
    "requested_airdress": {
      "type": "string"
    },
    "served_airdress": {
      "type": "string"
    }
  },
  "required": [
    "ip",
    "requested_airdress",
    "served_airdress"
  ],
  "title": "EnrollmentAirdressNotServed",
  "type": "object"
}
```

</details>

## `airdress.enrollment.delegation_stale`

Owner warn Functions

An enrollment was refused: its delegation is outside the freshness window.

**Audience: owner.** About the airdress as a whole. Only the owner receives it: the owner's devices and the owner's subscriptions.

**Where it goes**

- **The operator's journal**, as one log line at this level, and **the event log**, where `airdress events tail` reads it.
- **Subscriptions** that name it, within its audience.
- **Functions bound to this operator's events** (`source: operator`).

**Versions**

- Version 1: first carried by operator v0.1.135.

**Data**

| Field | Type | Required | Description |
| ----- | ---- | -------- | ----------- |
| `airdress` | string | yes |  |

<details>
<summary>JSON Schema</summary>

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "An enrollment was refused: its delegation is outside the freshness window.",
  "properties": {
    "airdress": {
      "type": "string"
    }
  },
  "required": [
    "airdress"
  ],
  "title": "EnrollmentDelegationStale",
  "type": "object"
}
```

</details>

## `airdress.enrollment.idle_revoked`

Owner warn Functions

A human device nobody had used inside the idle window was revoked. Never the airdress's most recently seen device.

**Audience: owner.** About the airdress as a whole. Only the owner receives it: the owner's devices and the owner's subscriptions.

**Where it goes**

- **The operator's journal**, as one log line at this level, and **the event log**, where `airdress events tail` reads it.
- **Subscriptions** that name it, within its audience.
- **Functions bound to this operator's events** (`source: operator`).

**Versions**

- Version 1: first carried by operator v0.1.135.

**Data**

| Field | Type | Required | Description |
| ----- | ---- | -------- | ----------- |
| `airdress` | string | yes |  |
| `created_at` | string | yes |  |
| `device_id` | string or null | no |  |
| `device_label` | string | yes |  |
| `enrollment_id` | string (uuid) | yes |  |
| `idle_window_days` | integer (uint64) | yes |  |
| `last_seen_at` | string or null | no |  |

<details>
<summary>JSON Schema</summary>

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A human device nobody had used inside the idle window was revoked. Never the airdress's most recently seen device.",
  "properties": {
    "airdress": {
      "type": "string"
    },
    "created_at": {
      "type": "string"
    },
    "device_id": {
      "type": [
        "string",
        "null"
      ]
    },
    "device_label": {
      "type": "string"
    },
    "enrollment_id": {
      "format": "uuid",
      "type": "string"
    },
    "idle_window_days": {
      "format": "uint64",
      "minimum": 0,
      "type": "integer"
    },
    "last_seen_at": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "airdress",
    "created_at",
    "device_label",
    "enrollment_id",
    "idle_window_days"
  ],
  "title": "EnrollmentIdleRevoked",
  "type": "object"
}
```

</details>

## `airdress.enrollment.root_adopted`

Owner info Functions

An operator-held enrollment adopted the airdress's pinned root instead of presenting one.

**Audience: owner.** About the airdress as a whole. Only the owner receives it: the owner's devices and the owner's subscriptions.

**Where it goes**

- **The operator's journal**, as one log line at this level, and **the event log**, where `airdress events tail` reads it.
- **Subscriptions** that name it, within its audience.
- **Functions bound to this operator's events** (`source: operator`).

**Versions**

- Version 1: first carried by operator v0.1.135.

**Data**

| Field | Type | Required | Description |
| ----- | ---- | -------- | ----------- |
| `airdress` | string | yes |  |

<details>
<summary>JSON Schema</summary>

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "An operator-held enrollment adopted the airdress's pinned root instead of presenting one.",
  "properties": {
    "airdress": {
      "type": "string"
    }
  },
  "required": [
    "airdress"
  ],
  "title": "EnrollmentRootAdopted",
  "type": "object"
}
```

</details>

## `airdress.enrollment.root_key_mismatch`

Owner warn Functions

An enrollment was refused: its root key is not the airdress's pinned one.

**Audience: owner.** About the airdress as a whole. Only the owner receives it: the owner's devices and the owner's subscriptions.

**Where it goes**

- **The operator's journal**, as one log line at this level, and **the event log**, where `airdress events tail` reads it.
- **Subscriptions** that name it, within its audience.
- **Functions bound to this operator's events** (`source: operator`).

**Versions**

- Version 1: first carried by operator v0.1.135.

**Data**

| Field | Type | Required | Description |
| ----- | ---- | -------- | ----------- |
| `airdress` | string | yes |  |

<details>
<summary>JSON Schema</summary>

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "An enrollment was refused: its root key is not the airdress's pinned one.",
  "properties": {
    "airdress": {
      "type": "string"
    }
  },
  "required": [
    "airdress"
  ],
  "title": "EnrollmentRootKeyMismatch",
  "type": "object"
}
```

</details>

## `airdress.enrollment.sibling_enrolled`

Owner info App stream Functions

A device enrolled on this airdress; its siblings are told, because only a device already in an MLS group can add the newcomer to it.

**Audience: owner.** About the airdress as a whole. Only the owner receives it: the owner's devices and the owner's subscriptions.

**Where it goes**

- **The operator's journal**, as one log line at this level, and **the event log**, where `airdress events tail` reads it.
- **Subscriptions** that name it, within its audience.
- **The app's event stream**, as `sibling_enrolled`: devices it concerns hear of it at once.
- **Functions bound to this operator's events** (`source: operator`).

**Versions**

- Version 1: first carried by operator v0.1.133.

**Data**

| Field | Type | Required | Description |
| ----- | ---- | -------- | ----------- |
| `airdress` | string | yes |  |
| `enrolled_at` | string | yes |  |
| `enrolled_device_id` | string or null | no |  |
| `enrolled_device_label` | string | yes |  |
| `enrolled_enrollment_id` | string (uuid) | yes |  |

<details>
<summary>JSON Schema</summary>

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A device enrolled on this airdress; its siblings are told, because only a device already in an MLS group can add the newcomer to it.",
  "properties": {
    "airdress": {
      "type": "string"
    },
    "enrolled_at": {
      "type": "string"
    },
    "enrolled_device_id": {
      "type": [
        "string",
        "null"
      ]
    },
    "enrolled_device_label": {
      "type": "string"
    },
    "enrolled_enrollment_id": {
      "format": "uuid",
      "type": "string"
    }
  },
  "required": [
    "airdress",
    "enrolled_at",
    "enrolled_device_label",
    "enrolled_enrollment_id"
  ],
  "title": "SiblingEnrolled",
  "type": "object"
}
```

</details>

## `airdress.enrollment.sibling_revoked`

Owner info App stream Functions

A device on this airdress was revoked; its siblings are told which one, so they can remove its MLS leaf.

**Audience: owner.** About the airdress as a whole. Only the owner receives it: the owner's devices and the owner's subscriptions.

**Where it goes**

- **The operator's journal**, as one log line at this level, and **the event log**, where `airdress events tail` reads it.
- **Subscriptions** that name it, within its audience.
- **The app's event stream**, as `sibling_revoked`: devices it concerns hear of it at once.
- **Functions bound to this operator's events** (`source: operator`).

**Versions**

- Version 1: first carried by operator v0.1.133.

**Data**

| Field | Type | Required | Description |
| ----- | ---- | -------- | ----------- |
| `airdress` | string | yes |  |
| `reason` | string or null | no | Why, when the operator did it on its own (`idle`). |
| `revoked_at` | string | yes |  |
| `revoked_device_id` | string or null | no |  |
| `revoked_device_label` | string | yes |  |
| `revoked_enrollment_id` | string (uuid) | yes |  |

<details>
<summary>JSON Schema</summary>

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A device on this airdress was revoked; its siblings are told which one, so they can remove its MLS leaf.",
  "properties": {
    "airdress": {
      "type": "string"
    },
    "reason": {
      "description": "Why, when the operator did it on its own (`idle`).",
      "type": [
        "string",
        "null"
      ]
    },
    "revoked_at": {
      "type": "string"
    },
    "revoked_device_id": {
      "type": [
        "string",
        "null"
      ]
    },
    "revoked_device_label": {
      "type": "string"
    },
    "revoked_enrollment_id": {
      "format": "uuid",
      "type": "string"
    }
  },
  "required": [
    "airdress",
    "revoked_at",
    "revoked_device_label",
    "revoked_enrollment_id"
  ],
  "title": "SiblingRevoked",
  "type": "object"
}
```

</details>