Skip to content

Event reference

An Airdress operator records what happens on your airdress as events: a device asked to join, a function was applied, a certificate was renewed. Each event has a name, a version, an audience and a fixed shape of data. This reference is generated from the catalogue the operator publishes, so it lists exactly what operator v0.1.138 records.

You can read the same catalogue from your own airdress with airdress events catalog (or GET /v1/events/catalog), watch events arrive with airdress events tail, and have them delivered to a URL or a function with an EventSubscription resource.

Catalogue: https://schemas.airdress.co/operator/events/v1.json · pinned for this release: https://schemas.airdress.co/operator/events/v1/v0.1.138.json · history: https://schemas.airdress.co/operator/events/index.json

Every event has an audience, fixed in the operator’s code. It decides who may ever receive the event, and no setting widens it.

AudienceIn plain wordsWho receives it
OwnerAbout the airdress as a wholeThe owner: the owner’s devices and the owner’s subscriptions
The person it concernsAbout one person on the airdressOnly that person: their own devices and the subscriptions they made. The owner’s subscriptions never receive another person’s events, and there is no consent setting that changes this
Everyone on the airdressHarmless to everyoneAny person on the airdress

Every event is written to the operator’s journal as one log line at its level, and to the event log, which subscriptions and airdress events tail read. From there:

  • Subscriptions. An EventSubscription delivers the events it names, within their audience, to a URL or a function. Delivery is durable: it is retried until it succeeds or gives up, and it survives a restart.
  • The app’s event stream. Events marked App stream also reach your devices at once, under the stream name the section gives. The rest are not sent to the app.
  • Functions bound to the operator’s events. Events marked Functions are also handed to functions bound with source: operator. That path is best-effort and does not survive a restart; use a subscription with a function target when every event must arrive. Events about one person never take it, because functions act for the owner. Events kept off it are frequent or internal ones, and still reach the journal and subscriptions.

A change to an event’s data that would break a reader is a new version of the event. The catalogue lists both versions until the old one is retired, and a subscription can pin the version it understands. Each section says which operator release first carried each version. The catalogue starts at operator v0.1.133: events older than that were log lines before they were recorded events, and their history starts there.

None yet: every event version the operator has catalogued is still recorded.

320 events in 58 families: acme (2) · admin (5) · agent (2) · agent_bus (13) · agent_chat (6) · agent_device (4) · bootstrap (2) · break_glass (2) · chat_group (5) · config (1) · control (1) · device (2) · device_join (8) · dns (7) · enrollment (7) · event_subscription (7) · federation (8) · function (21) · functions (2) · grant (2) · handshake (1) · home (23) · hook (1) · host_link (8) · household (2) · identity (7) · idle (3) · ingress (2) · intercept (2) · key_package (2) · location (11) · machine (16) · member (3) · member_authorization (4) · mls (1) · operator (1) · operator_key (2) · owner (1) · peer (1) · peer_trust (5) · person (3) · plugin (41) · proxy (1) · publication (1) · push (2) · ratelimit (1) · remote_mcp (3) · revoked_grants (6) · root_recovery (4) · schedule (2) · shell (24) · shells (1) · subname (2) · switches (3) · thing (13) · tls (7) · token (2) · unit (1)

