Canonical · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Anbox Stream Gateway Session API
12 actions
12 updates
phrasing
extends
openapi/canonical-session-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 12
$.info
$.paths['/1.0/session/{id}/sockets/adb'].get
$.paths['/1.0/session/{id}/sockets/master'].get
$.paths['/1.0/session/{id}/sockets/slave'].get
$.paths['/1.0/sessions'].get
$.paths['/1.0/sessions'].post
$.paths['/1.0/sessions'].delete
$.paths['/1.0/sessions/{id}'].get
$.paths['/1.0/sessions/{id}'].delete
$.paths['/1.0/sessions/{id}/connect'].get
$.paths['/1.0/sessions/{id}/join'].post
$.paths['/1.0/sessions/{id}/share'].post
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 Anbox Stream Gateway Session API
version: 1.0.0
extends: openapi/canonical-session-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: 11
- target: $.paths['/1.0/session/{id}/sockets/adb'].get
update:
x-apievangelist-phrasing:
intent: Attach to a streaming session as an ADB client
effect: read
questions:
- How do I connect ADB to a running Anbox streaming session?
- Which websocket gives me Android debug bridge access to a session?
instructions:
- text: Open the ADB websocket for Anbox streaming session {id}.
slots:
id: path.id
- text: Start signaling on the session with the adb role.
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/session/{id}/sockets/master'].get
update:
x-apievangelist-phrasing:
intent: Attach to a streaming session as master
effect: read
questions:
- What websocket does the master client use to drive a streaming session?
- Do I have to join a session before connecting with the master role?
instructions:
- text: Open the master signaling websocket for joined session {id}.
slots:
id: path.id
- text: Connect to the Android session as the controlling master client.
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/session/{id}/sockets/slave'].get
update:
x-apievangelist-phrasing:
intent: Attach to a streaming session as a secondary client
effect: read
questions:
- How does a secondary viewer connect to someone else's streaming session?
- Which websocket is used for the slave role in a shared session?
instructions:
- text: Open the slave signaling websocket for shared session {id}.
slots:
id: path.id
- text: Connect to the session as a secondary, non-master client.
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/sessions'].get
update:
x-apievangelist-phrasing:
intent: List streaming sessions
effect: read
questions:
- How do I see all the Anbox streaming sessions currently running?
- Can I filter sessions by status and sort them?
instructions:
- text: List sessions with status {status}.
slots:
status: query.status
- text: Show {limit} sessions sorted by {sort_by} in {sort_order} order.
slots:
limit: query.limit
sort_by: query.sort_by
sort_order: query.sort_order
method: generated
generated: '2026-09-26'
- target: $.paths['/1.0/sessions'].post
update:
x-apievangelist-phrasing:
intent: Start a new streaming session for an app
effect: write
questions:
- How do I start streaming an Android app to a user?
- Can I choose the region and screen size when creating a session?
- Is it possible to make a session ephemeral or joinable by others?
instructions:
- text: Create a session for app {app} in region {region}.
slots:
app: requestBody.app
region: requestBody.region
- text: Start a session of {app} version {app_version} with screen {screen}.
slots:
app: requestBody.app
app_version: requestBody.app_version
screen: requestBody.screen
- text: Launch {app} in a session that idles out after {idle_time_min} minutes.
slots:
app: requestBody.app
idle_time_min: requestBody.idle_time_min
method: generated
generated: '2026-09-26'
- target: $.paths['/1.0/sessions'].delete
update:
x-apievangelist-phrasing:
intent: Delete several streaming sessions at once
effect: destructive
questions:
- Can I end a batch of streaming sessions in one call?
- How do I force-delete multiple sessions by their IDs?
instructions:
- text: Delete sessions {ids}.
slots:
ids: requestBody.ids
- text: 'Force-delete the batch of sessions {ids} and wait: {sync}.'
slots:
ids: requestBody.ids
sync: query.sync
method: generated
generated: '2026-09-26'
- target: $.paths['/1.0/sessions/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get a streaming session by ID
effect: read
questions:
- How do I check the status of one streaming session?
- What details come back for a single session?
instructions:
- text: Show session {id}.
slots:
id: path.id
- text: Check whether session {id} is still running.
slots:
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/1.0/sessions/{id}'].delete
update:
x-apievangelist-phrasing:
intent: End and delete one streaming session
effect: destructive
questions:
- How do I stop and remove a single streaming session?
- Can I force the deletion of a session that is stuck?
instructions:
- text: Delete session {id}.
slots:
id: path.id
- text: 'Force-delete session {id} synchronously: {sync}.'
slots:
id: path.id
sync: query.sync
method: generated
generated: '2026-09-26'
- target: $.paths['/1.0/sessions/{id}/connect'].get
update:
x-apievangelist-phrasing:
intent: Get client credentials for a running session
effect: read
questions:
- How does a client get the URL and credentials to reach a running session?
- Can I reconnect a client to an existing Anbox session?
instructions:
- text: Get the connection URL and credentials for running session {id}.
slots:
id: path.id
- text: Reconnect a client to the existing session.
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/sessions/{id}/join'].post
update:
x-apievangelist-phrasing:
intent: Join a running session's signaling
effect: write
questions:
- What do I call to join an already running streaming session?
- Can I pass my own screen settings when joining a session?
instructions:
- text: Join running session {id} with screen settings {screen}.
slots:
id: path.id
screen: requestBody.screen
- text: Join the session and give me the signaling URL.
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/sessions/{id}/share'].post
update:
x-apievangelist-phrasing:
intent: Create a share link for a running session
effect: write
questions:
- How do I share a live streaming session with another person?
- Can a session share link expire after a set number of minutes?
instructions:
- text: Share running session {id} with a link that expires in {expiry_min} minutes.
slots:
id: path.id
expiry_min: requestBody.expiry_min
- text: Create a {type} share for this session.
slots:
type: requestBody.type
method: generated
generated: '2026-10-01'