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.
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
# 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'