Canonical · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Snapd REST Asynchronous API

9 actions 9 updates phrasing extends openapi/canonical-asynchronous-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.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-phrasing

Targets 9

$.info
$.paths['/v2/confdb/{account}/{confdb-schema}/{view}'].get
$.paths['/v2/confdb/{account}/{confdb-schema}/{view}'].put
$.paths['/v2/interfaces'].post
$.paths['/v2/quotas'].post
$.paths['/v2/snaps'].post
$.paths['/v2/snaps/{name}'].post
$.paths['/v2/snaps/{name}/conf'].put
$.paths['/v2/snapshots'].post

OpenAPI Overlay

Raw ↑
# 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 Asynchronous API
  version: 1.0.0
extends: openapi/canonical-asynchronous-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: 8
- target: $.paths['/v2/confdb/{account}/{confdb-schema}/{view}'].get
  update:
    x-apievangelist-phrasing:
      intent: Read configuration values from confdb
      effect: read
      questions:
      - How do I read values from a confdb view on a snapd device?
      - Can I fetch only certain keys from a confdb view?
      instructions:
      - text: Read confdb view {view} of schema {schema} for account {account}.
        slots:
          view: path.view
          schema: path.confdb-schema
          account: path.account
      - text: Get keys {keys} from confdb view {view} in schema {schema} owned by {account}.
        slots:
          keys: query.keys
          view: path.view
          schema: path.confdb-schema
          account: path.account
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/confdb/{account}/{confdb-schema}/{view}'].put
  update:
    x-apievangelist-phrasing:
      intent: Write configuration values to confdb
      effect: write
      questions:
      - How do I set configuration values through a confdb view?
      - Is writing to confdb an asynchronous change in snapd?
      instructions:
      - text: Set {values} in confdb view {view} of schema {schema} for account {account}.
        slots:
          values: requestBody.values
          view: path.view
          schema: path.confdb-schema
          account: path.account
      - text: Write confdb values {values} to view {view}, schema {schema}, account {account}.
        slots:
          values: requestBody.values
          view: path.view
          schema: path.confdb-schema
          account: path.account
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/interfaces'].post
  update:
    x-apievangelist-phrasing:
      intent: Connect or disconnect snap interfaces
      effect: write
      questions:
      - How do I connect a snap's plug to a slot?
      - Can I disconnect an interface and have snapd forget the connection?
      instructions:
      - text: Connect plugs {plugs} to slots {slots}.
        slots:
          plugs: requestBody.plugs
          slots: requestBody.slots
      - text: Run interface action {action} on plugs {plugs} and slots {slots}.
        slots:
          action: requestBody.action
          plugs: requestBody.plugs
          slots: requestBody.slots
      - text: 'Disconnect plugs {plugs} and forget the connection: {forget}.'
        slots:
          plugs: requestBody.plugs
          forget: requestBody.forget
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/quotas'].post
  update:
    x-apievangelist-phrasing:
      intent: Create, change or remove a quota group
      effect: write
      questions:
      - How do I limit the resources a group of snaps can use?
      - Can I remove a quota group I created earlier?
      instructions:
      - text: Apply quota action {action} to group {group}.
        slots:
          action: requestBody.action
          group: requestBody.quota-group
      - text: Create quota group {group}.
        slots:
          group: requestBody.quota-group
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/snaps'].post
  update:
    x-apievangelist-phrasing:
      intent: Install, refresh or remove several snaps
      effect: write
      questions:
      - How do I install or refresh several snaps in one request?
      - Can I sideload a local snap file instead of pulling from the store?
      - Can multiple snap refreshes run as a single transaction?
      instructions:
      - text: Run action {action} on snaps {snaps}.
        slots:
          action: requestBody.action
          snaps: requestBody.snaps
      - text: 'Sideload the snap file at {snap_path} in dangerous mode: {dangerous}.'
        slots:
          snap_path: requestBody.snap-path
          dangerous: requestBody.dangerous
      - text: Refresh snaps {snaps} as transaction {transaction}.
        slots:
          snaps: requestBody.snaps
          transaction: requestBody.transaction
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/snaps/{name}'].post
  update:
    x-apievangelist-phrasing:
      intent: Install, refresh or remove one snap
      effect: write
      questions:
      - How do I install a single snap from a specific channel?
      - Can I revert one snap to an earlier revision?
      - Does removing a snap with purge skip the automatic snapshot?
      instructions:
      - text: Install snap {name} from channel {channel}.
        slots:
          name: path.name
          channel: requestBody.channel
      - text: Perform {action} on snap {name} at revision {revision}.
        slots:
          action: requestBody.action
          name: path.name
          revision: requestBody.revision
      - text: Remove snap {name} with purge set to {purge}.
        slots:
          name: path.name
          purge: requestBody.purge
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/snaps/{name}/conf'].put
  update:
    x-apievangelist-phrasing:
      intent: Set an installed snap's configuration
      effect: write
      questions:
      - How do I change configuration options of an installed snap?
      - Can I set system-wide snapd options through the snap config endpoint?
      instructions:
      - text: Update the configuration of snap {name}.
        slots:
          name: path.name
      - text: Set options on snap {name}; use system for core system settings.
        slots:
          name: path.name
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/snapshots'].post
  update:
    x-apievangelist-phrasing:
      intent: Restore, check, forget or import snapshots
      effect: write
      questions:
      - How do I restore a saved snapshot set of my snaps' data?
      - Can I verify a snapshot set is intact before relying on it?
      - Can I restore a snapshot for only certain users?
      instructions:
      - text: Restore snapshot set {set}.
        slots:
          set: requestBody.set
      - text: Run snapshot action {action} on set {set} for snaps {snaps}.
        slots:
          action: requestBody.action
          set: requestBody.set
          snaps: requestBody.snaps
      - text: Restore snapshot set {set} only for users {users}.
        slots:
          set: requestBody.set
          users: requestBody.users
      method: generated
      generated: '2026-09-26'