Canonical · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Canonical Assertions API

9 actions 9 updates phrasing extends openapi/canonical-assertions-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/assertions/{type}/{primaryKey}'].get
$.paths['/v2/assertions'].get
$.paths['/v2/assertions'].post
$.paths['/v2/assertions/{assertion-type}'].get
$.paths['/v2/model'].get
$.paths['/v2/model'].post
$.paths['/v2/model/serial'].get
$.paths['/v2/model/serial'].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 Canonical Assertions API
  version: 1.0.0
extends: openapi/canonical-assertions-api-openapi.yml
actions:
- target: $.info
  update:
    x-apievangelist-phrasing:
      method: generated
      generated: '2026-10-01'
      generator: build-phrasing.py
      label: Generated by API Evangelist
      operations: 8
- target: $.paths['/v2/assertions/{type}/{primaryKey}'].get
  update:
    x-apievangelist-phrasing:
      intent: Fetch one assertion by its primary key
      effect: read
      questions:
      - Can I fetch a single signed assertion if I know its type and primary key?
      - Where do I get one specific account-key assertion by its key?
      instructions:
      - text: Fetch the {type} assertion with primary key {primary_key}.
        slots:
          type: path.type
          primary_key: path.primaryKey
      - text: Get the single signed assertion of type {type} keyed {primary_key}.
        slots:
          type: path.type
          primary_key: path.primaryKey
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v2/assertions'].get
  update:
    x-apievangelist-phrasing:
      intent: List known assertion types
      effect: read
      questions:
      - Which assertion types does snapd know about?
      - What kinds of signed assertions can the system database hold?
      instructions:
      - text: List every assertion type the system supports.
      - text: Show me the names of all known assertion types.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/assertions'].post
  update:
    x-apievangelist-phrasing:
      intent: Add or replace a signed assertion
      effect: write
      questions:
      - How do I add a signed assertion to the system's assertion database?
      - What signature does an assertion need before snapd will accept it?
      instructions:
      - text: Add this signed assertion to the system database.
      - text: Replace the existing assertion with this newer signed version.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/assertions/{assertion-type}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get assertions of a given type
      effect: read
      questions:
      - How do I fetch all assertions of one type, such as account-key?
      - Can I pull assertions from the store and get them back as JSON?
      instructions:
      - text: Get all assertions of type {assertion_type}.
        slots:
          assertion_type: path.assertion-type
      - text: Fetch {assertion_type} assertions from the store with remote {remote} as JSON {json}.
        slots:
          assertion_type: path.assertion-type
          remote: query.remote
          json: query.json
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/model'].get
  update:
    x-apievangelist-phrasing:
      intent: Get the device's model assertion
      effect: read
      questions:
      - Which model assertion describes this snap-based device?
      - What brand and model is this Ubuntu Core device running as?
      instructions:
      - text: Show the active model assertion.
      - text: Tell me the model this device is configured as.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/model'].post
  update:
    x-apievangelist-phrasing:
      intent: Remodel the device with a new model assertion
      effect: write
      questions:
      - How do I remodel a device by supplying a new model assertion?
      - Can a remodel be done offline, with the snaps provided alongside?
      instructions:
      - text: Replace the model assertion with {assertion}.
        slots:
          assertion: requestBody.assertion
      - text: Remodel this device using new model assertion {assertion}.
        slots:
          assertion: requestBody.assertion
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/model/serial'].get
  update:
    x-apievangelist-phrasing:
      intent: Get the device's serial assertion
      effect: read
      questions:
      - What serial assertion binds this device's identity to its key?
      - Has this device been registered and issued a serial by the store?
      instructions:
      - text: Show the current serial assertion.
      - text: Get this device's serial identity assertion.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/model/serial'].post
  update:
    x-apievangelist-phrasing:
      intent: Forget the device's serial registration
      effect: destructive
      questions:
      - How do I make a device forget its serial and register again?
      - Can I stop re-registration from happening until the next reboot?
      instructions:
      - text: Run serial action {action} to unregister this device.
        slots:
          action: requestBody.action
      - text: 'Forget the serial with action {action} and hold registration until reboot: {hold}.'
        slots:
          action: requestBody.action
          hold: requestBody.no-registration-until-reboot
      method: generated
      generated: '2026-09-26'