EventVersionAudienceLevelApp streamFunctionsFirst carried by
airdress.acme.challenge_path1Ownerinfonoyesv0.1.138
airdress.acme.hub_bridge_retired1Ownerinfonoyesv0.1.138
airdress.admin.credential_refused1Ownerwarnnonov0.1.138
airdress.admin.credential_unavailable1Ownererrornoyesv0.1.138
airdress.admin.not_started1Ownererrornoyesv0.1.138
airdress.admin.peer_refused1Ownerwarnnonov0.1.138
airdress.admin.stopped1Ownererrornoyesv0.1.138
airdress.agent.root_key_diverged1Ownerwarnnoyesv0.1.138
airdress.agent.root_key_pinned_on_first_contact1Ownerinfonoyesv0.1.138
airdress.agent_bus.attestation.issued1The person it concernsinfononov0.1.138
airdress.agent_bus.claim.acquired1The person it concernsinfononov0.1.138
airdress.agent_bus.claim.broken1Ownerwarnnoyesv0.1.138
airdress.agent_bus.claim.handed_off1The person it concernsinfononov0.1.138
airdress.agent_bus.claim.lapsed1The person it concernsinfononov0.1.138
airdress.agent_bus.fence.refused1The person it concernsinfononov0.1.138
airdress.agent_bus.message.refused1The person it concernsinfononov0.1.138
airdress.agent_bus.policy.changed1Ownerinfonoyesv0.1.138
airdress.agent_bus.session.ended1The person it concernsinfononov0.1.138
airdress.agent_bus.session.started1The person it concernsinfononov0.1.138
airdress.agent_bus.signature.refused1The person it concernswarnnonov0.1.138
airdress.agent_bus.state.conflict1The person it concernsinfononov0.1.138
airdress.agent_bus.sweep.completed1Ownerinfononov0.1.138
airdress.agent_chat.added1Ownerinfonoyesv0.1.138
airdress.agent_chat.assigned1Ownerinfonoyesv0.1.138
airdress.agent_chat.lane_created1Ownerinfonoyesv0.1.138
airdress.agent_chat.no_lane1Ownerwarnnonov0.1.138
airdress.agent_chat.removed1Ownerinfonoyesv0.1.138
airdress.agent_chat.unassigned1Ownerinfonoyesv0.1.138
airdress.agent_device.refused1Ownerwarnnoyesv0.1.138
airdress.agent_device.renewed1Ownerinfonoyesv0.1.138
airdress.agent_device.resumed1Ownerinfonoyesv0.1.138
airdress.agent_device.suspended1Ownerwarnnoyesv0.1.138
airdress.bootstrap.backoff1Ownerwarnnonov0.1.135
airdress.bootstrap.rejected1Ownerwarnnoyesv0.1.135
airdress.break_glass.owner_token_minted1Ownerwarnnonov0.1.135
airdress.break_glass.root_key_reset1Ownerwarnnoyesv0.1.135
airdress.chat_group.created1Ownerinfonoyesv0.1.138
airdress.chat_group.envelope.no_subscriber1Ownerinfononov0.1.138
airdress.chat_group.epoch.claimed1Ownerinfonoyesv0.1.138
airdress.chat_group.epoch.conflict1Ownerinfonoyesv0.1.138
airdress.chat_group.sequencer.moved1Ownerinfonoyesv0.1.138
airdress.config.weak_bootstrap_token1Ownerwarnnoyesv0.1.135
airdress.control.invoked1Ownerinfonoyesv0.1.136
airdress.device.delegation_only.refused1Ownerwarnnoyesv0.1.138
airdress.device.sub_user.refused1Ownerwarnnoyesv0.1.138
airdress.device_join.approved1Ownerinfoyesyesv0.1.133
airdress.device_join.approved_by_delegation1Ownerinfoyesyesv0.1.133
airdress.device_join.cleared_by_reset1Ownerinfoyesyesv0.1.133
airdress.device_join.declined1Ownerwarnyesyesv0.1.133
airdress.device_join.delegation_refused1Ownerwarnnoyesv0.1.138
airdress.device_join.expired1Ownerinfoyesyesv0.1.133
airdress.device_join.requested1Ownerinfoyesyesv0.1.133
airdress.device_join.withdrawn1Ownerinfoyesyesv0.1.133
airdress.dns.delegation_report.refused1Ownerwarnnoyesv0.1.138
airdress.dns.delegation_report.sent1Ownerinfonoyesv0.1.138
airdress.dns.transfer.enabled1Ownerinfonoyesv0.1.138
airdress.dns.transfer.key_created1Ownerinfonoyesv0.1.138
airdress.dns.transfer.notify_failed1Ownerwarnnoyesv0.1.138
airdress.dns.transfer.refused1Ownerwarnnonov0.1.138
airdress.dns.transfer.served1Ownerinfononov0.1.138
airdress.enrollment.airdress_not_served1Ownerwarnnoyesv0.1.135
airdress.enrollment.delegation_stale1Ownerwarnnoyesv0.1.135
airdress.enrollment.idle_revoked1Ownerwarnnoyesv0.1.135
airdress.enrollment.root_adopted1Ownerinfonoyesv0.1.135
airdress.enrollment.root_key_mismatch1Ownerwarnnoyesv0.1.135
airdress.enrollment.sibling_enrolled1Ownerinfoyesyesv0.1.133
airdress.enrollment.sibling_revoked1Ownerinfoyesyesv0.1.133
airdress.event_subscription.applied1Ownerinfonoyesv0.1.133
airdress.event_subscription.delivery_abandoned1Ownerwarnnoyesv0.1.133
airdress.event_subscription.delivery_failed1Ownerinfononov0.1.133
airdress.event_subscription.disabled1Ownerwarnnoyesv0.1.133
airdress.event_subscription.owner_disabled1The person it concernswarnyesnov0.1.133
airdress.event_subscription.owner_lifted1The person it concernsinfoyesnov0.1.133
airdress.event_subscription.test.sent1The person it concernsinfononov0.1.133
airdress.federation.binding_conflict1Ownerwarnnoyesv0.1.138
airdress.federation.binding_refused1Ownerwarnnonov0.1.138
airdress.federation.delivery_status_changed1Ownerdebugyesnov0.1.133
airdress.federation.from_not_authorized1Ownerwarnnoyesv0.1.138
airdress.federation.own_binding_expired1Ownererrornoyesv0.1.138
airdress.federation.own_binding_refreshed1Ownerinfonoyesv0.1.138
airdress.federation.peer_admitted1Ownerdebugnonov0.1.138
airdress.federation.request_received1The person it concernsinfononov0.1.138
airdress.function.config_unavailable1Ownerwarnnonov0.1.133
airdress.function.event.deduplicated1Ownerdebugnonov0.1.133
airdress.function.events_lagged1Ownerwarnnonov0.1.133
airdress.function.filter.failed1Ownerwarnnoyesv0.1.133
airdress.function.load_failed1Ownerwarnnoyesv0.1.133
airdress.function.loaded1Ownerinfonoyesv0.1.133
airdress.function.logs.evicted1Ownerinfononov0.1.133
airdress.function.quarantined1Ownerwarnnoyesv0.1.133
airdress.function.sdk.withdrawn1Ownerwarnnoyesv0.1.133
airdress.function.source.published1Ownerinfonoyesv0.1.133
airdress.function.source.refused1Ownerinfonoyesv0.1.133
airdress.function.source.stale_write_refused1Ownerinfonoyesv0.1.133
airdress.function.tool.deduplicated1Ownerinfononov0.1.133
airdress.function.unsigned_bundle_accepted1Ownerwarnnonov0.1.133
airdress.function.unsigned_source_accepted1Ownerwarnnonov0.1.133
airdress.function.unsigned_source_loaded1Ownerwarnnonov0.1.133
airdress.function.version.deployed1Ownerinfonoyesv0.1.133
airdress.function.version.evicted1Ownerinfonoyesv0.1.133
airdress.function.version.promote_refused1Ownerinfonoyesv0.1.133
airdress.function.version.promoted1Ownerinfonoyesv0.1.133
airdress.function.version_refused1Ownerwarnnoyesv0.1.133
airdress.functions.engine_compiled_in_place1Ownerwarnnoyesv0.1.138
airdress.functions.signing_unavailable1Ownerwarnnonov0.1.133
airdress.grant.created1Ownerinfonoyesv0.1.133
airdress.grant.revoked1Ownerinfonoyesv0.1.133
airdress.handshake.pending1Ownerinfoyesyesv0.1.133
airdress.home.channel.ended1Ownerinfonoyesv0.1.137
airdress.home.channel.opened1Ownerinfonoyesv0.1.137
airdress.home.channel.refused1Ownerinfonoyesv0.1.137
airdress.home.channel.revoked1Ownerinfonoyesv0.1.137
airdress.home.conversation.created1Ownerinfonoyesv0.1.137
airdress.home.conversation.failed1Ownerwarnnoyesv0.1.137
airdress.home.conversation.opened1Ownerinfonoyesv0.1.137
airdress.home.deleted1Ownerinfonoyesv0.1.137
airdress.home.frame.received1Ownerdebugnonov0.1.137
airdress.home.hourly1Ownerinfononov0.1.137
airdress.home.liveness.listen_failed1Ownerwarnnoyesv0.1.137
airdress.home.liveness.unavailable1Ownerwarnnoyesv0.1.137
airdress.home.notify.delivered1Ownerinfonoyesv0.1.137
airdress.home.notify.failed1Ownerwarnnoyesv0.1.137
airdress.home.notify.refused1Ownerinfonoyesv0.1.137
airdress.home.observe.dropped1Ownerdebugnonov0.1.137
airdress.home.probe1Ownerinfononov0.1.137
airdress.home.service.called1Ownerinfonoyesv0.1.137
airdress.home.service.refused1Ownerinfonoyesv0.1.137
airdress.home.session.closed1Ownerinfonoyesv0.1.137
airdress.home.session.displaced1Ownerinfonoyesv0.1.137
airdress.home.session.opened1Ownerinfonoyesv0.1.137
airdress.home.shared.received1Ownerinfonoyesv0.1.137
airdress.hook.breaker_opened1Ownerwarnnoyesv0.1.133
airdress.host_link.checkpoint.completed1Ownerinfononov0.1.138
airdress.host_link.checkpoint.failed1Ownererrornoyesv0.1.138
airdress.host_link.listening1Ownerinfonoyesv0.1.138
airdress.host_link.peer_refused1Ownerwarnnonov0.1.138
airdress.host_link.stopped1Ownererrornoyesv0.1.138
airdress.host_link.switches.set1Ownerinfonoyesv0.1.138
airdress.host_link.switches.unwritable1Ownererrornoyesv0.1.138
airdress.host_link.unavailable1Ownererrornoyesv0.1.138
airdress.household.setting.announced1Ownerinfoyesyesv0.1.133
airdress.household.setting.changed1Ownerinfonoyesv0.1.138
airdress.identity.key_created1Ownerinfonoyesv0.1.138
airdress.identity.key_rotated1Ownerinfonoyesv0.1.138
airdress.identity.key_unreadable1Ownerwarnnoyesv0.1.138
airdress.identity.keys_published1Ownerinfonoyesv0.1.138
airdress.identity.keys_unavailable1Ownerwarnnoyesv0.1.138
airdress.identity.transport_certificate_issued1Ownerinfonoyesv0.1.138
airdress.identity.transport_unavailable1Ownerwarnnonov0.1.133
airdress.idle.probe_deferred1Ownerdebugnonov0.1.136
airdress.idle.reaped1Ownerinfonoyesv0.1.136
airdress.idle.reported1Ownerdebugnonov0.1.136
airdress.ingress.static_bearer1Ownerwarnnoyesv0.1.138
airdress.ingress.static_bearer_legacy1Ownerwarnnoyesv0.1.138
airdress.intercept.denied1Ownerwarnnoyesv0.1.133
airdress.intercept.hook_failed1Ownerwarnnoyesv0.1.133
airdress.key_package.retired_form_purged1Ownerwarnnoyesv0.1.138
airdress.key_package.undecodable1Ownerwarnnoyesv0.1.138
airdress.location.consent.changed1The person it concernsinfononov0.1.138
airdress.location.event.received1The person it concernsinfononov0.1.138
airdress.location.events.erased1The person it concernsinfononov0.1.138
airdress.location.events.expired1Ownerinfononov0.1.138
airdress.location.model_call.refused1Ownerwarnnoyesv0.1.133
airdress.location.request.refused1Ownerwarnnoyesv0.1.138
airdress.location.track.ended1The person it concernsinfononov0.1.138
airdress.location.track.lost1The person it concernsinfononov0.1.138
airdress.location.track.recovered1The person it concernsinfononov0.1.138
airdress.location.track.silent1The person it concernsinfononov0.1.138
airdress.location.track.started1The person it concernsinfononov0.1.138
airdress.machine.approval_renewed1Ownerinfonoyesv0.1.138
airdress.machine.approved1Ownerinfonoyesv0.1.138
airdress.machine.authorization_changed1Ownerinfonoyesv0.1.138
airdress.machine.denied1Ownerinfonoyesv0.1.138
airdress.machine.discovery_advertised1Ownerinfonoyesv0.1.138
airdress.machine.enrolled1Ownerinfonoyesv0.1.136
airdress.machine.enrollment_requested1Ownerinfonoyesv0.1.138
airdress.machine.linked1Ownerinfonoyesv0.1.138
airdress.machine.preauth_key.created1Ownerinfonoyesv0.1.138
airdress.machine.preauth_key.redeemed1Ownerinfonoyesv0.1.138
airdress.machine.preauth_key.refused1Ownerinfononov0.1.138
airdress.machine.preauth_key.revoked1Ownerinfonoyesv0.1.138
airdress.machine.reauth_requested1Ownerinfonoyesv0.1.138
airdress.machine.revoked1Ownerinfonoyesv0.1.138
airdress.machine.source_key.compromised1Ownerwarnnoyesv0.1.138
airdress.machine.source_key_added1Ownerinfonoyesv0.1.138
airdress.member.account_binding.bound1Ownerinfonoyesv0.1.138
airdress.member.account_binding.enabled1Ownerinfonoyesv0.1.138
airdress.member.account_binding.offered1Ownerinfonoyesv0.1.138
airdress.member_authorization.asserted1The person it concernsinfononov0.1.138
airdress.member_authorization.enabled1Ownerinfonoyesv0.1.138
airdress.member_authorization.not_a_member1Ownerinfononov0.1.138
airdress.member_authorization.request_refused1Ownerwarnnonov0.1.138
airdress.mls.revocation_queried1Ownerdebugnonov0.1.138
airdress.operator.started1Everyone on the airdressinfonoyesv0.1.133
airdress.operator_key.moved_to_airdress1Ownerinfonoyesv0.1.138
airdress.operator_key.name_rows_left1Ownerwarnnoyesv0.1.138
airdress.owner.rebound1Ownerwarnnonov0.1.135
airdress.peer.registry_conflict1Ownerwarnnoyesv0.1.138
airdress.peer_trust.added1Ownerinfonoyesv0.1.138
airdress.peer_trust.changed1Ownerwarnnoyesv0.1.138
airdress.peer_trust.conflict1Ownerwarnnoyesv0.1.138
airdress.peer_trust.revoked1Ownerinfonoyesv0.1.138
airdress.peer_trust.rotated1Ownerinfonoyesv0.1.138
airdress.person.contact_tag.rotated1The person it concernsinfononov0.1.138
airdress.person.root.mismatched1The person it concernswarnnonov0.1.138
airdress.person.root.pinned1The person it concernsinfononov0.1.138
airdress.plugin.assertion.refused1Ownerinfononov0.1.135
airdress.plugin.author_key.revoked1Ownerwarnnoyesv0.1.135
airdress.plugin.authorization.granted1Ownerinfonoyesv0.1.135
airdress.plugin.authorization.offer_changed1Ownerinfonoyesv0.1.135
airdress.plugin.authorization.revoked1Ownerinfonoyesv0.1.135
airdress.plugin.config.invalid1Ownererrornoyesv0.1.135
airdress.plugin.egress.refused1Ownerinfonoyesv0.1.135
airdress.plugin.export.written1Ownerinfonoyesv0.1.135
airdress.plugin.grant.created1Ownerinfonoyesv0.1.135
airdress.plugin.grant.revoked1Ownerinfonoyesv0.1.135
airdress.plugin.host.call_refused1Ownerinfonoyesv0.1.135
airdress.plugin.host.decided1Ownerinfononov0.1.135
airdress.plugin.host.key_created1Ownerinfononov0.1.135
airdress.plugin.host.key_released1Ownerinfononov0.1.135
airdress.plugin.host.peer_mismatch1Ownerwarnnoyesv0.1.135
airdress.plugin.index.unverified1Ownerwarnnoyesv0.1.135
airdress.plugin.install.completed1Ownerinfonoyesv0.1.135
airdress.plugin.install.failed1Ownerwarnnoyesv0.1.135
airdress.plugin.install.not_served1Ownerwarnnoyesv0.1.135
airdress.plugin.install.quarantined1Ownerwarnnoyesv0.1.135
airdress.plugin.install.rolled_back1Ownerwarnnoyesv0.1.135
airdress.plugin.install.started1Ownerinfonoyesv0.1.135
airdress.plugin.install.unsigned1Ownerwarnnoyesv0.1.135
airdress.plugin.instance.exited1Ownerwarnnoyesv0.1.135
airdress.plugin.instance.not_ready1Ownererrornoyesv0.1.135
airdress.plugin.instance.unhealthy1Ownerwarnnoyesv0.1.135
airdress.plugin.kind.applied1Ownerinfonoyesv0.1.135
airdress.plugin.kind.deleted1Ownerinfonoyesv0.1.135
airdress.plugin.log1Ownerinfononov0.1.135
airdress.plugin.log_dropped1Ownerwarnnonov0.1.135
airdress.plugin.name_published1Ownerinfonoyesv0.1.135
airdress.plugin.name_withdrawn1Ownerinfonoyesv0.1.135
airdress.plugin.parent_name_withdrawn1Ownerinfonoyesv0.1.135
airdress.plugin.principal.erased1Ownerinfonoyesv0.1.135
airdress.plugin.principal.revoked1Ownerinfonoyesv0.1.135
airdress.plugin.proxy.refused1Ownerinfonoyesv0.1.135
airdress.plugin.sandbox.insecure1Ownerwarnnoyesv0.1.135
airdress.plugin.session.swept1Ownerinfononov0.1.135
airdress.plugin.socket.refused1Ownerwarnnoyesv0.1.135
airdress.plugin.uninstall.completed1Ownerinfonoyesv0.1.135
airdress.plugin.wake1Ownerinfonoyesv0.1.135
airdress.proxy.admin_path_refused1Ownerwarnnoyesv0.1.135
airdress.publication.block_changed1The person it concernsinfoyesnov0.1.133
airdress.push.envelope_wake.deferred1Ownerdebugnonov0.1.138
airdress.push.envelope_wake.sent1Ownerdebugnonov0.1.138
airdress.ratelimit.unauthenticated_key1Ownerwarnnonov0.1.138
airdress.remote_mcp.session_ended1Ownerinfonoyesv0.1.138
airdress.remote_mcp.session_opened1Ownerinfonoyesv0.1.138
airdress.remote_mcp.token_refused1Ownerinfononov0.1.138
airdress.revoked_grants.cursor_refused1Ownerwarnnonov0.1.138
airdress.revoked_grants.feed_refused1Ownererrornonov0.1.138
airdress.revoked_grants.feed_unavailable1Ownerwarnnonov0.1.138
airdress.revoked_grants.learned1Ownerinfonoyesv0.1.138
airdress.revoked_grants.not_polled1Ownerwarnnoyesv0.1.138
airdress.revoked_grants.stream_ended1Ownerinfonoyesv0.1.138
airdress.root_recovery.cancelled1Ownerwarnnoyesv0.1.135
airdress.root_recovery.executed1Ownerwarnnoyesv0.1.135
airdress.root_recovery.rejected1Ownerwarnnoyesv0.1.135
airdress.root_recovery.scheduled1Ownerwarnyesnov0.1.133
airdress.schedule.token_minted1Ownerdebugnonov0.1.133
airdress.schedule.token_refused1Ownerwarnnonov0.1.133
airdress.shell.attention1The person it concernsinfoyesnov0.1.133
airdress.shell.attention.sent1The person it concernsinfononov0.1.137
airdress.shell.device.revoked1The person it concernsinfononov0.1.137
airdress.shell.device_key.introduced1The person it concernsinfononov0.1.137
airdress.shell.device_key.registered1The person it concernsinfononov0.1.137
airdress.shell.host.connected1The person it concernsinfononov0.1.137
airdress.shell.host.deleted1Ownerinfonoyesv0.1.137
airdress.shell.host.disconnected1The person it concernsinfononov0.1.137
airdress.shell.host.linked1The person it concernsinfoyesnov0.1.133
airdress.shell.host.linked_unannounced1Ownerwarnnoyesv0.1.137
airdress.shell.host.pin_mismatch1Ownerwarnnonov0.1.137
airdress.shell.host.profiles_changed1The person it concernsinfononov0.1.137
airdress.shell.host.refused1Ownerinfonoyesv0.1.137
airdress.shell.host.revoked1Ownerinfonoyesv0.1.137
airdress.shell.host.runs_as_root1Ownerwarnnonov0.1.137
airdress.shell.host.stopping1The person it concernsinfononov0.1.137
airdress.shell.liveness.listen_failed1Ownerwarnnonov0.1.137
airdress.shell.session.attached1The person it concernsinfononov0.1.137
airdress.shell.session.closed1The person it concernsinfononov0.1.137
airdress.shell.session.detached1The person it concernsinfononov0.1.137
airdress.shell.session.input_moved1The person it concernsinfononov0.1.137
airdress.shell.session.opened1The person it concernsinfononov0.1.137
airdress.shell.session.refused1The person it concernsinfononov0.1.137
airdress.shell.switched_off1Ownerinfonoyesv0.1.138
airdress.shells.host_binding_refused1Ownerwarnnoyesv0.1.138
airdress.subname.created1Ownerinfonoyesv0.1.138
airdress.subname.deleted1Ownerinfonoyesv0.1.138
airdress.switches.applied1Ownerinfonoyesv0.1.138
airdress.switches.rejected1Ownerwarnnoyesv0.1.138
airdress.switches.reloaded1Ownerinfonoyesv0.1.138
airdress.thing.announce.drifted1Ownerinfononov0.1.138
airdress.thing.channel.closed1Ownerinfonoyesv0.1.138
airdress.thing.channel.opened1Ownerinfonoyesv0.1.138
airdress.thing.command.answered1Ownerinfonoyesv0.1.138
airdress.thing.command.refused1Ownerinfonoyesv0.1.138
airdress.thing.command.result_unclaimed1Ownerinfonoyesv0.1.138
airdress.thing.command.sent1Ownerinfonoyesv0.1.138
airdress.thing.command.timed_out1Ownerinfonoyesv0.1.138
airdress.thing.deleted1Ownerinfonoyesv0.1.138
airdress.thing.events.dropped_on_device1Ownerinfononov0.1.138
airdress.thing.events.refused1Ownerinfononov0.1.138
airdress.thing.liveness.unavailable1Ownerwarnnoyesv0.1.138
airdress.thing.request.refused1Ownerinfonoyesv0.1.138
airdress.tls.own_cert_issued_on_retry1Ownerinfonoyesv0.1.136
airdress.tls.own_cert_retry_failed1Ownerwarnnonov0.1.136
airdress.tls.owner_renew_refused1Ownerinfonoyesv0.1.136
airdress.tls.owner_renew_requested1Ownerinfonoyesv0.1.136
airdress.tls.renew_failed1Ownerwarnnoyesv0.1.136
airdress.tls.renew_started1Ownerinfonoyesv0.1.136
airdress.tls.renew_succeeded1Ownerinfonoyesv0.1.136
airdress.token.minted1Ownerinfononov0.1.133
airdress.token.root_key_created1Ownerinfononov0.1.133
airdress.unit.drift_detected1Ownerwarnnoyesv0.1.136

