Canonical · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Snapd REST Authentication Required API
21 actions
21 updates
phrasing
extends
openapi/canonical-authenticationrequired-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Canonical's API. It is a proposal applied on top of the contract, not a document Canonical publishes.
What the actions change
x-apievangelist-phrasing
Targets 21 · first 16 shown; the file carries all of them
$.info
$.paths['/v2/changes'].get
$.paths['/v2/changes/{id}'].get
$.paths['/v2/changes/{id}'].post
$.paths['/v2/cohorts'].post
$.paths['/v2/find'].get
$.paths['/v2/login'].post
$.paths['/v2/logout'].post
$.paths['/v2/logs'].get
$.paths['/v2/snapctl'].post
$.paths['/v2/snaps/{name}/conf'].get
$.paths['/v2/snapshots/{set-id}/export'].get
$.paths['/v2/system/system-recovery-keys'].get
$.paths['/v2/system/system-recovery-keys'].post
$.paths['/v2/systems'].post
$.paths['/v2/systems/{label}'].get
OpenAPI Overlay
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
title: API Evangelist conversational phrasing for Snapd REST Authentication Required API
version: 1.0.0
extends: openapi/canonical-authenticationrequired-api-openapi.yml
actions:
- target: $.info
update:
x-apievangelist-phrasing:
method: generated
generated: '2026-09-26'
generator: build-phrasing.py
label: Generated by API Evangelist
operations: 20
- target: $.paths['/v2/changes'].get
update:
x-apievangelist-phrasing:
intent: List snapd changes in progress or completed
effect: read
questions:
- What installs, refreshes and other changes is snapd running right now?
- Can I filter the snapd change list to only in-progress or only finished work?
- Which changes have touched a particular snap?
instructions:
- text: List snapd changes filtered to {select}.
slots:
select: query.select
- text: Show all changes that involve snap {for}.
slots:
for: query.for
method: generated
generated: '2026-09-26'
- target: $.paths['/v2/changes/{id}'].get
update:
x-apievangelist-phrasing:
intent: Check the status of one snapd change
effect: read
questions:
- Has a specific snapd background change finished yet?
- How do I check whether a snap install I kicked off succeeded?
instructions:
- text: Get the current status of snapd change {id}.
slots:
id: path.id
- text: Tell me whether change {id} is done, still running or errored.
slots:
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/v2/changes/{id}'].post
update:
x-apievangelist-phrasing:
intent: Abort a snapd change in progress
effect: destructive
questions:
- Can I stop a snap operation that's still running?
- How do I cancel a stuck snapd change?
instructions:
- text: Abort snapd change {id} with action {action}.
slots:
id: path.id
action: requestBody.action
- text: Cancel the in-progress change {id}.
slots:
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/v2/cohorts'].post
update:
x-apievangelist-phrasing:
intent: Create cohort keys for snaps
effect: write
questions:
- How do I generate cohort keys so several devices get the same snap revision?
- Can I create cohort keys for a set of snaps at once?
instructions:
- text: Create cohort keys for snaps {snaps} using action {action}.
slots:
snaps: requestBody.snaps
action: requestBody.action
- text: Generate cohort keys for the snaps {snaps}.
slots:
snaps: requestBody.snaps
method: generated
generated: '2026-09-26'
- target: $.paths['/v2/find'].get
update:
x-apievangelist-phrasing:
intent: Search the store for snaps
effect: read
questions:
- Which snaps in the store match a search term and work on this machine?
- Can I browse store snaps by section, like games or development?
- Is there a snap with an exact name available for my system?
instructions:
- text: Search the snap store for {q}.
slots:
q: query.q
- text: Find the snap named exactly {name} in the store.
slots:
name: query.name
- text: List store snaps in section {section}.
slots:
section: query.section
method: generated
generated: '2026-09-26'
- target: $.paths['/v2/login'].post
update:
x-apievangelist-phrasing:
intent: Log in to snapd and the store
effect: write
questions:
- How do I sign in to snapd with my store account?
- Does snapd login support a one-time password for two-factor accounts?
instructions:
- text: Log in to snapd as {email} with password {password}.
slots:
email: requestBody.email
password: requestBody.password
- text: Sign in {email} using password {password} and one-time code {otp}.
slots:
email: requestBody.email
password: requestBody.password
otp: requestBody.otp
method: generated
generated: '2026-09-26'
- target: $.paths['/v2/logout'].post
update:
x-apievangelist-phrasing:
intent: Log out of snapd and the store
effect: write
questions:
- How do I sign the current user out of snapd?
- Can I clear my store session from snapd?
instructions:
- text: Log me out of snapd and the store.
- text: End the current snapd store session.
method: generated
generated: '2026-09-26'
- target: $.paths['/v2/logs'].get
update:
x-apievangelist-phrasing:
intent: Read snap service logs
effect: read
questions:
- Where can I read the logs for my snap services?
- Can I follow snapd logs live as new lines arrive?
- Is it possible to limit logs to the last few lines?
instructions:
- text: Show the last {n} log lines for {names}.
slots:
n: query.n
names: query.names
- text: Stream logs for {names} and keep following them.
slots:
names: query.names
method: generated
generated: '2026-09-26'
- target: $.paths['/v2/snapctl'].post
update:
x-apievangelist-phrasing:
intent: Run a snapctl command from inside a snap
effect: write
questions:
- How does a snap run snapctl commands through the snapd socket?
- Can I pass stdin to a snapctl command over the API?
instructions:
- text: Run snapctl with arguments {args} in context {context-id}.
slots:
args: requestBody.args
context-id: requestBody.context-id
- text: Execute snapctl {args} for context {context-id}, feeding {stdin} as input.
slots:
args: requestBody.args
context-id: requestBody.context-id
stdin: requestBody.stdin
method: generated
generated: '2026-09-26'
- target: $.paths['/v2/snaps/{name}/conf'].get
update:
x-apievangelist-phrasing:
intent: Get an installed snap's configuration
effect: read
questions:
- What configuration options are set for an installed snap?
- Can I read system-wide snap options too?
instructions:
- text: Show the configuration of snap {name}.
slots:
name: path.name
- text: Get config keys {keys} for snap {name}.
slots:
keys: query.keys
name: path.name
method: generated
generated: '2026-09-26'
- target: $.paths['/v2/snapshots/{set-id}/export'].get
update:
x-apievangelist-phrasing:
intent: Download a snapshot set as an archive
effect: read
questions:
- How do I download a snap snapshot so I can move it to another machine?
- In what format does a snapshot export come back?
instructions:
- text: Export snapshot set {set-id} as a tar archive.
slots:
set-id: path.set-id
- text: Download snapshot {set-id}.
slots:
set-id: path.set-id
method: generated
generated: '2026-09-26'
- target: $.paths['/v2/system/system-recovery-keys'].get
update:
x-apievangelist-phrasing:
intent: Retrieve the disk encryption recovery key
effect: read
questions:
- Where do I find the LUKS recovery key on an encrypted Ubuntu Core device?
- Can I fetch the full disk encryption keys through snapd?
instructions:
- text: Get the system recovery key for this Ubuntu Core device.
- text: Show me the LUKS encryption recovery keys.
method: generated
generated: '2026-09-26'
- target: $.paths['/v2/system/system-recovery-keys'].post
update:
x-apievangelist-phrasing:
intent: Remove or reset disk encryption recovery keys
effect: destructive
questions:
- How do I reset the LUKS recovery keys on Ubuntu Core?
- Can I remove the recovery keys from an encrypted device?
instructions:
- text: Apply recovery key action {action} on this device.
slots:
action: requestBody.action
- text: Reset the full disk encryption recovery keys using action {action}.
slots:
action: requestBody.action
method: generated
generated: '2026-09-26'
- target: $.paths['/v2/systems'].post
update:
x-apievangelist-phrasing:
intent: Act on the current recovery system or create one
effect: write
questions:
- Can I reboot into or install from the currently active recovery system?
- How do I create a brand-new recovery system on the device?
instructions:
- text: Create a new recovery system on this device.
- text: Reboot using the current active recovery system.
method: generated
generated: '2026-09-26'
- target: $.paths['/v2/systems/{label}'].get
update:
x-apievangelist-phrasing:
intent: Get details of one recovery system
effect: read
questions:
- Is storage encryption enabled on a given recovery system?
- What actions can I take on a specific recovery system?
instructions:
- text: Show details and available actions for recovery system {label}.
slots:
label: path.label
- text: Check the encryption status of recovery system {label}.
slots:
label: path.label
method: generated
generated: '2026-09-26'
- target: $.paths['/v2/systems/{label}'].post
update:
x-apievangelist-phrasing:
intent: Perform an action on a labeled recovery system
effect: write
questions:
- Can I trigger an action on a specific recovery system by its label?
- Which body fields are needed depends on the action, so what can a labeled system do?
instructions:
- text: Run an action against recovery system {label}.
slots:
label: path.label
- text: Reboot into the recovery system labeled {label}.
slots:
label: path.label
method: generated
generated: '2026-09-26'
- target: $.paths['/v2/validation-sets'].get
update:
x-apievangelist-phrasing:
intent: List enabled validation sets
effect: read
questions:
- Which validation sets are enabled on this system?
- Can I see every validation set that's constraining my snaps?
instructions:
- text: List all enabled validation sets.
- text: Show every validation set active on this device.
method: generated
generated: '2026-09-26'
- target: $.paths['/v2/validation-sets/{account-id}/{name}'].get
update:
x-apievangelist-phrasing:
intent: Get one validation set
effect: read
questions:
- What does a particular validation set require?
- How do I look up a validation set by account and name?
instructions:
- text: Show validation set {name} from account {account-id}.
slots:
name: path.name
account-id: path.account-id
- text: Get the details of {account-id}/{name}.
slots:
account-id: path.account-id
name: path.name
method: generated
generated: '2026-09-26'
- target: $.paths['/v2/validation-sets/{account-id}/{name}'].post
update:
x-apievangelist-phrasing:
intent: Apply or forget a validation set
effect: write
questions:
- Can I enforce a validation set or only monitor it?
- How do I forget a validation set I no longer want?
- Is it possible to pin a validation set to a specific sequence?
instructions:
- text: Apply validation set {account-id}/{name} in {mode} mode.
slots:
account-id: path.account-id
name: path.name
mode: requestBody.mode
- text: Run action {action} on validation set {account-id}/{name} at sequence {sequence}.
slots:
action: requestBody.action
account-id: path.account-id
name: path.name
sequence: requestBody.sequence
method: generated
generated: '2026-09-26'
- target: $.paths['/v2/warnings'].post
update:
x-apievangelist-phrasing:
intent: Acknowledge snapd warnings
effect: write
questions:
- How do I clear snapd warnings I've already seen?
- Does acknowledging a warning fix whatever caused it?
instructions:
- text: Acknowledge all snapd warnings up to {timestamp}.
slots:
timestamp: requestBody.timestamp
- text: Apply action {action} to warnings as of {timestamp}.
slots:
action: requestBody.action
timestamp: requestBody.timestamp
method: generated
generated: '2026-09-26'