Canonical · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Canonical Instances API

59 actions 59 updates phrasing extends openapi/canonical-instances-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 59 · first 16 shown; the file carries all of them

$.info
$.paths['/1.0/instances'].get
$.paths['/1.0/instances'].put
$.paths['/1.0/instances'].post
$.paths['/1.0/instances'].delete
$.paths['/1.0/instances/{id_or_name}'].get
$.paths['/1.0/instances/{id_or_name}'].delete
$.paths['/1.0/instances/{id_or_name}'].patch
$.paths['/1.0/instances/{id_or_name}/exec'].post
$.paths['/1.0/instances/{id_or_name}/logs'].get
$.paths['/1.0/instances/{id_or_name}/logs/{name}'].get
$.paths['/1.0/instances?recursion=1'].get
$.paths['/1.0/instances/{name}'].get
$.paths['/1.0/instances/{name}'].put
$.paths['/1.0/instances/{name}'].post
$.paths['/1.0/instances/{name}'].delete

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 Instances API
  version: 1.0.0
extends: openapi/canonical-instances-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: 58
- target: $.paths['/1.0/instances'].get
  update:
    x-apievangelist-phrasing:
      intent: List Anbox instances as endpoint URLs
      effect: read
      questions:
      - How do I get the URLs of every Anbox instance in AMS?
      - Can I page through AMS instance links using limit and offset?
      - Which filters narrow the AMS instance URL list, like app name or node?
      instructions:
      - text: List the endpoint URLs of AMS instances running app {app_name}.
        slots:
          app_name: query.app_name
      - text: Get AMS instance URLs on node {node}, {limit} at a time.
        slots:
          node: query.node
          limit: query.limit
      method: generated
      generated: '2026-09-26'
- target: $.paths['/1.0/instances'].put
  update:
    x-apievangelist-phrasing:
      intent: Change the running state of all instances
      effect: write
      questions:
      - Can I stop every instance at once instead of one by one?
      - What bulk call starts all the instances in a project together?
      instructions:
      - text: Set every instance in project {project} to state {state}.
        slots:
          project: query.project
          state: requestBody.state
      - text: Start all of my instances in one bulk request.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/1.0/instances'].post
  update:
    x-apievangelist-phrasing:
      intent: Launch a new Anbox instance from an app or image
      effect: write
      questions:
      - How do I launch a new Android instance in AMS from an application?
      - Can I create an Anbox instance from a raw image instead of an app?
      - What happens if AMS lacks the resources to create my instance?
      instructions:
      - text: Create an AMS instance of app {app_id} version {app_version}.
        slots:
          app_id: requestBody.app_id
          app_version: requestBody.app_version
      - text: 'Launch an AMS instance from image {image_id} on node {node} without starting it: {no_start}.'
        slots:
          image_id: requestBody.image_id
          node: requestBody.node
          no_start: requestBody.no_start
      method: generated
      generated: '2026-09-26'