Besides recording events, the operator stops at a few named places before it acts, where a Hook may change or refuse what is about to happen. They are a closed list.

A function is about to be invoked: over its HTTP route, or with an event (a binding, or a subscription’s function target). Validate only.

A hook may not change anything here; it may only allow or refuse. The strictest failure policy it may set is fail. First carried by operator v0.1.133.

FieldTypeRequiredDescription
actorstring or nullnoFor a request: who is calling, as the request context recorded it.
event_idstring or nullno
event_sourcestring or nullnoFor an event: its CloudEvent source and id.
namestringyesThe function’s name. (Not function: that is a reserved word in CEL, so a hook could never name the field.)
triggerstringyeshttp or event.
JSON Schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "A function is about to be invoked: over its HTTP route, or with an event (a binding, or a subscription's function target). Validate only.",
"properties": {
"actor": {
"default": null,
"description": "For a request: who is calling, as the request context recorded it.",
"type": [
"string",
"null"
]
},
"event_id": {
"default": null,
"type": [
"string",
"null"
]
},
"event_source": {
"default": null,
"description": "For an event: its `CloudEvent` `source` and `id`.",
"type": [
"string",
"null"
]
},
"name": {
"description": "The function's name. (Not `function`: that is a reserved word in CEL, so a hook could never name the field.)",
"type": "string"
},
"trigger": {
"description": "`http` or `event`.",
"type": "string"
}
},
"required": [
"name",
"trigger"
],
"title": "FunctionWillInvoke",
"type": "object"
}

