# airdress.plugin.*

{/* 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.plugin` family. How to read a section, and what
each audience means, is on the [event reference](/events/) page.

## `airdress.plugin.assertion.refused`

Owner info

A plugin's assertion refresh was refused. Credential plumbing: not on the bus.

**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.
- Not functions bound to this operator's events: it is kept off that path as too frequent or too internal. A subscription with a function target still receives it.

**Versions**

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

**Data**

| Field | Type | Required | Description |
| ----- | ---- | -------- | ----------- |
| `code` | string | yes |  |
| `install` | string | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A plugin's assertion refresh was refused. Credential plumbing: not on the bus.",
  "properties": {
    "code": {
      "type": "string"
    },
    "install": {
      "type": "string"
    }
  },
  "required": [
    "code",
    "install"
  ],
  "title": "PluginAssertionRefused",
  "type": "object"
}
```

</details>

## `airdress.plugin.author_key.revoked`

Owner warn Functions

The registry index revokes a plugin author key.

**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 |
| ----- | ---- | -------- | ----------- |
| `author` | string | yes |  |
| `key` | string | yes | The revoked public key, hex. |
| `kind` | string | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "The registry index revokes a plugin author key.",
  "properties": {
    "author": {
      "type": "string"
    },
    "key": {
      "description": "The revoked public key, hex.",
      "type": "string"
    },
    "kind": {
      "type": "string"
    }
  },
  "required": [
    "author",
    "key",
    "kind"
  ],
  "title": "PluginAuthorKeyRevoked",
  "type": "object"
}
```

</details>

## `airdress.plugin.authorization.granted`

Owner info Functions

A person authorized a plugin's personal scope.

**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 |
| ----- | ---- | -------- | ----------- |
| `install` | string | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A person authorized a plugin's personal scope.",
  "properties": {
    "install": {
      "type": "string"
    }
  },
  "required": [
    "install"
  ],
  "title": "PluginAuthorizationGranted",
  "type": "object"
}
```

</details>

## `airdress.plugin.authorization.offer_changed`

Owner info Functions

The owner changed whether a plugin's personal scope is offered.

**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 |
| ----- | ---- | -------- | ----------- |
| `install` | string | yes |  |
| `offered` | boolean | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "The owner changed whether a plugin's personal scope is offered.",
  "properties": {
    "install": {
      "type": "string"
    },
    "offered": {
      "type": "boolean"
    }
  },
  "required": [
    "install",
    "offered"
  ],
  "title": "PluginAuthorizationOfferChanged",
  "type": "object"
}
```

</details>

## `airdress.plugin.authorization.revoked`

Owner info Functions

A person revoked their authorization of a plugin's personal scope.

**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 |
| ----- | ---- | -------- | ----------- |
| `data` | string | yes | `erase` or `keep`: what happens to the person's plugin data. |
| `install` | string | yes |  |
| `reason` | string | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A person revoked their authorization of a plugin's personal scope.",
  "properties": {
    "data": {
      "description": "`erase` or `keep`: what happens to the person's plugin data.",
      "type": "string"
    },
    "install": {
      "type": "string"
    },
    "reason": {
      "type": "string"
    }
  },
  "required": [
    "data",
    "install",
    "reason"
  ],
  "title": "PluginAuthorizationRevoked",
  "type": "object"
}
```

</details>

## `airdress.plugin.config.invalid`

Owner error Functions

An install's stored config does not match its app's schema; it starts without 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.
- **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 |  |
| `error` | string | yes |  |
| `subdomain` | string | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "An install's stored config does not match its app's schema; it starts without it.",
  "properties": {
    "airdress": {
      "type": "string"
    },
    "error": {
      "type": "string"
    },
    "subdomain": {
      "type": "string"
    }
  },
  "required": [
    "airdress",
    "error",
    "subdomain"
  ],
  "title": "PluginConfigInvalid",
  "type": "object"
}
```

</details>

## `airdress.plugin.egress.refused`

Owner info Functions

A plugin's outbound connection was refused by its egress policy.

**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 |
| ----- | ---- | -------- | ----------- |
| `host` | string | yes |  |
| `install` | string | yes |  |
| `reason` | string | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A plugin's outbound connection was refused by its egress policy.",
  "properties": {
    "host": {
      "type": "string"
    },
    "install": {
      "type": "string"
    },
    "reason": {
      "type": "string"
    }
  },
  "required": [
    "host",
    "install",
    "reason"
  ],
  "title": "PluginEgressRefused",
  "type": "object"
}
```

</details>

## `airdress.plugin.export.written`

Owner info Functions

An uninstall held each person's plugin resources as their export.

**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 |
| ----- | ---- | -------- | ----------- |
| `install` | string | yes |  |
| `persons` | integer (uint) | yes |  |
| `window_secs` | integer (int64) | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "An uninstall held each person's plugin resources as their export.",
  "properties": {
    "install": {
      "type": "string"
    },
    "persons": {
      "format": "uint",
      "minimum": 0,
      "type": "integer"
    },
    "window_secs": {
      "format": "int64",
      "type": "integer"
    }
  },
  "required": [
    "install",
    "persons",
    "window_secs"
  ],
  "title": "PluginExportWritten",
  "type": "object"
}
```

</details>

## `airdress.plugin.grant.created`

Owner info Functions

The owner granted a plugin install actions in a scope.

**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 |
| ----- | ---- | -------- | ----------- |
| `actions` | integer (uint) | yes | How many actions it grants. |
| `install` | string | yes |  |
| `scope` | string | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "The owner granted a plugin install actions in a scope.",
  "properties": {
    "actions": {
      "description": "How many actions it grants.",
      "format": "uint",
      "minimum": 0,
      "type": "integer"
    },
    "install": {
      "type": "string"
    },
    "scope": {
      "type": "string"
    }
  },
  "required": [
    "actions",
    "install",
    "scope"
  ],
  "title": "PluginGrantCreated",
  "type": "object"
}
```

</details>

## `airdress.plugin.grant.revoked`

Owner info Functions

A plugin grant was revoked.

**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 |
| ----- | ---- | -------- | ----------- |
| `install` | string | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A plugin grant was revoked.",
  "properties": {
    "install": {
      "type": "string"
    }
  },
  "required": [
    "install"
  ],
  "title": "PluginGrantRevoked",
  "type": "object"
}
```

</details>

## `airdress.plugin.host.call_refused`

Owner info Functions

A call on a plugin's host socket, or a host question it asked, was refused.

**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 |
| ----- | ---- | -------- | ----------- |
| `code` | string | yes |  |
| `install` | string | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A call on a plugin's host socket, or a host question it asked, was refused.",
  "properties": {
    "code": {
      "type": "string"
    },
    "install": {
      "type": "string"
    }
  },
  "required": [
    "code",
    "install"
  ],
  "title": "PluginHostCallRefused",
  "type": "object"
}
```

</details>

## `airdress.plugin.host.decided`

Owner info

The host answered a plugin's authorization questions. One per call: chatty, not on the bus.

**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.
- Not functions bound to this operator's events: it is kept off that path as too frequent or too internal. A subscription with a function target still receives it.

**Versions**

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

**Data**

| Field | Type | Required | Description |
| ----- | ---- | -------- | ----------- |
| `actor` | string | yes | The asking actor's role, as the journal has always written it. |
| `allowed` | integer (uint) | yes |  |
| `install` | string | yes |  |
| `queries` | integer (uint) | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "The host answered a plugin's authorization questions. One per call: chatty, not on the bus.",
  "properties": {
    "actor": {
      "description": "The asking actor's role, as the journal has always written it.",
      "type": "string"
    },
    "allowed": {
      "format": "uint",
      "minimum": 0,
      "type": "integer"
    },
    "install": {
      "type": "string"
    },
    "queries": {
      "format": "uint",
      "minimum": 0,
      "type": "integer"
    }
  },
  "required": [
    "actor",
    "allowed",
    "install",
    "queries"
  ],
  "title": "PluginHostDecided",
  "type": "object"
}
```

</details>

## `airdress.plugin.host.key_created`

Owner info

The plugin host created its assertion key. Key metadata: not on the bus.

**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.
- Not functions bound to this operator's events: it is kept off that path as too frequent or too internal. A subscription with a function target still receives it.

**Versions**

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

**Data**

| Field | Type | Required | Description |
| ----- | ---- | -------- | ----------- |
| `kid` | string | yes |  |
| `path` | string | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "The plugin host created its assertion key. Key metadata: not on the bus.",
  "properties": {
    "kid": {
      "type": "string"
    },
    "path": {
      "type": "string"
    }
  },
  "required": [
    "kid",
    "path"
  ],
  "title": "PluginHostKeyCreated",
  "type": "object"
}
```

</details>

## `airdress.plugin.host.key_released`

Owner info

The host released a data key to a plugin. Never the key; key plumbing, so not on the bus.

**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.
- Not functions bound to this operator's events: it is kept off that path as too frequent or too internal. A subscription with a function target still receives it.

**Versions**

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

**Data**

| Field | Type | Required | Description |
| ----- | ---- | -------- | ----------- |
| `install` | string | yes |  |
| `scope` | string | yes | `airdress` or `personal`. |
| `version` | integer (uint32) | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "The host released a data key to a plugin. Never the key; key plumbing, so not on the bus.",
  "properties": {
    "install": {
      "type": "string"
    },
    "scope": {
      "description": "`airdress` or `personal`.",
      "type": "string"
    },
    "version": {
      "format": "uint32",
      "minimum": 0,
      "type": "integer"
    }
  },
  "required": [
    "install",
    "scope",
    "version"
  ],
  "title": "PluginHostKeyReleased",
  "type": "object"
}
```

</details>

## `airdress.plugin.host.peer_mismatch`

Owner warn Functions

A process outside an install's instance called its host socket.

**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 |
| ----- | ---- | -------- | ----------- |
| `install` | string | yes |  |
| `pid` | integer (uint32) | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A process outside an install's instance called its host socket.",
  "properties": {
    "install": {
      "type": "string"
    },
    "pid": {
      "format": "uint32",
      "minimum": 0,
      "type": "integer"
    }
  },
  "required": [
    "install",
    "pid"
  ],
  "title": "PluginHostPeerMismatch",
  "type": "object"
}
```

</details>

## `airdress.plugin.index.unverified`

Owner warn Functions

The plugin registry index could not be verified; revocations already known still apply.

**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 |
| ----- | ---- | -------- | ----------- |
| `error` | string | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "The plugin registry index could not be verified; revocations already known still apply.",
  "properties": {
    "error": {
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "title": "PluginIndexUnverified",
  "type": "object"
}
```

</details>

## `airdress.plugin.install.completed`

Owner info Functions

A plugin was installed.

**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 |
| ----- | ---- | -------- | ----------- |
| `app` | string | yes |  |
| `install_id` | string | yes |  |
| `source` | string | yes | `registry` or `local`. |
| `version` | string | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A plugin was installed.",
  "properties": {
    "app": {
      "type": "string"
    },
    "install_id": {
      "type": "string"
    },
    "source": {
      "description": "`registry` or `local`.",
      "type": "string"
    },
    "version": {
      "type": "string"
    }
  },
  "required": [
    "app",
    "install_id",
    "source",
    "version"
  ],
  "title": "PluginInstallCompleted",
  "type": "object"
}
```

</details>

## `airdress.plugin.install.failed`

Owner warn Functions

A registry install was refused before anything was written.

**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 |
| ----- | ---- | -------- | ----------- |
| `code` | string | yes |  |
| `error` | string | yes |  |
| `step` | string | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A registry install was refused before anything was written.",
  "properties": {
    "code": {
      "type": "string"
    },
    "error": {
      "type": "string"
    },
    "step": {
      "type": "string"
    }
  },
  "required": [
    "code",
    "error",
    "step"
  ],
  "title": "PluginInstallFailed",
  "type": "object"
}
```

</details>

## `airdress.plugin.install.not_served`

Owner warn Functions

A stored plugin install could not be served at start.

**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 |  |
| `app` | string | yes |  |
| `error` | string | yes |  |
| `subdomain` | string | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A stored plugin install could not be served at start.",
  "properties": {
    "airdress": {
      "type": "string"
    },
    "app": {
      "type": "string"
    },
    "error": {
      "type": "string"
    },
    "subdomain": {
      "type": "string"
    }
  },
  "required": [
    "airdress",
    "app",
    "error",
    "subdomain"
  ],
  "title": "PluginInstallNotServed",
  "type": "object"
}
```

</details>

## `airdress.plugin.install.quarantined`

Owner warn Functions

A plugin install stopped serving: the key that signed its release was revoked as compromised.

**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 |  |
| `install_id` | string | yes |  |
| `plugin` | string | yes |  |
| `reason` | string | yes |  |
| `subdomain` | string | yes |  |
| `version` | string | yes | As the journal has always written it (`Some("…")` or `None`). |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A plugin install stopped serving: the key that signed its release was revoked as compromised.",
  "properties": {
    "airdress": {
      "type": "string"
    },
    "install_id": {
      "type": "string"
    },
    "plugin": {
      "type": "string"
    },
    "reason": {
      "type": "string"
    },
    "subdomain": {
      "type": "string"
    },
    "version": {
      "description": "As the journal has always written it (`Some(\"…\")` or `None`).",
      "type": "string"
    }
  },
  "required": [
    "airdress",
    "install_id",
    "plugin",
    "reason",
    "subdomain",
    "version"
  ],
  "title": "PluginInstallQuarantined",
  "type": "object"
}
```

</details>

## `airdress.plugin.install.rolled_back`

Owner warn Functions

An install failed after its download; the artifact was removed.

**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 |
| ----- | ---- | -------- | ----------- |
| `plugin` | string | yes |  |
| `version` | string | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "An install failed after its download; the artifact was removed.",
  "properties": {
    "plugin": {
      "type": "string"
    },
    "version": {
      "type": "string"
    }
  },
  "required": [
    "plugin",
    "version"
  ],
  "title": "PluginInstallRolledBack",
  "type": "object"
}
```

</details>

## `airdress.plugin.install.started`

Owner info Functions

A registry install began.

**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 |
| ----- | ---- | -------- | ----------- |
| `dry_run` | boolean | yes |  |
| `plugin` | string | yes |  |
| `version` | string or null | no | The version asked for; `None` for the latest. |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A registry install began.",
  "properties": {
    "dry_run": {
      "type": "boolean"
    },
    "plugin": {
      "type": "string"
    },
    "version": {
      "description": "The version asked for; `None` for the latest.",
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "dry_run",
    "plugin"
  ],
  "title": "PluginInstallStarted",
  "type": "object"
}
```

</details>

## `airdress.plugin.install.unsigned`

Owner warn Functions

An unsigned plugin release is being installed because the host allows 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.
- **Functions bound to this operator's events** (`source: operator`).

**Versions**

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

**Data**

| Field | Type | Required | Description |
| ----- | ---- | -------- | ----------- |
| `plugin` | string | yes |  |
| `version` | string | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "An unsigned plugin release is being installed because the host allows it.",
  "properties": {
    "plugin": {
      "type": "string"
    },
    "version": {
      "type": "string"
    }
  },
  "required": [
    "plugin",
    "version"
  ],
  "title": "PluginInstallUnsigned",
  "type": "object"
}
```

</details>

## `airdress.plugin.instance.exited`

Owner warn Functions

A plugin instance's process exited without being asked to, or an OOM kill landed while it drained.

**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 |  |
| `app` | string | yes |  |
| `code` | integer or null | no |  |
| `during_stop` | boolean | yes |  |
| `reason` | string | yes | `oom_kill`, `signal` or `exit`. |
| `signal` | integer or null | no |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A plugin instance's process exited without being asked to, or an OOM kill landed while it drained.",
  "properties": {
    "airdress": {
      "type": "string"
    },
    "app": {
      "type": "string"
    },
    "code": {
      "format": "int32",
      "type": [
        "integer",
        "null"
      ]
    },
    "during_stop": {
      "type": "boolean"
    },
    "reason": {
      "description": "`oom_kill`, `signal` or `exit`.",
      "type": "string"
    },
    "signal": {
      "format": "int32",
      "type": [
        "integer",
        "null"
      ]
    }
  },
  "required": [
    "airdress",
    "app",
    "during_stop",
    "reason"
  ],
  "title": "PluginInstanceExited",
  "type": "object"
}
```

</details>

## `airdress.plugin.instance.not_ready`

Owner error Functions

A plugin instance's health check never answered 2xx within the cold-start timeout.

**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 |  |
| `app` | string | yes |  |
| `path` | string | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A plugin instance's health check never answered 2xx within the cold-start timeout.",
  "properties": {
    "airdress": {
      "type": "string"
    },
    "app": {
      "type": "string"
    },
    "path": {
      "type": "string"
    }
  },
  "required": [
    "airdress",
    "app",
    "path"
  ],
  "title": "PluginInstanceNotReady",
  "type": "object"
}
```

</details>

## `airdress.plugin.instance.unhealthy`

Owner warn Functions

A plugin instance's health check kept failing; it was stopped and the next request restarts 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.
- **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 |  |
| `app` | string | yes |  |
| `failures` | integer (uint32) | yes |  |
| `path` | string | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A plugin instance's health check kept failing; it was stopped and the next request restarts it.",
  "properties": {
    "airdress": {
      "type": "string"
    },
    "app": {
      "type": "string"
    },
    "failures": {
      "format": "uint32",
      "minimum": 0,
      "type": "integer"
    },
    "path": {
      "type": "string"
    }
  },
  "required": [
    "airdress",
    "app",
    "failures",
    "path"
  ],
  "title": "PluginInstanceUnhealthy",
  "type": "object"
}
```

</details>

## `airdress.plugin.kind.applied`

Owner info Functions

A plugin applied one of its own resources.

**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 |
| ----- | ---- | -------- | ----------- |
| `install` | string | yes |  |
| `kind` | string | yes |  |
| `scope` | string | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A plugin applied one of its own resources.",
  "properties": {
    "install": {
      "type": "string"
    },
    "kind": {
      "type": "string"
    },
    "scope": {
      "type": "string"
    }
  },
  "required": [
    "install",
    "kind",
    "scope"
  ],
  "title": "PluginKindApplied",
  "type": "object"
}
```

</details>

## `airdress.plugin.kind.deleted`

Owner info Functions

A plugin resource was deleted.

**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 |
| ----- | ---- | -------- | ----------- |
| `install` | string | yes |  |
| `kind` | string | yes |  |
| `scope` | string | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A plugin resource was deleted.",
  "properties": {
    "install": {
      "type": "string"
    },
    "kind": {
      "type": "string"
    },
    "scope": {
      "type": "string"
    }
  },
  "required": [
    "install",
    "kind",
    "scope"
  ],
  "title": "PluginKindDeleted",
  "type": "object"
}
```

</details>

## `airdress.plugin.log`

Owner info

One line a plugin wrote, re-emitted under [`PLUGIN_LOG_TARGET`]. The line is the journal line's message and is never recorded: what a plugin prints is its own content.

**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.
- Not functions bound to this operator's events: it is kept off that path as too frequent or too internal. A subscription with a function target still receives it.

**Versions**

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

**Data**

| Field | Type | Required | Description |
| ----- | ---- | -------- | ----------- |
| `install` | string | yes |  |
| `plugin` | string | yes |  |
| `stream` | string | yes | `stdout` or `stderr`. |
| `truncated` | boolean | yes | The line was cut at the per-line cap. |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "One line a plugin wrote, re-emitted under [`PLUGIN_LOG_TARGET`]. The line is the journal line's message and is never recorded: what a plugin prints is its own content.",
  "properties": {
    "install": {
      "type": "string"
    },
    "plugin": {
      "type": "string"
    },
    "stream": {
      "description": "`stdout` or `stderr`.",
      "type": "string"
    },
    "truncated": {
      "description": "The line was cut at the per-line cap.",
      "type": "boolean"
    }
  },
  "required": [
    "install",
    "plugin",
    "stream",
    "truncated"
  ],
  "title": "PluginLog",
  "type": "object"
}
```

</details>

## `airdress.plugin.log_dropped`

Owner warn

A plugin wrote faster than its line budget; lines were dropped.

**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.
- Not functions bound to this operator's events: it is kept off that path as too frequent or too internal. A subscription with a function target still receives it.

**Versions**

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

**Data**

| Field | Type | Required | Description |
| ----- | ---- | -------- | ----------- |
| `dropped` | integer (uint64) | yes |  |
| `install` | string | yes |  |
| `plugin` | string | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A plugin wrote faster than its line budget; lines were dropped.",
  "properties": {
    "dropped": {
      "format": "uint64",
      "minimum": 0,
      "type": "integer"
    },
    "install": {
      "type": "string"
    },
    "plugin": {
      "type": "string"
    }
  },
  "required": [
    "dropped",
    "install",
    "plugin"
  ],
  "title": "PluginLogDropped",
  "type": "object"
}
```

</details>

## `airdress.plugin.name_published`

Owner info Functions

A plugin's name was published in this operator's own zone.

**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 |
| ----- | ---- | -------- | ----------- |
| `label` | string | yes | The plugin's label under the airdress. |
| `zone` | string | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A plugin's name was published in this operator's own zone.",
  "properties": {
    "label": {
      "description": "The plugin's label under the airdress.",
      "type": "string"
    },
    "zone": {
      "type": "string"
    }
  },
  "required": [
    "label",
    "zone"
  ],
  "title": "PluginNamePublished",
  "type": "object"
}
```

</details>

## `airdress.plugin.name_withdrawn`

Owner info Functions

A plugin's name was withdrawn from this operator's own zone.

**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 |
| ----- | ---- | -------- | ----------- |
| `label` | string | yes |  |
| `zone` | string | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A plugin's name was withdrawn from this operator's own zone.",
  "properties": {
    "label": {
      "type": "string"
    },
    "zone": {
      "type": "string"
    }
  },
  "required": [
    "label",
    "zone"
  ],
  "title": "PluginNameWithdrawn",
  "type": "object"
}
```

</details>

## `airdress.plugin.parent_name_withdrawn`

Owner info Functions

A plugin name the parent zone still held was withdrawn from 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.
- **Functions bound to this operator's events** (`source: operator`).

**Versions**

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

**Data**

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

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A plugin name the parent zone still held was withdrawn from it.",
  "properties": {
    "label": {
      "type": "string"
    }
  },
  "required": [
    "label"
  ],
  "title": "PluginParentNameWithdrawn",
  "type": "object"
}
```

</details>

## `airdress.plugin.principal.erased`

Owner info Functions

A revoked person's plugin data was erased.

**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 |
| ----- | ---- | -------- | ----------- |
| `install` | string | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A revoked person's plugin data was erased.",
  "properties": {
    "install": {
      "type": "string"
    }
  },
  "required": [
    "install"
  ],
  "title": "PluginPrincipalErased",
  "type": "object"
}
```

</details>

## `airdress.plugin.principal.revoked`

Owner info Functions

A revoked person's plugin data is unreachable and scheduled for erasure.

**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 |
| ----- | ---- | -------- | ----------- |
| `erase_in_secs` | integer (int64) | yes |  |
| `install` | string | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A revoked person's plugin data is unreachable and scheduled for erasure.",
  "properties": {
    "erase_in_secs": {
      "format": "int64",
      "type": "integer"
    },
    "install": {
      "type": "string"
    }
  },
  "required": [
    "erase_in_secs",
    "install"
  ],
  "title": "PluginPrincipalRevoked",
  "type": "object"
}
```

</details>

## `airdress.plugin.proxy.refused`

Owner info Functions

A request to a plugin was refused: before it was forwarded, or because its signed body was not the one signed.

**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 |  |
| `app` | string or null | no | The plugin's subdomain, when the refusal came before forwarding. |
| `code` | string | yes |  |
| `mismatch` | string or null | no | How a signed body differed from its digest, for `body_digest_mismatch`. |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A request to a plugin was refused: before it was forwarded, or because its signed body was not the one signed.",
  "properties": {
    "airdress": {
      "type": "string"
    },
    "app": {
      "description": "The plugin's subdomain, when the refusal came before forwarding.",
      "type": [
        "string",
        "null"
      ]
    },
    "code": {
      "type": "string"
    },
    "mismatch": {
      "description": "How a signed body differed from its digest, for `body_digest_mismatch`.",
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "airdress",
    "code"
  ],
  "title": "PluginProxyRefused",
  "type": "object"
}
```

</details>

## `airdress.plugin.sandbox.insecure`

Owner warn Functions

A Tier-1 plugin runs, or will run, without the sandbox's full protection: started unsandboxed, the host configured to run every plugin so, or its limits fallen back to setrlimit.

**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 or null | no |  |
| `app` | string or null | no | The plugin, when one is starting. |
| `note` | string | yes | Which of the three: the journal line's message. |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A Tier-1 plugin runs, or will run, without the sandbox's full protection: started unsandboxed, the host configured to run every plugin so, or its limits fallen back to setrlimit.",
  "properties": {
    "airdress": {
      "type": [
        "string",
        "null"
      ]
    },
    "app": {
      "description": "The plugin, when one is starting.",
      "type": [
        "string",
        "null"
      ]
    },
    "note": {
      "description": "Which of the three: the journal line's message.",
      "type": "string"
    }
  },
  "required": [
    "note"
  ],
  "title": "PluginSandboxInsecure",
  "type": "object"
}
```

</details>

## `airdress.plugin.session.swept`

Owner info

Expired plugin sessions were swept. Housekeeping: not on the bus.

**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.
- Not functions bound to this operator's events: it is kept off that path as too frequent or too internal. A subscription with a function target still receives it.

**Versions**

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

**Data**

| Field | Type | Required | Description |
| ----- | ---- | -------- | ----------- |
| `count` | integer (uint64) | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "Expired plugin sessions were swept. Housekeeping: not on the bus.",
  "properties": {
    "count": {
      "format": "uint64",
      "minimum": 0,
      "type": "integer"
    }
  },
  "required": [
    "count"
  ],
  "title": "PluginSessionSwept",
  "type": "object"
}
```

</details>

## `airdress.plugin.socket.refused`

Owner warn Functions

A plugin's socket was refused; the proxy will not dial 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.
- **Functions bound to this operator's events** (`source: operator`).

**Versions**

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

**Data**

| Field | Type | Required | Description |
| ----- | ---- | -------- | ----------- |
| `app` | string | yes |  |
| `reason` | string | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A plugin's socket was refused; the proxy will not dial it.",
  "properties": {
    "app": {
      "type": "string"
    },
    "reason": {
      "type": "string"
    }
  },
  "required": [
    "app",
    "reason"
  ],
  "title": "PluginSocketRefused",
  "type": "object"
}
```

</details>

## `airdress.plugin.uninstall.completed`

Owner info Functions

A plugin was uninstalled.

**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 |
| ----- | ---- | -------- | ----------- |
| `app` | string | yes |  |
| `install_id` | string | yes | As the journal has always written it (`Some(…)` or `None`). |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A plugin was uninstalled.",
  "properties": {
    "app": {
      "type": "string"
    },
    "install_id": {
      "description": "As the journal has always written it (`Some(…)` or `None`).",
      "type": "string"
    }
  },
  "required": [
    "app",
    "install_id"
  ],
  "title": "PluginUninstallCompleted",
  "type": "object"
}
```

</details>

## `airdress.plugin.wake`

Owner info Functions

A plugin was woken on one of its schedules.

**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 |
| ----- | ---- | -------- | ----------- |
| `attempts` | integer (uint32) | yes |  |
| `cold` | boolean | yes |  |
| `install` | string | yes |  |
| `outcome` | string | yes | `ok` or `failed`. |
| `persons` | integer (uint32) | yes |  |
| `plugin` | string | yes |  |
| `schedule` | string | yes |  |
| `wake_ms` | integer (uint64) | yes |  |

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

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "A plugin was woken on one of its schedules.",
  "properties": {
    "attempts": {
      "format": "uint32",
      "minimum": 0,
      "type": "integer"
    },
    "cold": {
      "type": "boolean"
    },
    "install": {
      "type": "string"
    },
    "outcome": {
      "description": "`ok` or `failed`.",
      "type": "string"
    },
    "persons": {
      "format": "uint32",
      "minimum": 0,
      "type": "integer"
    },
    "plugin": {
      "type": "string"
    },
    "schedule": {
      "type": "string"
    },
    "wake_ms": {
      "format": "uint64",
      "minimum": 0,
      "type": "integer"
    }
  },
  "required": [
    "attempts",
    "cold",
    "install",
    "outcome",
    "persons",
    "plugin",
    "schedule",
    "wake_ms"
  ],
  "title": "PluginWake",
  "type": "object"
}
```

</details>