Canonical · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Snapd REST Experimental API

9 actions 9 updates phrasing extends openapi/canonical-experimental-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'].post
$.paths['/v2/interfaces/requests/prompts'].get
$.paths['/v2/interfaces/requests/prompts/{id}'].get
$.paths['/v2/interfaces/requests/prompts/{id}'].post
$.paths['/v2/interfaces/requests/rules'].get
$.paths['/v2/interfaces/requests/rules'].post
$.paths['/v2/interfaces/requests/rules/{id}'].get
$.paths['/v2/interfaces/requests/rules/{id}'].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 Experimental API
  version: 1.0.0
extends: openapi/canonical-experimental-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'].post
  update:
    x-apievangelist-phrasing:
      intent: Delegate or withdraw remote confdb management
      effect: write
      questions:
      - How do I let an operator remotely manage confdb values on my device?
      - Can I withdraw an operator's remote confdb access later?
      - Is it possible to limit delegation to certain confdb views or auth methods?
      instructions:
      - text: Delegate confdb views {views} to operator {operator-id} with action {action}.
        slots:
          views: requestBody.views
          operator-id: requestBody.operator-id
          action: requestBody.action
      - text: Run {action} for operator {operator-id} using authentications {authentications}.
        slots:
          action: requestBody.action
          operator-id: requestBody.operator-id
          authentications: requestBody.authentications
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/interfaces/requests/prompts'].get
  update:
    x-apievangelist-phrasing:
      intent: List outstanding access prompts
      effect: read
      questions:
      - Which snap permission prompts are waiting for a reply?
      - Can I see pending access requests for a particular user?
      instructions:
      - text: List all outstanding access prompts.
      - text: Show pending prompts for user {user-id}.
        slots:
          user-id: query.user-id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/interfaces/requests/prompts/{id}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get one access prompt
      effect: read
      questions:
      - What exactly is a particular pending prompt asking permission for?
      - Can I fetch a single access prompt by its ID?
      instructions:
      - text: Show prompt {id}.
        slots:
          id: path.id
      - text: Get the details of access prompt {id} for user {user-id}.
        slots:
          id: path.id
          user-id: query.user-id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/interfaces/requests/prompts/{id}'].post
  update:
    x-apievangelist-phrasing:
      intent: Allow or deny an access prompt
      effect: write
      questions:
      - How do I allow or deny a snap's pending access request?
      - Can my answer to a prompt become a lasting rule with a set lifespan?
      instructions:
      - text: Reply {action} to prompt {id} for lifespan {lifespan} with constraints {constraints}.
        slots:
          action: requestBody.action
          id: path.id
          lifespan: requestBody.lifespan
          constraints: requestBody.constraints
      - text: Allow prompt {id} for {duration} under constraints {constraints}, lifespan {lifespan}.
        slots:
          id: path.id
          duration: requestBody.duration
          constraints: requestBody.constraints
          lifespan: requestBody.lifespan
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/interfaces/requests/rules'].get
  update:
    x-apievangelist-phrasing:
      intent: List access prompting rules
      effect: read
      questions:
      - What prompting rules have been saved for my snaps?
      - Can I filter access rules by snap or interface?
      instructions:
      - text: List prompting rules for snap {snap}.
        slots:
          snap: query.snap
      - text: Show rules on interface {interface}.
        slots:
          interface: query.interface
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/interfaces/requests/rules'].post
  update:
    x-apievangelist-phrasing:
      intent: Create an access rule or remove rules by selector
      effect: write
      questions:
      - How do I add a new access rule without waiting for a prompt?
      - Can I delete a whole set of rules that match a selector?
      instructions:
      - text: Create a new prompting rule for user {user-id}.
        slots:
          user-id: query.user-id
      - text: Remove all access rules matching a selector.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/interfaces/requests/rules/{id}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get one access rule
      effect: read
      questions:
      - What does a specific prompting rule allow or deny?
      - Can I look up an access rule by its ID?
      instructions:
      - text: Show rule {id}.
        slots:
          id: path.id
      - text: Get access rule {id} for user {user-id}.
        slots:
          id: path.id
          user-id: query.user-id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/interfaces/requests/rules/{id}'].post
  update:
    x-apievangelist-phrasing:
      intent: Patch or remove one access rule
      effect: write
      questions:
      - Can I edit an existing prompting rule by ID?
      - How do I delete a single access rule?
      instructions:
      - text: Patch prompting rule {id}.
        slots:
          id: path.id
      - text: Remove the single access rule {id}.
        slots:
          id: path.id
      method: generated
      generated: '2026-09-26'