TextQL · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for TextQL v2 Sandcastles API
15 actions
15 updates
phrasing
extends
openapi/textql-sandcastles-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for TextQL's API. It is a proposal applied on top of the contract, not a document TextQL publishes.
What the actions change
x-apievangelist-phrasing
Targets 15
$.info
$.paths['/v2/sandcastles'].get
$.paths['/v2/sandcastles'].post
$.paths['/v2/sandcastles/{id}'].get
$.paths['/v2/sandcastles/{id}'].delete
$.paths['/v2/sandcastles/{id}/executions'].get
$.paths['/v2/sandcastles/{id}/execute'].post
$.paths['/v2/sandcastles/{id}/query'].post
$.paths['/v2/sandcastles/{id}/files'].get
$.paths['/v2/sandcastles/{id}/files'].post
$.paths['/v2/sandcastles/{id}/files/{path}'].get
$.paths['/v2/sandcastles/{id}/files/{path}'].delete
$.paths['/v2/sandcastles/{id}/exec'].post
$.paths['/v2/sandcastles/{id}/ontology/diff'].get
$.paths['/v2/sandcastles/{id}/ontology/changes'].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 TextQL v2 Sandcastles API
version: 1.0.0
extends: openapi/textql-sandcastles-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: 14
- target: $.paths['/v2/sandcastles'].get
update:
x-apievangelist-phrasing:
intent: List my organization's sandcastles
effect: read
questions:
- Which Python sandcastles are running in my TextQL organization?
- Can I list only stopped sandboxes?
- Why might a sandbox that crashed still show as running for a while?
instructions:
- text: List sandcastles with status {status}.
slots:
status: query.status
- text: Show the next {limit} sandcastles after cursor {cursor}.
slots:
limit: query.limit
cursor: query.cursor
method: generated
generated: '2026-10-01'
- target: $.paths['/v2/sandcastles'].post
update:
x-apievangelist-phrasing:
intent: Start or restart a sandcastle
effect: write
questions:
- How do I spin up a fresh Python sandbox for running code?
- Can I restart an existing sandcastle instead of creating a new one?
instructions:
- text: Start a new sandcastle.
- text: Restart sandcastle {sandbox_id}.
slots:
sandbox_id: requestBody.sandbox_id
method: generated
generated: '2026-10-01'
- target: $.paths['/v2/sandcastles/{id}'].get
update:
x-apievangelist-phrasing:
intent: Check a sandcastle's status and memory
effect: read
questions:
- How much memory is my sandbox using right now?
- Which dataframes are loaded in a sandcastle?
instructions:
- text: Get the status of sandcastle {id}.
slots:
id: path.id
- text: Show memory usage and loaded dataframes for sandbox {id}.
slots:
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/v2/sandcastles/{id}'].delete
update:
x-apievangelist-phrasing:
intent: Stop and destroy a sandcastle
effect: destructive
questions:
- How do I shut down a sandcastle I'm done with?
- Can I still read a sandbox's execution history after it is stopped?
instructions:
- text: Stop sandcastle {id}.
slots:
id: path.id
- text: Destroy the running sandbox {id}.
slots:
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/v2/sandcastles/{id}/executions'].get
update:
x-apievangelist-phrasing:
intent: List executions run in a sandcastle
effect: read
questions:
- What code has been run in my sandcastle so far?
- Does the execution log include SQL and bash runs as well as Python?
instructions:
- text: List executions in sandcastle {id}.
slots:
id: path.id
- text: Show the latest {limit} runs in sandbox {id}.
slots:
limit: query.limit
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/v2/sandcastles/{id}/execute'].post
update:
x-apievangelist-phrasing:
intent: Run Python code in a sandcastle
effect: write
questions:
- How do I run Python in a sandcastle and get stdout back?
- Does Python run in a persistent kernel so variables survive between calls?
instructions:
- text: Run Python {code} in sandcastle {id}.
slots:
code: requestBody.code
id: path.id
- text: 'Execute this Python snippet in sandbox {id}: {code}'
slots:
id: path.id
code: requestBody.code
method: generated
generated: '2026-10-01'
- target: $.paths['/v2/sandcastles/{id}/query'].post
update:
x-apievangelist-phrasing:
intent: Load connector data into a sandcastle dataframe
effect: write
questions:
- How do I pull query results from a connector into a sandbox dataframe?
- Can I run a saved .tql file instead of inline SQL when loading data?
- Is there a cap on how many rows get loaded into the dataframe?
instructions:
- text: Load {query} from connector {connector_id} into sandcastle {id}.
slots:
query: requestBody.query
connector_id: requestBody.connector_id
id: path.id
- text: Run saved TQL {tql_path} on connector {connector_id} into dataframe {dataframe_name} in sandbox {id}.
slots:
tql_path: requestBody.tql_path
connector_id: requestBody.connector_id
dataframe_name: requestBody.dataframe_name
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/v2/sandcastles/{id}/files'].get
update:
x-apievangelist-phrasing:
intent: List files in a sandcastle directory
effect: read
questions:
- What files are in my sandbox's working directory?
- Can I browse a subfolder of the sandcastle, like the mounted library?
instructions:
- text: List files in sandcastle {id}.
slots:
id: path.id
- text: List the {path} directory inside sandbox {id}.
slots:
path: query.path
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/v2/sandcastles/{id}/files'].post
update:
x-apievangelist-phrasing:
intent: Upload a file to a sandcastle
effect: write
questions:
- How do I put a CSV into my sandbox so Python can read it?
- Can I upload a file directly into a sandcastle's working directory?
instructions:
- text: Upload {file} to sandcastle {id}.
slots:
file: requestBody.file
id: path.id
- text: Send file {file} into sandbox {id}'s working directory.
slots:
file: requestBody.file
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/v2/sandcastles/{id}/files/{path}'].get
update:
x-apievangelist-phrasing:
intent: Download a file from a sandcastle
effect: read
questions:
- How do I download a chart or output file my sandbox generated?
- Can I fetch a file from a nested folder in the sandcastle?
instructions:
- text: Download {path} from sandcastle {id}.
slots:
path: path.path
id: path.id
- text: Fetch the bytes of file {path} in sandbox {id}.
slots:
path: path.path
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/v2/sandcastles/{id}/files/{path}'].delete
update:
x-apievangelist-phrasing:
intent: Delete a file from a sandcastle
effect: destructive
questions:
- How do I remove a file from my sandbox's working directory?
- Can I delete a whole directory in a sandcastle with one call?
instructions:
- text: Delete {path} from sandcastle {id}.
slots:
path: path.path
id: path.id
- text: Remove file {path} in sandbox {id}.
slots:
path: path.path
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/v2/sandcastles/{id}/exec'].post
update:
x-apievangelist-phrasing:
intent: Run a one-shot shell command in a sandcastle
effect: write
questions:
- Can I run a bash command in my sandbox as a fresh process?
- Do shell commands share state with the Python kernel in a sandcastle?
instructions:
- text: Run command {command} in sandcastle {id}.
slots:
command: requestBody.command
id: path.id
- text: Exec {command} in sandbox {id} with environment {env}.
slots:
command: requestBody.command
id: path.id
env: requestBody.env
method: generated
generated: '2026-10-01'
- target: $.paths['/v2/sandcastles/{id}/ontology/diff'].get
update:
x-apievangelist-phrasing:
intent: Preview pending Ontology edits in a sandcastle
effect: read
questions:
- Has my sandbox changed any files in its mounted Ontology library?
- Can I dry-run the diff before writing sandbox edits back to the Ontology?
instructions:
- text: Diff the Ontology mount in sandcastle {id}.
slots:
id: path.id
- text: Show pending library changes in sandbox {id} without authoring a change.
slots:
id: path.id
method: generated
generated: '2026-10-01'
- target: $.paths['/v2/sandcastles/{id}/ontology/changes'].post
update:
x-apievangelist-phrasing:
intent: Write sandcastle Ontology edits back as a change
effect: write
questions:
- How do I save library edits from my sandbox back to the organization's Ontology?
- Can I open the writeback change as a draft for review?
instructions:
- text: Create an Ontology change from sandcastle {id} titled {title}.
slots:
id: path.id
title: requestBody.title
- text: Write back sandbox {id}'s library edits as a draft described as {description}.
slots:
id: path.id
description: requestBody.description
method: generated
generated: '2026-10-01'