# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for Canonical Images API version: 1.0.0 extends: openapi/canonical-images-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: 31 - target: $.paths['/1.0/images'].get update: x-apievangelist-phrasing: intent: List images in the Anbox cluster effect: read questions: - Which Android images are available in my AMS cluster? - Can I get just the image names from Anbox Management Service without full details? instructions: - text: List the images stored in my AMS cluster. - text: Show AMS cluster images with recursion level {recursion}. slots: recursion: query.recursion method: generated generated: '2026-09-26' - target: $.paths['/1.0/images'].post update: x-apievangelist-phrasing: intent: Import an image from an image server into AMS effect: write questions: - How do I pull an Anbox image into AMS from an image server by name? - Can an imported AMS image be made the default image right away? instructions: - text: Import image {name} into AMS from the image server. slots: name: requestBody.name - text: Import AMS image {name} from the image server and mark it as the default image. slots: name: requestBody.name method: generated generated: '2026-09-26' - target: $.paths['/1.0/images/'].post update: x-apievangelist-phrasing: intent: Upload a package to create a new AMS image effect: write questions: - How do I create an Anbox image in AMS by uploading a gzip, bzip2 or xz package? - What compression formats does AMS accept when I upload a brand-new image package? instructions: - text: Upload this image package to AMS to create a new image using request metadata {request}. slots: request: header.X-AMS-Request - text: Create an AMS image from the uploaded package with fingerprint {fingerprint} and request {request}. slots: fingerprint: header.X-AMS-Fingerprint request: header.X-AMS-Request method: generated generated: '2026-09-26' - target: $.paths['/1.0/images/{id_or_name}'].get update: x-apievangelist-phrasing: intent: Get details of an AMS image by id or name effect: read questions: - Can I look up an AMS image using either its id or its name? - What versions and status does a specific image stored in AMS have? instructions: - text: Show the AMS image {image}. slots: image: path.id_or_name - text: Get details of AMS image {image} of type {type}. slots: image: path.id_or_name type: query.type method: generated generated: '2026-09-26' - target: $.paths['/1.0/images/{id}'].delete update: x-apievangelist-phrasing: intent: Delete an image stored in AMS effect: destructive questions: - Is there a way to remove an Android image from my AMS cluster entirely? - Can I force-delete an AMS image that is still in use? instructions: - text: Delete AMS image {id} with all its versions. slots: id: path.id - text: Force-delete AMS image {id}. slots: id: path.id method: generated generated: '2026-09-26' - target: $.paths['/1.0/images/{id}'].patch update: x-apievangelist-phrasing: intent: Upload a new package version to an existing AMS image effect: write questions: - How do I push a new package version to an image that already exists in AMS? - Does uploading an updated package to an AMS image create a new image version? instructions: - text: Upload a new package to existing AMS image {id} with request metadata {request}. slots: id: path.id request: header.X-AMS-Request - text: Add a new package version to AMS image {id}, fingerprint {fingerprint}, request {request}. slots: id: path.id fingerprint: header.X-AMS-Fingerprint request: header.X-AMS-Request method: generated generated: '2026-09-26' - target: $.paths['/1.0/images/{id}/'].patch update: x-apievangelist-phrasing: intent: Update an AMS image's metadata effect: write questions: - Can I change an AMS image's settings without re-uploading its package? - How do I make an existing AMS image the default or force a resync to nodes? instructions: - text: Make AMS image {id} the default image. slots: id: path.id - text: Force AMS image {id} metadata to sync across the cluster. slots: id: path.id method: generated generated: '2026-09-26' - target: $.paths['/1.0/images/{id}/{version}'].delete update: x-apievangelist-phrasing: intent: Delete one version of an AMS image effect: destructive questions: - How do I delete a single old version of an AMS image and keep the rest? - Can I roll back an AMS image by removing its latest version? instructions: - text: Delete version {version} of AMS image {id}. slots: id: path.id version: path.version - text: Remove image version {version} from AMS image {id}, keeping other versions. slots: id: path.id version: path.version method: generated generated: '2026-09-26' - target: $.paths['/1.0/images?recursion=1'].get update: x-apievangelist-phrasing: intent: List AMS images with full details effect: read questions: - Can I get every AMS image with its full details in one call? - Can I see the expanded records for all images in my Anbox cluster at once? instructions: - text: List all AMS cluster images expanded with their full details. - text: Get the expanded AMS image list with recursion {recursion}. slots: recursion: query.recursion method: generated generated: '2026-09-26' - target: $.paths['/1.0/images/{fingerprint}'].get update: x-apievangelist-phrasing: intent: Get an LXD image by fingerprint effect: read questions: - How do I see the properties of one LXD image by its fingerprint? - What aliases and expiry does a specific image in an LXD project have? instructions: - text: Show the LXD image with fingerprint {fingerprint}. slots: fingerprint: path.fingerprint - text: Get the LXD image details in project {project}. slots: project: query.project method: generated generated: '2026-10-01' - target: $.paths['/1.0/images/{fingerprint}'].put update: x-apievangelist-phrasing: intent: Replace an LXD image's full definition effect: write questions: - How do I overwrite all of an LXD image's properties in one request? - Can I replace an LXD image's profiles, properties and public flag together? instructions: - text: Replace the whole definition of LXD image {fingerprint}, setting public to {public} and profiles to {profiles}. slots: fingerprint: path.fingerprint public: requestBody.public profiles: requestBody.profiles - text: Overwrite the LXD image definition with auto-update {auto_update} and expiry {expires_at}. slots: auto_update: requestBody.auto_update expires_at: requestBody.expires_at method: generated generated: '2026-10-01' - target: $.paths['/1.0/images/{fingerprint}'].delete update: x-apievangelist-phrasing: intent: Delete an LXD image from the image store effect: destructive questions: - What's the way to remove an image from the LXD image store? - Can I delete an LXD image that lives in a specific project? instructions: - text: Delete LXD image {fingerprint} from the image store. slots: fingerprint: path.fingerprint - text: Remove the LXD image from project {project}. slots: project: query.project method: generated generated: '2026-10-01' - target: $.paths['/1.0/images/{fingerprint}'].patch update: x-apievangelist-phrasing: intent: Partially update an LXD image effect: write questions: - Can I change just one field of an LXD image, like its expiry, without resending everything? - How do I turn on auto-update for a single LXD image? instructions: - text: Patch LXD image {fingerprint} to set only its expiry date to {expires_at}. slots: fingerprint: path.fingerprint expires_at: requestBody.expires_at - text: Patch just the auto-update flag of the LXD image to {auto_update}. slots: auto_update: requestBody.auto_update method: generated generated: '2026-10-01' - target: $.paths['/1.0/images/{fingerprint}/export'].get update: x-apievangelist-phrasing: intent: Download the raw files of an LXD image effect: read questions: - Where do I download the raw file of an LXD image I have access to? - What happens when I export a split-format LXD image? instructions: - text: Download the raw files of LXD image {fingerprint}. slots: fingerprint: path.fingerprint - text: Export the raw image file from LXD project {project}. slots: project: query.project method: generated generated: '2026-10-01' - target: $.paths['/1.0/images/{fingerprint}/export'].post update: x-apievangelist-phrasing: intent: Push an LXD image to a remote server effect: write questions: - Can LXD push one of my images directly to another remote server? - What do I need to give LXD to copy an image to a remote target? instructions: - text: Push LXD image {fingerprint} to remote server {target} using secret {secret}. slots: fingerprint: path.fingerprint target: requestBody.target secret: requestBody.secret - text: Have LXD push the image to {target} with aliases {aliases}. slots: target: requestBody.target aliases: requestBody.aliases method: generated generated: '2026-10-01' - target: $.paths['/1.0/images/{fingerprint}/export?public'].get update: x-apievangelist-phrasing: intent: Download a public LXD image's raw files effect: read questions: - Can an untrusted client download a public LXD image without authenticating? - How do I fetch a public image file from LXD using a one-time secret? instructions: - text: Download the files of public LXD image {fingerprint} using secret {secret}. slots: fingerprint: path.fingerprint secret: query.secret - text: Fetch the raw files of the public image from LXD without trusted credentials. method: generated generated: '2026-10-01' - target: $.paths['/1.0/images/{fingerprint}/refresh'].post update: x-apievangelist-phrasing: intent: Refresh an LXD image from its source server effect: write questions: - How do I make LXD check an image's source for a newer version? - Can I force an LXD image to update to the latest upstream copy now? instructions: - text: Refresh LXD image {fingerprint} from its source server. slots: fingerprint: path.fingerprint - text: Check the source for an updated image and refresh the local copy in project {project}. slots: project: query.project method: generated generated: '2026-10-01' - target: $.paths['/1.0/images/{fingerprint}/secret'].post update: x-apievangelist-phrasing: intent: Generate a one-time secret to fetch an LXD image effect: write questions: - How do I let an untrusted client download a private LXD image once? - Where does the one-time image retrieval secret show up in LXD? instructions: - text: Generate a one-time retrieval secret for LXD image {fingerprint}. slots: fingerprint: path.fingerprint - text: Create an image download secret for an untrusted client in project {project}. slots: project: query.project method: generated generated: '2026-10-01' - target: $.paths['/1.0/images/{fingerprint}?public'].get update: x-apievangelist-phrasing: intent: Get a public LXD image's details effect: read questions: - Can I read the details of a public LXD image without being a trusted client? - What does an unauthenticated caller see about a public image in LXD? instructions: - text: Show the public LXD image {fingerprint} using secret {secret}. slots: fingerprint: path.fingerprint secret: query.secret - text: Get the public image record from LXD as an untrusted client. method: generated generated: '2026-10-01' - target: $.paths['/1.0/images/aliases'].get update: x-apievangelist-phrasing: intent: List LXD image aliases as URLs effect: read questions: - Which image aliases exist in my LXD server? - Can I list image alias URLs for one LXD project? instructions: - text: List the URLs of all LXD image aliases. - text: List image alias URLs in LXD project {project}. slots: project: query.project method: generated generated: '2026-09-26' - target: $.paths['/1.0/images/aliases'].post update: x-apievangelist-phrasing: intent: Create an LXD image alias effect: write questions: - Can I give an LXD image a friendly alias name? - Can I point a new LXD alias at an image fingerprint with a description? instructions: - text: Create image alias {name} pointing to fingerprint {target}. slots: name: requestBody.name target: requestBody.target - text: Add LXD alias {name} for image {target} described as {description}. slots: name: requestBody.name target: requestBody.target description: requestBody.description method: generated generated: '2026-09-26' - target: $.paths['/1.0/images/aliases/{name}'].get update: x-apievangelist-phrasing: intent: Get an LXD image alias effect: read questions: - Which image fingerprint does a given LXD alias point to? - What description does one LXD image alias carry? instructions: - text: Show LXD image alias {alias} and its target fingerprint. slots: alias: path.name - text: Look up which fingerprint this alias targets in LXD project {project}. slots: project: query.project method: generated generated: '2026-10-01' - target: $.paths['/1.0/images/aliases/{name}'].put update: x-apievangelist-phrasing: intent: Replace an LXD image alias configuration effect: write questions: - How do I repoint an LXD alias and reset its description in one request? - Can I replace an LXD image alias's whole configuration? instructions: - text: Replace the LXD alias config so it targets {target} with description {description}. slots: target: requestBody.target description: requestBody.description - text: Overwrite image alias {alias} to point at fingerprint {target}. slots: alias: path.name target: requestBody.target method: generated generated: '2026-10-01' - target: $.paths['/1.0/images/aliases/{name}'].post update: x-apievangelist-phrasing: intent: Rename an LXD image alias effect: write questions: - Is it possible to rename an existing LXD image alias? - Can I change an alias name without touching the image it points to? instructions: - text: Rename LXD image alias {alias} to {new_name}. slots: alias: path.name new_name: requestBody.name - text: Give the image alias the new name {name} in project {project}. slots: name: requestBody.name project: query.project method: generated generated: '2026-10-01' - target: $.paths['/1.0/images/aliases/{name}'].delete update: x-apievangelist-phrasing: intent: Delete an LXD image alias effect: destructive questions: - How do I delete an LXD image alias without deleting the image? - Can I remove an alias from a specific LXD project? instructions: - text: Delete LXD image alias {alias}. slots: alias: path.name - text: Drop this alias name from LXD project {project}, keeping its image. slots: project: query.project method: generated generated: '2026-10-01' - target: $.paths['/1.0/images/aliases/{name}'].patch update: x-apievangelist-phrasing: intent: Partially update an LXD image alias effect: write questions: - Can I change only an LXD alias's description and leave its target alone? - Which fields of an image alias can I patch individually? instructions: - text: Patch the description of LXD alias {alias} to {description}. slots: alias: path.name description: requestBody.description - text: Patch only the alias target to fingerprint {target}. slots: target: requestBody.target method: generated generated: '2026-10-01' - target: $.paths['/1.0/images/aliases/{name}?public'].get update: x-apievangelist-phrasing: intent: Get a public LXD image alias effect: read questions: - Can an unauthenticated client resolve an alias that points to a public LXD image? - Why does the public alias lookup fail for aliases on private images? instructions: - text: Resolve the public LXD alias {alias} as an untrusted client. slots: alias: path.name - text: Look up the public image alias in project {project} without credentials. slots: project: query.project method: generated generated: '2026-10-01' - target: $.paths['/1.0/images/aliases?recursion=1'].get update: x-apievangelist-phrasing: intent: List LXD image aliases with full details effect: read questions: - How do I get every LXD alias along with its target and description in one call? - Can I list full image alias objects rather than just URLs? instructions: - text: List all LXD image aliases as full objects with targets. - text: Get expanded image alias records for project {project}. slots: project: query.project method: generated generated: '2026-09-26' - target: $.paths['/1.0/images?public'].get update: x-apievangelist-phrasing: intent: List public LXD images as URLs effect: read questions: - Which images does this LXD server publish publicly? - Can I filter the public LXD image URL list across all projects? instructions: - text: List URLs of the public images on this LXD server. - text: List public LXD image URLs matching filter {filter}. slots: filter: query.filter method: generated generated: '2026-09-26' - target: $.paths['/1.0/images?public'].post update: x-apievangelist-phrasing: intent: Push an image to a target LXD image server effect: write questions: - How does one LXD server hand an image over to another LXD server? - Can I set aliases and expiry when preparing an image on the target server? instructions: - text: Prepare a new image entry on the target LXD server named {filename}. slots: filename: requestBody.filename - text: Add an image on the target server from source {source} with aliases {aliases}. slots: source: requestBody.source aliases: requestBody.aliases method: generated generated: '2026-09-26' - target: $.paths['/1.0/images?public&recursion=1'].get update: x-apievangelist-phrasing: intent: List public LXD images with full details effect: read questions: - How do I get full records for every public image on an LXD server? - Can I see public image properties across all projects in one call? instructions: - text: List all public LXD images as full objects. - text: Get expanded public image records matching filter {filter}. slots: filter: query.filter method: generated generated: '2026-09-26'