- target: $.paths['/1.0/instances'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete several Anbox instances at once
      effect: destructive
      questions:
      - Can I delete a batch of AMS instances by their IDs in one call?
      - What happens to a bulk AMS delete if one instance fails to delete?
      instructions:
      - text: Delete the AMS instances {ids}.
        slots:
          ids: requestBody.ids
      - text: Force-delete AMS instances {ids} even if they are running.
        slots:
          ids: requestBody.ids
      method: generated
      generated: '2026-09-26'
- target: $.paths['/1.0/instances/{id_or_name}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get details of one Anbox instance
      effect: read
      questions:
      - How can I look up a single AMS instance by its ID or name?
      - What details does AMS return about one Anbox instance?
      instructions:
      - text: Show me the AMS instance {id_or_name}.
        slots:
          id_or_name: path.id_or_name
      - text: Look up Anbox instance {id_or_name} and tell me its status.
        slots:
          id_or_name: path.id_or_name
      method: generated
      generated: '2026-09-26'
- target: $.paths['/1.0/instances/{id_or_name}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete one Anbox instance
      effect: destructive
      questions:
      - How do I remove a single Anbox instance from AMS?
      - Is deleting an AMS instance asynchronous, and how do I track it?
      instructions:
      - text: Delete AMS instance {id_or_name}.
        slots:
          id_or_name: path.id_or_name
      - text: Force the deletion of Anbox instance {id_or_name}.
        slots:
          id_or_name: path.id_or_name
      method: generated
      generated: '2026-09-26'
- target: $.paths['/1.0/instances/{id_or_name}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Start or stop one Anbox instance
      effect: write
      questions:
      - How do I stop a single Anbox instance without deleting it?
      - Can I change the desired status of one AMS instance?
      instructions:
      - text: Set AMS instance {id_or_name} to desired status {desired_status}.
        slots:
          id_or_name: path.id_or_name
          desired_status: requestBody.desired_status
      - text: Stop Anbox instance {id_or_name}.
        slots:
          id_or_name: path.id_or_name
      method: generated
      generated: '2026-09-26'
- target: $.paths['/1.0/instances/{id_or_name}/exec'].post
  update:
    x-apievangelist-phrasing:
      intent: Run a command inside an Anbox instance
      effect: write
      questions:
      - Can I run a shell command inside an Android instance managed by AMS?
      - Does AMS exec support an interactive session with a terminal size?
      instructions:
      - text: Run {command} inside AMS instance {id_or_name}.
        slots:
          command: requestBody.command
          id_or_name: path.id_or_name
      - text: Open an interactive shell in Anbox instance {id_or_name} with environment {environment}.
        slots:
          id_or_name: path.id_or_name
          environment: requestBody.environment
      method: generated
      generated: '2026-09-26'
- target: $.paths['/1.0/instances/{id_or_name}/logs'].get
  update:
    x-apievangelist-phrasing:
      intent: List collected logs for an Anbox instance
      effect: read
      questions:
      - Where can I find the logs AMS collected when an instance went into error?
      - Which log files are stored for a failed Anbox instance?
      instructions:
      - text: List the collected log files for AMS instance {id_or_name}.
        slots:
          id_or_name: path.id_or_name
      - text: Show what logs AMS gathered from errored instance {id_or_name}.
        slots:
          id_or_name: path.id_or_name
      method: generated
      generated: '2026-09-26'
- target: $.paths['/1.0/instances/{id_or_name}/logs/{name}'].get
  update:
    x-apievangelist-phrasing:
      intent: Download one collected Anbox instance log
      effect: read
      questions:
      - How do I download a specific raw log file AMS stored for an instance?
      - Can I read one collected log from a crashed Anbox instance?
      instructions:
      - text: Download log {name} from AMS instance {id_or_name}.
        slots:
          name: path.name
          id_or_name: path.id_or_name
      - text: Fetch the raw {name} log collected for Anbox instance {id_or_name}.
        slots:
          name: path.name
          id_or_name: path.id_or_name
      method: generated
      generated: '2026-09-26'
- target: $.paths['/1.0/instances?recursion=1'].get
  update:
    x-apievangelist-phrasing:
      intent: List Anbox instances with full details
      effect: read
      questions:
      - How do I list AMS instances with their full records instead of just URLs?
      - Can I get every Anbox instance's details filtered by status in one call?
      instructions:
      - text: List full records of AMS instances with status {status}.
        slots:
          status: query.status
      - text: Give me detailed AMS instances built from image {image_id}.
        slots:
          image_id: query.image_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/1.0/instances/{name}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get an LXD instance's basic configuration
      effect: read
      questions:
      - How do I look up an LXD instance's configuration by name?
      - What does the basic LXD instance record include without state?
      instructions:
      - text: Show the basic config of my LXD instance in project {project}.
        slots:
          project: query.project
      - text: Get the LXD record of instance {instance} without its runtime state.
        slots:
          instance: path.name
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}'].put
  update:
    x-apievangelist-phrasing:
      intent: Replace an LXD instance's configuration
      effect: write
      questions:
      - How do I replace the whole configuration of an LXD instance?
      - Can I restore an LXD instance from one of its snapshots?
      instructions:
      - text: Replace the config of LXD instance {instance} with {config} and profiles {profiles}.
        slots:
          instance: path.name
          config: requestBody.config
          profiles: requestBody.profiles
      - text: Restore the LXD instance to snapshot {restore}.
        slots:
          restore: requestBody.restore
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}'].post
  update:
    x-apievangelist-phrasing:
      intent: Rename, move or migrate an LXD instance
      effect: write
      questions:
      - How do I rename an LXD instance?
      - Can I live-migrate an LXD instance to another cluster member?
      - Is it possible to move an instance to a different storage pool?
      instructions:
      - text: Rename LXD instance {instance} to {new_name}.
        slots:
          instance: path.name
          new_name: requestBody.name
      - text: Live-migrate the LXD instance to cluster member {target}.
        slots:
          target: requestBody.target
      - text: Move the LXD instance to storage pool {pool}.
        slots:
          pool: requestBody.pool
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete an LXD instance and its snapshots
      effect: destructive
      questions:
      - Does deleting an LXD instance also remove its snapshots and backups?
      - How do I permanently remove an LXD container or VM?
      instructions:
      - text: Delete the LXD instance in project {project}, including its snapshots and backups.
        slots:
          project: query.project
      - text: Force-delete the LXD instance {instance}.
        slots:
          instance: path.name
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Change some settings of an LXD instance
      effect: write
      questions:
      - Can I change just one config key on an LXD instance without resending everything?
      - How do I add a device to an existing LXD instance?
      instructions:
      - text: Merge config {config} into the existing settings of LXD instance {instance}.
        slots:
          instance: path.name
          config: requestBody.config
      - text: Add devices {devices} to the LXD instance, keeping the rest unchanged.
        slots:
          devices: requestBody.devices
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/backups'].get
  update:
    x-apievangelist-phrasing:
      intent: List an LXD instance's backup URLs
      effect: read
      questions:
      - Which backups exist for my LXD instance?
      - How do I get links to all backups of an instance?
      instructions:
      - text: List backup URLs for the LXD instance in project {project}.
        slots:
          project: query.project
      - text: Show the links to the backups of instance {instance}.
        slots:
          instance: path.name
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/backups'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a backup of an LXD instance
      effect: write
      questions:
      - How do I back up an LXD instance?
      - Can an LXD backup skip snapshots and set an expiry date?
      instructions:
      - text: Back up LXD instance {instance} as {backup_name}, expiring at {expires_at}.
        slots:
          instance: path.name
          backup_name: requestBody.name
          expires_at: requestBody.expires_at
      - text: Create an instance-only backup compressed with {compression_algorithm}.
        slots:
          compression_algorithm: requestBody.compression_algorithm
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/backups/{backup}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get one backup of an LXD instance
      effect: read
      questions:
      - How can I see the details of a single instance backup?
      - When does a particular LXD backup expire?
      instructions:
      - text: Show the details of this LXD instance backup in project {project}.
        slots:
          project: query.project
      - text: Look up backup {backup} of instance {instance} and report its expiry.
        slots:
          instance: path.name
          backup: path.backup
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/backups/{backup}'].post
  update:
    x-apievangelist-phrasing:
      intent: Rename an LXD instance backup
      effect: write
      questions:
      - Can I rename an existing instance backup?
      - How do I give an LXD backup a clearer name?
      instructions:
      - text: Rename backup {backup} of instance {instance} to {new_name}.
        slots:
          instance: path.name
          backup: path.backup
          new_name: requestBody.name
      - text: Change this LXD backup's name to {name} in project {project}.
        slots:
          name: requestBody.name
          project: query.project
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/backups/{backup}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete an LXD instance backup
      effect: destructive
      questions:
      - How do I delete an old instance backup?
      - Can I remove one backup while keeping the others?
      instructions:
      - text: Delete backup {backup} of the LXD instance {instance}.
        slots:
          instance: path.name
          backup: path.backup
      - text: Remove the instance backup from project {project}.
        slots:
          project: query.project
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/backups/{backup}/export'].get
  update:
    x-apievangelist-phrasing:
      intent: Download an LXD instance backup file
      effect: read
      questions:
      - How do I download the raw backup tarball of an instance?
      - Can I export an LXD backup off the server?
      instructions:
      - text: Download the raw file of backup {backup} for instance {instance}.
        slots:
          instance: path.name
          backup: path.backup
      - text: Export the instance backup file from project {project}.
        slots:
          project: query.project
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/backups?recursion=1'].get
  update:
    x-apievangelist-phrasing:
      intent: List an LXD instance's backups with details
      effect: read
      questions:
      - Can I list every instance backup with its full details, not just links?
      - What are the expiry dates of all my instance's backups?
      instructions:
      - text: List all backups of instance {instance} as full records.
        slots:
          instance: path.name
      - text: Give me detailed backup entries for my instance in project {project}.
        slots:
          project: query.project
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/console'].get
  update:
    x-apievangelist-phrasing:
      intent: Read an LXD instance's console log
      effect: read
      questions:
      - How do I see the boot console output of an LXD instance?
      - Where can I read what an instance printed to its console?
      instructions:
      - text: Show the console log of LXD instance {instance}.
        slots:
          instance: path.name
      - text: Fetch the instance console output in project {project}.
        slots:
          project: query.project
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/console'].post
  update:
    x-apievangelist-phrasing:
      intent: Attach to an LXD instance console
      effect: write
      questions:
      - Can I attach to the live console of a running instance?
      - Does LXD offer a graphical VGA console as well as a text one?
      instructions:
      - text: Connect to the {type} console of instance {instance}.
        slots:
          instance: path.name
          type: requestBody.type
      - text: Open a console session sized {width} by {height}.
        slots:
          width: requestBody.width
          height: requestBody.height
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/console'].delete
  update:
    x-apievangelist-phrasing:
      intent: Clear an LXD instance's console log
      effect: destructive
      questions:
      - How do I wipe the console log buffer of an instance?
      - Can I reset the saved console output before a reboot?
      instructions:
      - text: Clear the console log buffer of instance {instance}.
        slots:
          instance: path.name
      - text: Empty the instance console log in project {project}.
        slots:
          project: query.project
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/exec'].post
  update:
    x-apievangelist-phrasing:
      intent: Run a command inside an LXD instance
      effect: write
      questions:
      - How do I run a command inside an LXD container as a specific user?
      - Can LXD record the output of a command I execute in an instance?
      instructions:
      - text: Run {command} in the LXD instance as user {user} from directory {cwd}.
        slots:
          command: requestBody.command
          user: requestBody.user
          cwd: requestBody.cwd
      - text: Execute {command} in instance {instance} and record its output.
        slots:
          instance: path.name
          command: requestBody.command
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/files'].get
  update:
    x-apievangelist-phrasing:
      intent: Read a file or folder inside an instance
      effect: read
      questions:
      - How do I read a file from inside an LXD instance?
      - Can I list the contents of a directory in a container?
      instructions:
      - text: Read the file at {path} inside instance {instance}.
        slots:
          instance: path.name
          path: query.path
      - text: List the directory {path} in the instance.
        slots:
          path: query.path
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/files'].post
  update:
    x-apievangelist-phrasing:
      intent: Push a file into an instance
      effect: write
      questions:
      - How do I upload a file into a running container?
      - Can I set the owner and permissions of a file I push to an instance?
      instructions:
      - text: Write a file to {path} inside instance {instance}.
        slots:
          instance: path.name
          path: query.path
      - text: Create {path} in the instance owned by uid {uid} with mode {mode}.
        slots:
          path: query.path
          uid: header.X-LXD-uid
          mode: header.X-LXD-mode
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/files'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a file inside an instance
      effect: destructive
      questions:
      - How do I remove a file from inside a container without a shell?
      - Can I delete a path in an instance's filesystem through the API?
      instructions:
      - text: Delete {path} from the filesystem of instance {instance}.
        slots:
          instance: path.name
          path: query.path
      - text: Remove the file {path} in project {project}'s instance.
        slots:
          path: query.path
          project: query.project
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/files'].head
  update:
    x-apievangelist-phrasing:
      intent: Check a file's metadata inside an instance
      effect: read
      questions:
      - Can I check whether a file exists in an instance without downloading it?
      - How do I get the owner and mode of a path inside a container?
      instructions:
      - text: Check the metadata of {path} inside instance {instance}.
        slots:
          instance: path.name
          path: query.path
      - text: Tell me if {path} is a file or directory in the instance.
        slots:
          path: query.path
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/logs'].get
  update:
    x-apievangelist-phrasing:
      intent: List an LXD instance's log files
      effect: read
      questions:
      - Which log files does LXD keep for an instance?
      - How do I find the names of an instance's LXD log files?
      instructions:
      - text: List the LXD log file URLs for instance {instance}.
        slots:
          instance: path.name
      - text: Show which LXD logs exist for the instance in project {project}.
        slots:
          project: query.project
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/logs/{filename}'].get
  update:
    x-apievangelist-phrasing:
      intent: Read one LXD instance log file
      effect: read
      questions:
      - How do I read the lxc.log of an instance?
      - Can I download a single LXD log file for a container?
      instructions:
      - text: Show me the contents of LXD log file {filename} for instance {instance}.
        slots:
          instance: path.name
          filename: path.filename
      - text: Download that LXD instance log from project {project}.
        slots:
          project: query.project
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/logs/exec-output'].get
  update:
    x-apievangelist-phrasing:
      intent: List recorded command output files
      effect: read
      questions:
      - Where are the recorded outputs of commands I ran in an instance?
      - Which exec record-output files exist for my instance?
      instructions:
      - text: List the recorded exec output files for instance {instance}.
        slots:
          instance: path.name
      - text: Show exec record-output files in project {project}.
        slots:
          project: query.project
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/logs/exec-output/{filename}'].get
  update:
    x-apievangelist-phrasing:
      intent: Read one recorded command output file
      effect: read
      questions:
      - How do I read the saved stdout of a command I executed earlier?
      - Can I fetch a specific exec-output file from an instance?
      instructions:
      - text: Show the contents of recorded exec output file {filename} from instance {instance}.
        slots:
          instance: path.name
          filename: path.filename
      - text: Fetch the saved command output from the instance in project {project}.
        slots:
          project: query.project
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/logs/exec-output/{filename}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a recorded command output file
      effect: destructive
      questions:
      - How do I clean up recorded exec output files?
      - Can I delete one saved command output from an instance?
      instructions:
      - text: Delete recorded exec output file {filename} from instance {instance}.
        slots:
          instance: path.name
          filename: path.filename
      - text: Remove the saved command output from project {project}.
        slots:
          project: query.project
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/metadata'].get
  update:
    x-apievangelist-phrasing:
      intent: Get an instance's image metadata
      effect: read
      questions:
      - How do I see the image metadata an instance was built with?
      - What templates and properties are in my instance's metadata.yaml?
      instructions:
      - text: Show the image metadata of instance {instance}.
        slots:
          instance: path.name
      - text: Get the instance image metadata in project {project}.
        slots:
          project: query.project
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/metadata'].put
  update:
    x-apievangelist-phrasing:
      intent: Replace an instance's image metadata
      effect: write
      questions:
      - Can I overwrite all of an instance's image metadata?
      - How do I replace the templates list in instance metadata?
      instructions:
      - text: Replace the instance image metadata with properties {properties} and templates {templates}.
        slots:
          properties: requestBody.properties
          templates: requestBody.templates
      - text: Overwrite the metadata architecture of instance {instance} with {architecture}.
        slots:
          instance: path.name
          architecture: requestBody.architecture
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/metadata'].patch
  update:
    x-apievangelist-phrasing:
      intent: Update part of an instance's image metadata
      effect: write
      questions:
      - Can I change a single property in an instance's image metadata?
      - How do I set a new expiry date on instance metadata without resending it all?
      instructions:
      - text: Merge properties {properties} into the instance image metadata.
        slots:
          properties: requestBody.properties
      - text: Patch the metadata expiry date of instance {instance} to {expiry_date}.
        slots:
          instance: path.name
          expiry_date: requestBody.expiry_date
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/metadata/templates'].get
  update:
    x-apievangelist-phrasing:
      intent: List or read instance template files
      effect: read
      questions:
      - Which image template files does my instance have?
      - How do I read the content of one template file on an instance?
      instructions:
      - text: List the image template file names of instance {instance}.
        slots:
          instance: path.name
      - text: Show the template file {path}.
        slots:
          path: query.path
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/metadata/templates'].post
  update:
    x-apievangelist-phrasing:
      intent: Upload an instance template file
      effect: write
      questions:
      - How do I add a new image template file to an instance?
      - Can I replace an existing template file on an instance?
      instructions:
      - text: Upload template file {path} to instance {instance}.
        slots:
          instance: path.name
          path: query.path
      - text: Replace the template {path} in project {project}.
        slots:
          path: query.path
          project: query.project
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/metadata/templates'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete an instance template file
      effect: destructive
      questions:
      - How do I remove an image template file from an instance?
      - Can I drop a template I no longer need?
      instructions:
      - text: Delete the template file {path} from instance {instance}.
        slots:
          instance: path.name
          path: query.path
      - text: Remove template {path} in project {project}.
        slots:
          path: query.path
          project: query.project
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/rebuild'].post
  update:
    x-apievangelist-phrasing:
      intent: Rebuild an instance from a new image
      effect: destructive
      questions:
      - Can I reinstall an instance from a different image while keeping its name?
      - How do I wipe an instance and rebuild it empty?
      instructions:
      - text: Rebuild instance {instance} from source {source}.
        slots:
          instance: path.name
          source: requestBody.source
      - text: Rebuild the instance as empty in project {project}.
        slots:
          project: query.project
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/sftp'].get
  update:
    x-apievangelist-phrasing:
      intent: Open an SFTP connection to an instance
      effect: read
      questions:
      - Can I browse an instance's filesystem over SFTP?
      - How do I get SFTP access to a container's files?
      instructions:
      - text: Open an SFTP connection to the filesystem of instance {instance}.
        slots:
          instance: path.name
      - text: Upgrade to SFTP so I can transfer files with the instance.
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/snapshots'].get
  update:
    x-apievangelist-phrasing:
      intent: List an instance's snapshot URLs
      effect: read
      questions:
      - Which snapshots exist for my instance?
      - How do I get links to every snapshot of a container?
      instructions:
      - text: List the snapshot URLs of instance {instance}.
        slots:
          instance: path.name
      - text: Show links to instance snapshots in project {project}.
        slots:
          project: query.project
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/snapshots'].post
  update:
    x-apievangelist-phrasing:
      intent: Take a snapshot of an instance
      effect: write
      questions:
      - How do I snapshot an instance before an upgrade?
      - Can a snapshot include the running memory state?
      instructions:
      - text: Snapshot instance {instance} as {snapshot_name}, expiring at {expires_at}.
        slots:
          instance: path.name
          snapshot_name: requestBody.name
          expires_at: requestBody.expires_at
      - text: Take a stateful snapshot named {name}.
        slots:
          name: requestBody.name
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/instances/{name}/snapshots/{snapshot}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get one instance snapshot
      effect: read
      questions:
      - How do I see the details of one snapshot?
      - When was a particular instance snapshot created?
      instructions:
      - text: Show the details of snapshot {snapshot} of instance {instance}.
        slots:
          instance: path.name
          snapshot: path.snapshot
      - text: Get the snapshot record from project {project}.
        slots:
          project: query.project
      method: generated
      generated: '2026-10-01'


# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/canonical/refs/heads/main/overlays/canonical-instances-api-phrasing-overlay.yaml