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.
View Overlay File View on GitHub Overlay Specification

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

Raw ↑
# 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'