A resource is about to be created or replaced through /v1/apply.

Raised after the applier’s authorization and the Kind’s own validation, before anything is stored. A mutating hook may change its labels and spec; the result is validated and authorized again. Never raised for a Hook.

A hook may change labels and spec. The strictest failure policy it may set is fail. First carried by operator v0.1.133.

FieldTypeRequiredDescription
actorstringyesWho is applying: the owner’s subject or machine:<id>.
dry_runbooleanyesA dry run is intercepted too, and reports what would happen.
kindstringyes
labelsobjectno
namestringyes
specanyyes
JSON Schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "A resource is about to be created or replaced through `/v1/apply`.\n\nRaised after the applier's authorization and the Kind's own validation, before anything is stored. A mutating hook may change its labels and spec; the result is validated and authorized again. Never raised for a `Hook`.",
"properties": {
"actor": {
"description": "Who is applying: the owner's subject or `machine:<id>`.",
"type": "string"
},
"dry_run": {
"description": "A dry run is intercepted too, and reports what would happen.",
"type": "boolean"
},
"kind": {
"type": "string"
},
"labels": {
"additionalProperties": {
"type": "string"
},
"default": {},
"type": "object"
},
"name": {
"type": "string"
},
"spec": true
},
"required": [
"actor",
"dry_run",
"kind",
"name",
"spec"
],
"title": "ResourceWillApply",
"type": "object"
}

A resource is about to be deleted. Validate only. Never raised for a Hook: a hook cannot block its own removal.

A hook may not change anything here; it may only allow or refuse. The strictest failure policy it may set is fail. First carried by operator v0.1.133.

FieldTypeRequiredDescription
actorstringyes
kindstringyes
namestringyes
JSON Schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "A resource is about to be deleted. Validate only. Never raised for a `Hook`: a hook cannot block its own removal.",
"properties": {
"actor": {
"type": "string"
},
"kind": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"actor",
"kind",
"name"
],
"title": "ResourceWillDelete",
"type": "object"
}