# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for Canonical Applications API version: 1.0.0 extends: openapi/canonical-applications-api-openapi.yml actions: - target: $.info update: x-apievangelist-phrasing: method: generated generated: '2026-09-26' generator: build-phrasing.py label: Generated by API Evangelist operations: 45 - target: $.paths['/1.0/applications'].get update: x-apievangelist-phrasing: intent: List Android applications in AMS effect: read questions: - Which Android applications are stored in my Anbox Management Service? - Can I filter AMS applications by instance type or publication status? - How do I page through the application list in Anbox using offset and limit? instructions: - text: List the AMS applications named {name}. slots: name: query.name - text: Show AMS applications with status {status}, {limit} at a time. slots: status: query.status limit: query.limit - text: List every Anbox application tagged {tags}. slots: tags: query.tags method: generated generated: '2026-09-26' - target: $.paths['/1.0/applications'].post update: x-apievangelist-phrasing: intent: Create an application from a package effect: write questions: - How do I upload a new Android app package with a manifest.yaml to AMS? - Can a new Anbox application be created as a virtual machine instead of a container? - What archive formats does AMS accept when creating an application? instructions: - text: Create a new AMS application from the package {upfile}. slots: upfile: requestBody.upfile - text: Upload {upfile} as a new Anbox application that runs as a VM ({vm}). slots: upfile: requestBody.upfile vm: query.vm method: generated generated: '2026-09-26' - target: $.paths['/1.0/applications'].delete update: x-apievangelist-phrasing: intent: Delete several applications at once effect: destructive questions: - Can I remove a batch of AMS applications in one request? - What happens if one application fails to delete during a bulk delete in Anbox? instructions: - text: Bulk delete the AMS applications {ids}. slots: ids: requestBody.ids - text: Force-delete applications {ids} from AMS in a single call even if they are in use ({force}). slots: ids: requestBody.ids force: requestBody.force method: generated generated: '2026-09-26' - target: $.paths['/1.0/applications/{id}'].get update: x-apievangelist-phrasing: intent: Get details of one AMS application effect: read questions: - Where can I see the details stored for a single Anbox application? - What status and versions does one of my AMS applications have? instructions: - text: Show the AMS application {id}. slots: id: path.id - text: Get the current details of Anbox application {id}. slots: id: path.id method: generated generated: '2026-09-26' - target: $.paths['/1.0/applications/{id}'].delete update: x-apievangelist-phrasing: intent: Delete an application and all its versions effect: destructive questions: - How do I remove a single Anbox application along with every version of it? - Does deleting an AMS application also delete its versions? instructions: - text: Delete AMS application {id} and all of its versions. slots: id: path.id - text: Remove the Anbox application {id} entirely. slots: id: path.id method: generated generated: '2026-09-26' - target: $.paths['/1.0/applications/{id}'].patch update: x-apievangelist-phrasing: intent: Replace an application's package effect: write questions: - Can I push a new bzip2 or zip package to an existing AMS application? - How do I ship an updated APK bundle for an app that already exists in Anbox? instructions: - text: Upload the new package {upfile} to AMS application {id}. slots: upfile: requestBody.upfile id: path.id - text: Replace the package of Anbox application {id} with {upfile}. slots: id: path.id upfile: requestBody.upfile method: generated generated: '2026-09-26' - target: $.paths['/1.0/applications/{id}/'].patch update: x-apievangelist-phrasing: intent: Update an application's metadata only effect: write questions: - Which AMS application metadata changes create a new application version? - Can I change an Anbox app's tags or resources without uploading a new package? - Is it possible to stop automatic updates for one AMS application? instructions: - text: Set the tags of AMS application {id} to {tags} without changing its package. slots: id: path.id tags: requestBody.tags - text: Change the instance type of Anbox application {id} to {instance_type}. slots: id: path.id instance_type: requestBody.instance-type - text: Turn off automatic updates for AMS application {id} ({inhibit}). slots: id: path.id inhibit: requestBody.inhibit_auto_updates method: generated generated: '2026-09-26' - target: $.paths['/1.0/applications/{id}/manifest'].get update: x-apievangelist-phrasing: intent: Download an application's latest manifest effect: read questions: - Can I download the latest manifest.yaml of an AMS application? - Where do I get the current manifest file an Anbox app was built from? instructions: - text: Download the latest manifest of AMS application {id}. slots: id: path.id - text: Fetch the current manifest.yaml for Anbox application {id}. slots: id: path.id method: generated generated: '2026-09-26' - target: $.paths['/1.0/applications/{id}/{version}'].get update: x-apievangelist-phrasing: intent: Get one version of an application effect: read questions: - What information does AMS keep about a specific version of an application? - Can I look up an older version of an Anbox application? instructions: - text: Show version {version} of AMS application {id}. slots: version: path.version id: path.id - text: Get the details of Anbox application {id} at version {version}. slots: id: path.id version: path.version method: generated generated: '2026-09-26' - target: $.paths['/1.0/applications/{id}/{version}'].delete update: x-apievangelist-phrasing: intent: Delete one version of an application effect: destructive questions: - How do I remove only one version of an AMS application and keep the rest? - Can I force-delete an Anbox application version that is still in use? instructions: - text: Delete version {version} of AMS application {id}. slots: version: path.version id: path.id - text: Force-remove version {version} of Anbox application {id} ({force}). slots: version: path.version id: path.id force: requestBody.force method: generated generated: '2026-09-26' - target: $.paths['/1.0/applications/{id}/{version}'].patch update: x-apievangelist-phrasing: intent: Publish or unpublish an application version effect: write questions: - Can I mark a specific version of an AMS application as published? - Which version of an Anbox app is available to launch, and can I change that? instructions: - text: Set the published flag of version {version} of AMS application {id} to {published}. slots: version: path.version id: path.id published: requestBody.published - text: Unpublish version {version} of Anbox application {id}. slots: version: path.version id: path.id method: generated generated: '2026-09-26' - target: $.paths['/1.0/applications/{id}/{version}/manifest'].get update: x-apievangelist-phrasing: intent: Download the manifest of an application version effect: read questions: - Can I get the manifest file used by an older version of an AMS application? - Where do I download the manifest.yaml for one specific Anbox app version? instructions: - text: Download the manifest for version {version} of AMS application {id}. slots: version: path.version id: path.id - text: Fetch manifest.yaml of Anbox application {id}, version {version}. slots: id: path.id version: path.version method: generated generated: '2026-09-26' - target: $.paths['/1.0/applications?recursion=1'].get update: x-apievangelist-phrasing: intent: List applications with full details effect: read questions: - Can I list every AMS application with its full definition instead of just URLs? - Which Anbox call returns the expanded application objects in one response? instructions: - text: List all AMS applications with their full definitions expanded. - text: Show the expanded records of Anbox applications with status {status}. slots: status: query.status method: generated generated: '2026-09-26' - target: $.paths['/api/v1/applications/foxglove/dashboards/'].get update: x-apievangelist-phrasing: intent: List Foxglove dashboards effect: read questions: - Which Foxglove dashboards are configured in my Canonical Observability stack? - What Foxglove dashboards are registered and what attributes do they have? instructions: - text: List all Foxglove dashboards. - text: Show every registered Foxglove dashboard with its attributes. method: generated generated: '2026-09-26' - target: $.paths['/api/v1/applications/foxglove/dashboards/'].post update: x-apievangelist-phrasing: intent: Add a Foxglove dashboard effect: write questions: - How do I register a new Foxglove dashboard layout? - Can I upload Foxglove dashboard JSON under my own ID? instructions: - text: Add a Foxglove dashboard with ID {uid} using the layout {dashboard}. slots: uid: requestBody.uid dashboard: requestBody.dashboard - text: Register Foxglove dashboard {uid}. slots: uid: requestBody.uid method: generated generated: '2026-09-26' - target: $.paths['/api/v1/applications/foxglove/dashboards/{uid}/'].get update: x-apievangelist-phrasing: intent: Download a Foxglove dashboard JSON file effect: read questions: - Can I download the JSON of one Foxglove dashboard as a file? - Where do I export a Foxglove dashboard layout I already added? instructions: - text: Download the Foxglove dashboard {uid} as JSON. slots: uid: path.uid - text: Export Foxglove dashboard {uid}. slots: uid: path.uid method: generated generated: '2026-09-26' - target: $.paths['/api/v1/applications/foxglove/dashboards/{uid}/'].put update: x-apievangelist-phrasing: intent: Replace a Foxglove dashboard effect: write questions: - How do I overwrite every field of an existing Foxglove dashboard? - Can I swap in a whole new layout for a Foxglove dashboard I already have? instructions: - text: Replace Foxglove dashboard {uid} entirely with {dashboard}. slots: uid: path.uid dashboard: requestBody.dashboard - text: Overwrite all fields of Foxglove dashboard {uid}, keeping ID {new_uid}. slots: uid: path.uid new_uid: requestBody.uid method: generated generated: '2026-09-26' - target: $.paths['/api/v1/applications/foxglove/dashboards/{uid}/'].delete update: x-apievangelist-phrasing: intent: Delete a Foxglove dashboard effect: destructive questions: - How do I remove a Foxglove dashboard I no longer need? - Can a Foxglove dashboard be deleted by its ID? instructions: - text: Delete Foxglove dashboard {uid}. slots: uid: path.uid - text: Remove the Foxglove dashboard with ID {uid}. slots: uid: path.uid method: generated generated: '2026-09-26' - target: $.paths['/api/v1/applications/foxglove/dashboards/{uid}/'].patch update: x-apievangelist-phrasing: intent: Patch fields of a Foxglove dashboard effect: write questions: - Can I change just the layout JSON of a Foxglove dashboard without resending everything? - Is a partial update possible on a Foxglove dashboard? instructions: - text: Patch only the layout of Foxglove dashboard {uid} to {dashboard}. slots: uid: path.uid dashboard: requestBody.dashboard - text: Change the ID of Foxglove dashboard {uid} to {new_uid}, leaving the layout alone. slots: uid: path.uid new_uid: requestBody.uid method: generated generated: '2026-09-26' - target: $.paths['/api/v1/applications/grafana/dashboards/'].get update: x-apievangelist-phrasing: intent: List Grafana dashboards effect: read questions: - Which Grafana dashboards are configured for my devices? - What Grafana dashboards are registered and what attributes do they have? instructions: - text: List all Grafana dashboards. - text: Show every registered Grafana dashboard with its attributes. method: generated generated: '2026-09-26' - target: $.paths['/api/v1/applications/grafana/dashboards/'].post update: x-apievangelist-phrasing: intent: Add a Grafana dashboard effect: write questions: - How do I register a new Grafana dashboard definition? - Can I upload Grafana dashboard JSON under my own ID? instructions: - text: Add a Grafana dashboard with ID {uid} using the definition {dashboard}. slots: uid: requestBody.uid dashboard: requestBody.dashboard - text: Register Grafana dashboard {uid}. slots: uid: requestBody.uid method: generated generated: '2026-09-26' - target: $.paths['/api/v1/applications/grafana/dashboards/{uid}/'].get update: x-apievangelist-phrasing: intent: Download a Grafana dashboard JSON file effect: read questions: - Can I download the JSON of one Grafana dashboard as a file? - Where do I export a Grafana dashboard definition I already added? instructions: - text: Download the Grafana dashboard {uid} as JSON. slots: uid: path.uid - text: Export Grafana dashboard {uid}. slots: uid: path.uid method: generated generated: '2026-09-26' - target: $.paths['/api/v1/applications/grafana/dashboards/{uid}/'].put update: x-apievangelist-phrasing: intent: Replace a Grafana dashboard effect: write questions: - How do I overwrite every field of an existing Grafana dashboard? - Can I swap in a whole new definition for a Grafana dashboard I already have? instructions: - text: Replace Grafana dashboard {uid} entirely with {dashboard}. slots: uid: path.uid dashboard: requestBody.dashboard - text: Overwrite all fields of Grafana dashboard {uid}, keeping ID {new_uid}. slots: uid: path.uid new_uid: requestBody.uid method: generated generated: '2026-09-26' - target: $.paths['/api/v1/applications/grafana/dashboards/{uid}/'].delete update: x-apievangelist-phrasing: intent: Delete a Grafana dashboard effect: destructive questions: - How do I remove a Grafana dashboard I no longer need? - Can a Grafana dashboard be deleted by its ID? instructions: - text: Delete Grafana dashboard {uid}. slots: uid: path.uid - text: Remove the Grafana dashboard with ID {uid}. slots: uid: path.uid method: generated generated: '2026-09-26' - target: $.paths['/api/v1/applications/grafana/dashboards/{uid}/'].patch update: x-apievangelist-phrasing: intent: Patch fields of a Grafana dashboard effect: write questions: - Can I change just the JSON definition of a Grafana dashboard without resending everything? - Is a partial update possible on a Grafana dashboard? instructions: - text: Patch only the definition of Grafana dashboard {uid} to {dashboard}. slots: uid: path.uid dashboard: requestBody.dashboard - text: Change the ID of Grafana dashboard {uid} to {new_uid}, leaving the definition alone. slots: uid: path.uid new_uid: requestBody.uid method: generated generated: '2026-09-26' - target: $.paths['/api/v1/applications/loki/alert_rules/'].get update: x-apievangelist-phrasing: intent: List Loki alert rule files effect: read questions: - Which Loki alert rule files are configured, including templated ones rendered per device? - What log alerting rules are set up for my devices in Loki? instructions: - text: List all Loki alert rule files. - text: Show every Loki alert rule, with templated rules rendered for their devices. method: generated generated: '2026-09-26' - target: $.paths['/api/v1/applications/loki/alert_rules/'].post update: x-apievangelist-phrasing: intent: Add a Loki alert rule file effect: write questions: - How do I add a new Loki alert rule file? - Can a Loki alert rule file be marked as a template for devices to render? instructions: - text: Add Loki alert rule file {uid} with rules {rules}. slots: uid: requestBody.uid rules: requestBody.rules - text: Create templated Loki alert rule file {uid} with rules {rules} (template {template}). slots: uid: requestBody.uid rules: requestBody.rules template: requestBody.template method: generated generated: '2026-09-26' - target: $.paths['/api/v1/applications/loki/alert_rules/{uid}/'].get update: x-apievangelist-phrasing: intent: Download one Loki alert rule file effect: read questions: - Can I download a single Loki alert rule file as it was written, without template rendering? - Where do I get the raw rules of one Loki alert rule file? instructions: - text: Download Loki alert rule file {uid}. slots: uid: path.uid - text: Fetch the unrendered rules in Loki rule file {uid}. slots: uid: path.uid method: generated generated: '2026-09-26' - target: $.paths['/api/v1/applications/loki/alert_rules/{uid}/'].put update: x-apievangelist-phrasing: intent: Replace a Loki alert rule file effect: write questions: - How do I overwrite all the rules in an existing Loki alert rule file? - Can I replace a Loki rule file wholesale, template flag included? instructions: - text: Replace Loki alert rule file {uid} completely with rules {rules}. slots: uid: path.uid rules: requestBody.rules - text: Overwrite Loki rule file {uid} as ID {new_uid} with rules {rules} and template {template}. slots: uid: path.uid new_uid: requestBody.uid rules: requestBody.rules template: requestBody.template method: generated generated: '2026-09-26' - target: $.paths['/api/v1/applications/loki/alert_rules/{uid}/'].delete update: x-apievangelist-phrasing: intent: Delete a Loki alert rule file effect: destructive questions: - How do I remove a Loki alert rule file? - Can I stop a set of Loki log alerts by deleting their rule file? instructions: - text: Delete Loki alert rule file {uid}. slots: uid: path.uid - text: Remove the Loki rule file with ID {uid}. slots: uid: path.uid method: generated generated: '2026-09-26' - target: $.paths['/api/v1/applications/loki/alert_rules/{uid}/'].patch update: x-apievangelist-phrasing: intent: Patch fields of a Loki alert rule file effect: write questions: - Can I change only the rules of a Loki alert rule file and leave the rest alone? - Is it possible to toggle the template flag on an existing Loki rule file? instructions: - text: Patch only the rules of Loki alert rule file {uid} to {rules}. slots: uid: path.uid rules: requestBody.rules - text: Set the template flag of Loki rule file {uid} to {template}. slots: uid: path.uid template: requestBody.template method: generated generated: '2026-09-26' - target: $.paths['/api/v1/applications/prometheus/alert_rules/'].get update: x-apievangelist-phrasing: intent: List Prometheus alert rule files effect: read questions: - Can I see all Prometheus alerting rules, with device templates already filled in? - What metric alerting rules are set up for my devices in Prometheus? instructions: - text: List all Prometheus alert rule files. - text: Show every Prometheus alert rule, with templated rules rendered for their devices. method: generated generated: '2026-09-26' - target: $.paths['/api/v1/applications/prometheus/alert_rules/'].post update: x-apievangelist-phrasing: intent: Add a Prometheus alert rule file effect: write questions: - How do I add a new Prometheus alert rule file? - Is it possible to upload Prometheus rules that each device renders from a template? instructions: - text: Add Prometheus alert rule file {uid} with rules {rules}. slots: uid: requestBody.uid rules: requestBody.rules - text: Create templated Prometheus alert rule file {uid} with rules {rules} (template {template}). slots: uid: requestBody.uid rules: requestBody.rules template: requestBody.template method: generated generated: '2026-09-26' - target: $.paths['/api/v1/applications/prometheus/alert_rules/{uid}/'].get update: x-apievangelist-phrasing: intent: Download one Prometheus alert rule file effect: read questions: - How can I export one Prometheus rules file exactly as uploaded? - Which endpoint returns a single Prometheus rule file with templates left unrendered? instructions: - text: Download Prometheus alert rule file {uid}. slots: uid: path.uid - text: Fetch the unrendered rules in Prometheus rule file {uid}. slots: uid: path.uid method: generated generated: '2026-09-26' - target: $.paths['/api/v1/applications/prometheus/alert_rules/{uid}/'].put update: x-apievangelist-phrasing: intent: Replace a Prometheus alert rule file effect: write questions: - Can I fully replace a Prometheus rules file I uploaded earlier? - Can I replace a Prometheus rule file wholesale, template flag included? instructions: - text: Replace Prometheus alert rule file {uid} completely with rules {rules}. slots: uid: path.uid rules: requestBody.rules - text: Overwrite Prometheus rule file {uid} as ID {new_uid} with rules {rules} and template {template}. slots: uid: path.uid new_uid: requestBody.uid rules: requestBody.rules template: requestBody.template method: generated generated: '2026-09-26' - target: $.paths['/api/v1/applications/prometheus/alert_rules/{uid}/'].delete update: x-apievangelist-phrasing: intent: Delete a Prometheus alert rule file effect: destructive questions: - How do I remove a Prometheus alert rule file? - Can I stop a set of Prometheus metric alerts by deleting their rule file? instructions: - text: Delete Prometheus alert rule file {uid}. slots: uid: path.uid - text: Remove the Prometheus rule file with ID {uid}. slots: uid: path.uid method: generated generated: '2026-09-26' - target: $.paths['/api/v1/applications/prometheus/alert_rules/{uid}/'].patch update: x-apievangelist-phrasing: intent: Patch fields of a Prometheus alert rule file effect: write questions: - Is a partial edit supported for Prometheus alerting rules, sending just the changed field? - Can I switch an existing Prometheus rules file between templated and plain? instructions: - text: Patch only the rules of Prometheus alert rule file {uid} to {rules}. slots: uid: path.uid rules: requestBody.rules - text: Set the template flag of Prometheus rule file {uid} to {template}. slots: uid: path.uid template: requestBody.template method: generated generated: '2026-09-26' - target: $.paths['/v1/applications'].get update: x-apievangelist-phrasing: intent: List API client applications effect: read questions: - Which client applications have API keys for the test observer service? - What API-key applications are registered and what permissions do they hold? instructions: - text: List all registered API client applications. - text: Show every application that has an API key, with its permissions. method: generated generated: '2026-09-26' - target: $.paths['/v1/applications'].post update: x-apievangelist-phrasing: intent: Register an API client application effect: write questions: - How do I create a new application that gets its own API key? - Can I choose which permissions a new API client application receives? instructions: - text: Create an API client application named {name} with permissions {permissions}. slots: name: requestBody.name permissions: requestBody.permissions - text: Register the application {name} and issue it an API key with {permissions}. slots: name: requestBody.name permissions: requestBody.permissions method: generated generated: '2026-09-26' - target: $.paths['/v1/applications/me/rotate'].post update: x-apievangelist-phrasing: intent: Rotate the calling application's API key effect: write questions: - Can my application rotate its own API key without an admin? - How do I get a fresh API key for the application I'm authenticated as? instructions: - text: Rotate the API key of the application I'm signed in as. - text: Issue a new API key for my own application and invalidate the old one. method: generated generated: '2026-09-26' - target: $.paths['/v1/applications/{application_id}/rotate'].post update: x-apievangelist-phrasing: intent: Rotate another application's API key effect: write questions: - Can an admin rotate the API key of a specific client application? - What do I do if a particular application's API key has leaked? instructions: - text: Rotate the API key of application {application_id}. slots: application_id: path.application_id - text: Replace the leaked API key for client application {application_id}. slots: application_id: path.application_id method: generated generated: '2026-09-26' - target: $.paths['/v1/applications/me'].get update: x-apievangelist-phrasing: intent: Show the currently authenticated application effect: read questions: - Which application does my current API key belong to? - Can I check the permissions of the application I'm calling as? instructions: - text: Show the application tied to my current API key. - text: Tell me which client application I'm authenticated as and its permissions. method: generated generated: '2026-09-26' - target: $.paths['/v1/applications/{application_id}'].get update: x-apievangelist-phrasing: intent: Get an API client application effect: read questions: - Where can I see the permissions of one specific client application? - Can I look up a registered API application by its ID? instructions: - text: Show client application {application_id}. slots: application_id: path.application_id - text: Get the permissions granted to application {application_id}. slots: application_id: path.application_id method: generated generated: '2026-09-26' - target: $.paths['/v1/applications/{application_id}'].delete update: x-apievangelist-phrasing: intent: Delete an API client application effect: destructive questions: - How do I revoke access for a client application completely? - Does deleting a registered application remove its API key too? instructions: - text: Delete client application {application_id}. slots: application_id: path.application_id - text: Remove API application {application_id} so its key stops working. slots: application_id: path.application_id method: generated generated: '2026-09-26' - target: $.paths['/v1/applications/{application_id}'].patch update: x-apievangelist-phrasing: intent: Change an application's permissions effect: write questions: - Can I grant or remove permissions on an existing API client application? - How do I narrow what a registered application's API key is allowed to do? instructions: - text: Set the permissions of application {application_id} to {permissions}. slots: application_id: path.application_id permissions: requestBody.permissions - text: Update client application {application_id} with permissions {permissions}. slots: application_id: path.application_id permissions: requestBody.permissions method: generated generated: '2026-09-26'