Canonical · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for LXD external REST Projects API

11 actions 11 updates phrasing extends openapi/canonical-projects-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 11

$.info
$.paths['/1.0/projects'].get
$.paths['/1.0/projects'].post
$.paths['/1.0/projects/{name}'].get
$.paths['/1.0/projects/{name}'].put
$.paths['/1.0/projects/{name}'].post
$.paths['/1.0/projects/{name}'].delete
$.paths['/1.0/projects/{name}'].patch
$.paths['/1.0/projects/{name}/state'].get
$.paths['/1.0/projects/{name}/state'].put
$.paths['/1.0/projects?recursion=1'].get

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 LXD external REST Projects API
  version: 1.0.0
extends: openapi/canonical-projects-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: 10
- target: $.paths['/1.0/projects'].get
  update:
    x-apievangelist-phrasing:
      intent: List URLs of LXD projects
      effect: read
      questions:
      - Which projects exist on my LXD server, as a list of links?
      - How do I get just the project URLs without their configuration?
      instructions:
      - text: List the URLs of all LXD projects.
      - text: Give me links to every project on the server.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/1.0/projects'].post
  update:
    x-apievangelist-phrasing:
      intent: Create an LXD project
      effect: write
      questions:
      - How do I create a new project to isolate instances in LXD?
      - Can I set the default network and storage pool when creating a project?
      instructions:
      - text: Create project {name} described as {description}.
        slots:
          name: requestBody.name
          description: requestBody.description
      - text: Create project {name} using network {network} and storage pool {storage}.
        slots:
          name: requestBody.name
          network: requestBody.network
          storage: requestBody.storage
      method: generated
      generated: '2026-09-26'
- target: $.paths['/1.0/projects/{name}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get one LXD project
      effect: read
      questions:
      - What's the configuration of a particular project?
      - Can I look up a single LXD project by name?
      instructions:
      - text: Show me the project I name and its settings.
      - text: Look up one LXD project by name.
      - text: Show project {project} and its settings.
        slots:
          project: path.name
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/projects/{name}'].put
  update:
    x-apievangelist-phrasing:
      intent: Replace a project's entire configuration
      effect: write
      questions:
      - How do I overwrite a project's whole configuration?
      - Will a full project update drop config keys I leave out?
      instructions:
      - text: Replace the project's entire config with {config}.
        slots:
          config: requestBody.config
      - text: Rewrite the project with description {description} and config {config}.
        slots:
          description: requestBody.description
          config: requestBody.config
      - text: Replace the entire config of project {project} with {config}.
        slots:
          project: path.name
          config: requestBody.config
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/projects/{name}'].post
  update:
    x-apievangelist-phrasing:
      intent: Rename an LXD project
      effect: write
      questions:
      - Can I rename an existing LXD project?
      - What's the call to give a project a new name?
      instructions:
      - text: Rename the project to {name}.
        slots:
          name: requestBody.name
      - text: Give this LXD project the new name {name}.
        slots:
          name: requestBody.name
      - text: Rename project {project} to {name}.
        slots:
          project: path.name
          name: requestBody.name
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/projects/{name}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete an LXD project
      effect: destructive
      questions:
      - How do I remove a project from LXD?
      - Can I force-delete a project that still has resources in it?
      instructions:
      - text: Delete the project I name.
      - text: Force-delete the project with force set to {force}.
        slots:
          force: query.force
      - text: Delete project {project}.
        slots:
          project: path.name
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/projects/{name}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Change some of a project's settings
      effect: write
      questions:
      - Can I change one project setting without resending the rest?
      - Is there a way to update just a project's description?
      instructions:
      - text: 'Patch the project so only these config keys change: {config}.'
        slots:
          config: requestBody.config
      - text: Update just the project's description to {description}.
        slots:
          description: requestBody.description
      - text: Merge config keys {config} into project {project}, leaving the rest as is.
        slots:
          project: path.name
          config: requestBody.config
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/projects/{name}/state'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a project's resource usage
      effect: read
      questions:
      - How much CPU, memory and disk is a project consuming?
      - Can I check a project's resource usage against its limits?
      instructions:
      - text: Show the resource consumption of the project I name.
      - text: Report current usage for this LXD project.
      - text: Show the resource usage of project {project}.
        slots:
          project: path.name
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/projects/{name}/state'].put
  update:
    x-apievangelist-phrasing:
      intent: Promote or demote a project for replication
      effect: write
      questions:
      - How do I promote a project to leader for replication?
      - Can I demote a replicated project, and force it if needed?
      instructions:
      - text: Set the project's replica mode to {replica_mode}.
        slots:
          replica_mode: requestBody.replica_mode
      - text: Force replica mode {replica_mode} on the project with force {force}.
        slots:
          replica_mode: requestBody.replica_mode
          force: query.force
      - text: Set the replica mode of project {project} to {replica_mode}.
        slots:
          project: path.name
          replica_mode: requestBody.replica_mode
      method: generated
      generated: '2026-10-01'
- target: $.paths['/1.0/projects?recursion=1'].get
  update:
    x-apievangelist-phrasing:
      intent: List LXD projects with full configuration
      effect: read
      questions:
      - Can I see every project's config and description in one call?
      - What features and limits is each LXD project set up with?
      instructions:
      - text: Fetch all projects with their full configuration, not just links.
      - text: Show every project's description and config settings.
      method: generated
      generated: '2026-09-26'