Files
qbit-sql-workbench/src/main/resources/openapi/qqq-v1/sql-workbench.yaml
james.maesandClaude Opus 5.5 db4715c906 feat(ui-api): extension for QQQ UI API 1.6.0 (operationIds, BasicErrorResponseV1, QQQ 4.1.0-RC.14)
Regenerated against UI API 1.6.0: every operation has an operationId and
the standard error responses (BasicErrorResponseV1: error, code, message,
fieldErrors, traceId); the extension's own error schema is kept but
deprecated; hand-written error bodies go through QJavalinUtils so they carry
code/message/traceId. Extension MINOR bumped.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 11:48:14 -05:00

2379 lines
71 KiB
YAML

components:
schemas:
BasicErrorResponseV1:
description: "The error body of every UI API operation (core and extensions)."
properties:
error:
description: "The error message (the same as message; kept for clients of\
\ UI API 1.0 to 1.5)."
type: "string"
code:
description: "A stable, machine-readable code. Well-known values: BAD_REQUEST\
\ (400), UNAUTHENTICATED (401),\nPERMISSION_DENIED (403), NOT_FOUND (404),\
\ CONFLICT (409), RATE_LIMITED (429), INTERNAL_ERROR (500),\nERROR (other).\
\ Extensions may add codes; treat an unknown code by the HTTP status.\
\ Since 1.6.0."
type: "string"
message:
description: "A message to show the user. Since 1.6.0."
type: "string"
fieldErrors:
description: "Errors about particular request fields, when known. Since\
\ 1.6.0."
items:
properties:
field:
description: "The field (or parameter) name."
type: "string"
message:
description: "The error about that field."
type: "string"
code:
description: "An optional machine-readable code, e.g. REQUIRED, TOO_LONG,\
\ PATTERN."
type: "string"
type: "object"
type: "array"
traceId:
description: "Identifies this request in the server logs (also the X-QQQ-Trace-Id\
\ response header); quote it when reporting a problem. Since 1.6.0."
type: "string"
type: "object"
SqlWorkbenchBackendV1:
properties:
name:
type: "string"
label:
type: "string"
vendor:
nullable: true
type: "string"
dialect:
$ref: "#/components/schemas/SqlWorkbenchDialectV1"
readOnlyCredentials:
type: "boolean"
readOnlyEnforced:
type: "boolean"
transactionalDdl:
type: "boolean"
writeAllowed:
type: "boolean"
type: "object"
SqlWorkbenchBinaryValueV1:
properties:
$binary:
type: "boolean"
length:
format: "int64"
type: "integer"
hexPreview:
type: "string"
type: "object"
SqlWorkbenchCancelledV1:
properties:
cancelled:
type: "boolean"
type: "object"
SqlWorkbenchCapabilitiesV1:
properties:
version:
type: "string"
canWrite:
type: "boolean"
canShare:
type: "boolean"
writeModeEnabled:
type: "boolean"
limits:
$ref: "#/components/schemas/SqlWorkbenchLimitsV1"
backends:
items:
$ref: "#/components/schemas/SqlWorkbenchBackendV1"
type: "array"
type: "object"
SqlWorkbenchCellV1:
properties:
cellKey:
type: "string"
cellType:
type: "string"
title:
nullable: true
type: "string"
content:
type: "string"
backendName:
nullable: true
type: "string"
sortOrder:
format: "int64"
type: "integer"
type: "object"
SqlWorkbenchColumnKindV1:
enum:
- "number"
- "string"
- "boolean"
- "date"
- "datetime"
- "time"
- "json"
- "binary"
- "array"
- "other"
type: "string"
SqlWorkbenchColumnV1:
properties:
name:
type: "string"
label:
type: "string"
typeName:
type: "string"
jdbcType:
format: "int64"
type: "integer"
kind:
$ref: "#/components/schemas/SqlWorkbenchColumnKindV1"
type: "object"
SqlWorkbenchDatabaseSchemaV1:
properties:
name:
type: "string"
tables:
items:
$ref: "#/components/schemas/SqlWorkbenchSchemaTableV1"
type: "array"
type: "object"
SqlWorkbenchDeletedV1:
properties:
deleted:
type: "boolean"
type: "object"
SqlWorkbenchDialectV1:
enum:
- "postgresql"
- "mysql"
- "sqlite"
- "h2"
- "sql"
type: "string"
SqlWorkbenchEmptyRequestV1:
type: "object"
SqlWorkbenchErrorV1:
description: "Deprecated since 1.1.0: errors use BasicErrorResponseV1."
properties:
error:
type: "string"
type: "object"
SqlWorkbenchExecuteRequestV1:
properties:
backendName:
type: "string"
sql:
type: "string"
params:
$ref: "#/components/schemas/SqlWorkbenchParametersV1"
mode:
type: "string"
notebookId:
format: "int64"
nullable: true
type: "integer"
cellKey:
nullable: true
type: "string"
pageSize:
format: "int64"
nullable: true
type: "integer"
confirmToken:
nullable: true
type: "string"
acknowledgeRowGuard:
type: "boolean"
executionUuid:
nullable: true
type: "string"
type: "object"
SqlWorkbenchExecutionV1:
properties:
executionUuid:
type: "string"
status:
$ref: "#/components/schemas/SqlWorkbenchStatusV1"
mode:
type: "string"
backendName:
type: "string"
durationMs:
format: "int64"
nullable: true
type: "integer"
statements:
items:
$ref: "#/components/schemas/SqlWorkbenchStatementV1"
type: "array"
columns:
items:
$ref: "#/components/schemas/SqlWorkbenchColumnV1"
type: "array"
rows:
$ref: "#/components/schemas/SqlWorkbenchRowsDataV1"
rowCount:
format: "int64"
type: "integer"
hasMore:
type: "boolean"
truncated:
type: "boolean"
truncatedReason:
nullable: true
type: "string"
rowsAffected:
format: "int64"
type: "integer"
error:
type: "string"
sqlState:
nullable: true
type: "string"
dryRunSupported:
type: "boolean"
dryRunNote:
nullable: true
type: "string"
totalAffectedRows:
format: "int64"
nullable: true
type: "integer"
rowGuardExceeded:
type: "boolean"
rowGuardLimit:
format: "int64"
type: "integer"
confirmToken:
type: "string"
expiresAt:
type: "string"
previewAffectedRows:
format: "int64"
type: "integer"
actualAffectedRows:
format: "int64"
type: "integer"
type: "object"
SqlWorkbenchExplainRequestV1:
properties:
backendName:
type: "string"
sql:
type: "string"
params:
$ref: "#/components/schemas/SqlWorkbenchParametersV1"
analyze:
type: "boolean"
type: "object"
SqlWorkbenchExplainV1:
properties:
executionUuid:
type: "string"
status:
$ref: "#/components/schemas/SqlWorkbenchStatusV1"
mode:
type: "string"
backendName:
type: "string"
dialect:
$ref: "#/components/schemas/SqlWorkbenchDialectV1"
analyze:
type: "boolean"
plan:
$ref: "#/components/schemas/SqlWorkbenchPlanNodeV1"
raw:
type: "string"
error:
type: "string"
sqlState:
nullable: true
type: "string"
durationMs:
format: "int64"
nullable: true
type: "integer"
type: "object"
SqlWorkbenchExportFileV1:
format: "binary"
type: "string"
SqlWorkbenchExportJsonV1:
description: "Rows keyed by unique column labels, with duplicate labels suffixed."
items:
additionalProperties:
$ref: "#/components/schemas/SqlWorkbenchValueV1"
type: "object"
type: "array"
SqlWorkbenchFreeObjectV1:
additionalProperties: true
type: "object"
SqlWorkbenchHistoryEntryV1:
properties:
executionUuid:
type: "string"
backendName:
type: "string"
mode:
type: "string"
status:
type: "string"
sqlText:
type: "string"
notebookId:
format: "int64"
nullable: true
type: "integer"
cellKey:
nullable: true
type: "string"
startTime:
nullable: true
type: "string"
durationMs:
format: "int64"
nullable: true
type: "integer"
rowsReturned:
format: "int64"
nullable: true
type: "integer"
rowsAffected:
format: "int64"
nullable: true
type: "integer"
errorMessage:
nullable: true
type: "string"
type: "object"
SqlWorkbenchHistoryV1:
properties:
executions:
items:
$ref: "#/components/schemas/SqlWorkbenchHistoryEntryV1"
type: "array"
type: "object"
SqlWorkbenchLimitsV1:
properties:
maxRows:
format: "int64"
type: "integer"
pageSize:
format: "int64"
type: "integer"
maxPageSize:
format: "int64"
type: "integer"
maxResultBytes:
format: "int64"
type: "integer"
statementTimeoutSeconds:
format: "int64"
type: "integer"
writeStatementTimeoutSeconds:
format: "int64"
type: "integer"
maxAffectedRowsWithoutAcknowledgement:
format: "int64"
type: "integer"
maxAffectedRows:
format: "int64"
type: "integer"
maxSqlLength:
format: "int64"
type: "integer"
maxStatementsPerRun:
format: "int64"
type: "integer"
type: "object"
SqlWorkbenchNotebookContentV1:
properties:
title:
type: "string"
description:
nullable: true
type: "string"
defaultBackendName:
nullable: true
type: "string"
parameters:
items:
$ref: "#/components/schemas/SqlWorkbenchNotebookParameterV1"
type: "array"
cells:
items:
$ref: "#/components/schemas/SqlWorkbenchCellV1"
type: "array"
type: "object"
SqlWorkbenchNotebookParameterV1:
properties:
name:
type: "string"
type:
type: "string"
defaultValue:
nullable: true
type: "string"
label:
nullable: true
type: "string"
type: "object"
SqlWorkbenchNotebookRequestV1:
properties:
title:
type: "string"
description:
nullable: true
type: "string"
defaultBackendName:
nullable: true
type: "string"
parameters:
items:
$ref: "#/components/schemas/SqlWorkbenchNotebookParameterV1"
type: "array"
cells:
items:
$ref: "#/components/schemas/SqlWorkbenchCellV1"
type: "array"
comment:
type: "string"
type: "object"
SqlWorkbenchNotebookSummaryV1:
properties:
id:
format: "int64"
type: "integer"
title:
type: "string"
description:
nullable: true
type: "string"
visibility:
type: "string"
ownerUserId:
type: "string"
ownerName:
nullable: true
type: "string"
defaultBackendName:
nullable: true
type: "string"
currentVersion:
format: "int64"
type: "integer"
canEdit:
type: "boolean"
createDate:
nullable: true
type: "string"
modifyDate:
nullable: true
type: "string"
type: "object"
SqlWorkbenchNotebookV1:
properties:
id:
format: "int64"
type: "integer"
title:
type: "string"
description:
nullable: true
type: "string"
visibility:
type: "string"
ownerUserId:
type: "string"
ownerName:
nullable: true
type: "string"
defaultBackendName:
nullable: true
type: "string"
currentVersion:
format: "int64"
type: "integer"
canEdit:
type: "boolean"
createDate:
nullable: true
type: "string"
modifyDate:
nullable: true
type: "string"
parameters:
items:
$ref: "#/components/schemas/SqlWorkbenchNotebookParameterV1"
type: "array"
cells:
items:
$ref: "#/components/schemas/SqlWorkbenchCellV1"
type: "array"
type: "object"
SqlWorkbenchNotebooksV1:
properties:
notebooks:
items:
$ref: "#/components/schemas/SqlWorkbenchNotebookSummaryV1"
type: "array"
type: "object"
SqlWorkbenchParametersV1:
additionalProperties: {}
description: "Named SQL parameter values. JSON decimals are parsed exactly as\
\ BigDecimal."
type: "object"
SqlWorkbenchPlanNodeV1:
properties:
label:
type: "string"
detail:
nullable: true
type: "string"
startupCost:
nullable: true
type: "number"
totalCost:
nullable: true
type: "number"
planRows:
format: "int64"
nullable: true
type: "integer"
actualTimeMs:
nullable: true
type: "number"
actualRows:
format: "int64"
nullable: true
type: "integer"
loops:
format: "int64"
nullable: true
type: "integer"
extra:
$ref: "#/components/schemas/SqlWorkbenchFreeObjectV1"
children:
items:
$ref: "#/components/schemas/SqlWorkbenchPlanNodeV1"
type: "array"
type: "object"
SqlWorkbenchPublishRequestV1:
properties:
shared:
type: "boolean"
type: "object"
SqlWorkbenchQqqFieldV1:
properties:
name:
type: "string"
label:
nullable: true
type: "string"
sqlName:
type: "string"
type:
nullable: true
type: "string"
type: "object"
SqlWorkbenchQqqTableV1:
properties:
name:
type: "string"
label:
nullable: true
type: "string"
sqlName:
type: "string"
fields:
items:
$ref: "#/components/schemas/SqlWorkbenchQqqFieldV1"
type: "array"
type: "object"
SqlWorkbenchRowsDataV1:
items:
items:
$ref: "#/components/schemas/SqlWorkbenchValueV1"
type: "array"
type: "array"
SqlWorkbenchRowsV1:
properties:
executionUuid:
type: "string"
columns:
items:
$ref: "#/components/schemas/SqlWorkbenchColumnV1"
type: "array"
rows:
$ref: "#/components/schemas/SqlWorkbenchRowsDataV1"
offset:
format: "int64"
type: "integer"
rowCount:
format: "int64"
type: "integer"
truncated:
type: "boolean"
truncatedReason:
nullable: true
type: "string"
type: "object"
SqlWorkbenchSchemaColumnV1:
properties:
name:
type: "string"
typeName:
type: "string"
nullable:
type: "boolean"
type: "object"
SqlWorkbenchSchemaTableV1:
properties:
name:
type: "string"
type:
type: "string"
columns:
items:
$ref: "#/components/schemas/SqlWorkbenchSchemaColumnV1"
type: "array"
type: "object"
SqlWorkbenchSchemaV1:
properties:
backendName:
type: "string"
dialect:
$ref: "#/components/schemas/SqlWorkbenchDialectV1"
schemas:
items:
$ref: "#/components/schemas/SqlWorkbenchDatabaseSchemaV1"
type: "array"
truncated:
type: "boolean"
keywords:
items:
type: "string"
type: "array"
functions:
items:
type: "string"
type: "array"
qqqTables:
items:
$ref: "#/components/schemas/SqlWorkbenchQqqTableV1"
type: "array"
cachedAt:
type: "string"
type: "object"
SqlWorkbenchSnapshotRequestV1:
properties:
executionUuid:
type: "string"
cellKey:
type: "string"
label:
nullable: true
type: "string"
type: "object"
SqlWorkbenchSnapshotResultV1:
properties:
columns:
items:
$ref: "#/components/schemas/SqlWorkbenchColumnV1"
type: "array"
rows:
$ref: "#/components/schemas/SqlWorkbenchRowsDataV1"
type: "object"
SqlWorkbenchSnapshotV1:
properties:
id:
format: "int64"
type: "integer"
cellKey:
nullable: true
type: "string"
executionUuid:
nullable: true
type: "string"
label:
nullable: true
type: "string"
backendName:
nullable: true
type: "string"
rowCount:
format: "int64"
type: "integer"
truncated:
type: "boolean"
createDate:
nullable: true
type: "string"
result:
$ref: "#/components/schemas/SqlWorkbenchSnapshotResultV1"
type: "object"
SqlWorkbenchSnapshotsV1:
properties:
snapshots:
items:
$ref: "#/components/schemas/SqlWorkbenchSnapshotV1"
type: "array"
type: "object"
SqlWorkbenchStatementKindV1:
enum:
- "READ"
- "EXPLAIN_ANALYZE"
- "WRITE"
- "DDL"
- "FORBIDDEN"
type: "string"
SqlWorkbenchStatementV1:
properties:
index:
format: "int64"
type: "integer"
kind:
$ref: "#/components/schemas/SqlWorkbenchStatementKindV1"
leadingKeyword:
nullable: true
type: "string"
text:
type: "string"
affectedRows:
format: "int64"
nullable: true
type: "integer"
type: "object"
SqlWorkbenchStatusV1:
enum:
- "SUCCEEDED"
- "FAILED"
- "TIMED_OUT"
- "CANCELLED"
- "REJECTED"
- "PREVIEW"
- "DRIFTED"
type: "string"
SqlWorkbenchValueV1:
anyOf:
- nullable: true
type: "string"
- type: "number"
- type: "boolean"
- $ref: "#/components/schemas/SqlWorkbenchBinaryValueV1"
- items:
$ref: "#/components/schemas/SqlWorkbenchValueV1"
type: "array"
- $ref: "#/components/schemas/SqlWorkbenchFreeObjectV1"
description: "JSON-safe JDBC value; null, scalar, binary preview, nested array\
\ or vendor JSON object."
SqlWorkbenchVersionSummaryV1:
properties:
versionNumber:
format: "int64"
type: "integer"
savedByName:
nullable: true
type: "string"
comment:
nullable: true
type: "string"
createDate:
type: "string"
type: "object"
SqlWorkbenchVersionV1:
properties:
versionNumber:
format: "int64"
type: "integer"
savedByName:
nullable: true
type: "string"
comment:
nullable: true
type: "string"
createDate:
type: "string"
notebook:
$ref: "#/components/schemas/SqlWorkbenchNotebookContentV1"
type: "object"
SqlWorkbenchVersionsV1:
properties:
versions:
items:
$ref: "#/components/schemas/SqlWorkbenchVersionSummaryV1"
type: "array"
type: "object"
securitySchemes:
sessionUuidCookie:
description: "The session cookie set by POST /qqq/v1/manageSession (web clients)."
in: "cookie"
name: "sessionUUID"
type: "apiKey"
bearerAuth:
bearerFormat: "JWT or session UUID"
description: "`Authorization: Bearer <token>`, where the token is either\n-\
\ an OAuth2 access token (a signed JWT) issued by the app's identity provider\
\ to the app's client,\n or to its native client (`values.nativeClientId`\
\ in GET /qqq/v1/metaData/authentication), for\n example from the device-authorization\
\ grant or auth-code + PKCE. It is verified against the\n provider's keys\
\ (issuer, audience, expiry, signature) and gives the same user and permissions\n\
\ as signing in on the web. When it expires (401), refresh it at the provider\
\ and retry; or\n- a session UUID returned by POST /qqq/v1/manageSession,\
\ which the server keeps refreshed."
scheme: "bearer"
type: "http"
oauth2:
description: "The app's OAuth2 / OpenID Connect provider. The real endpoints\
\ come from the provider's discovery\ndocument: `{values.baseUrl}.well-known/openid-configuration`,\
\ with values from\nGET /qqq/v1/metaData/authentication. Native clients use\
\ `values.nativeClientId` (a public client)\nwith auth-code + PKCE (loopback\
\ or custom-scheme redirect URI registered at the provider) or the\ndevice-authorization\
\ grant (`device_authorization_endpoint`, RFC 8628), then send the access\
\ token\nas `Authorization: Bearer`."
flows:
authorizationCode:
authorizationUrl: "/authorize"
scopes:
email: "Email address"
offline_access: "A refresh token, to renew the access token without signing\
\ in again"
openid: "OpenID Connect sign-in"
profile: "Name, username and groups (permissions come from the groups)"
tokenUrl: "/token"
type: "oauth2"
info:
contact:
email: "contact@kingsrook.com"
description: "Audited SQL execution and notebooks"
title: "QQQ Middleware API extension: sql-workbench"
version: "1.1.0"
openapi: "3.0.3"
paths:
/qqq/v1/sql-workbench/capabilities:
get:
description: "Get caller capabilities and configured limits. Requires SQL Workbench\
\ access; services enforce caller permissions, ownership, execution limits\
\ and audit."
operationId: "sqlWorkbenchGetCapabilities"
responses:
400:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Invalid input or execution limit exceeded"
401:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Sign in required"
403:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Permission denied"
404:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Missing or invisible resource"
200:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchCapabilitiesV1"
description: "Successful Response"
409:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Execution UUID already used"
429:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Too many requests (code RATE_LIMITED); retry later."
security:
- sessionUuidCookie:
- "N/A"
- bearerAuth:
- "N/A"
- oauth2:
- "openid"
- "profile"
- "email"
summary: "Get caller capabilities and configured limits"
tags:
- "sql-workbench"
/qqq/v1/sql-workbench/schema/{backendName}:
get:
description: "Inspect a target backend schema. Requires SQL Workbench access;\
\ services enforce caller permissions, ownership, execution limits and audit."
operationId: "sqlWorkbenchGetSchema"
parameters:
- description: "Configured target backend name."
in: "path"
name: "backendName"
required: true
schema:
type: "string"
- description: "True to bypass the schema cache; default false."
in: "query"
name: "refresh"
required: false
schema:
type: "boolean"
responses:
400:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Invalid input or execution limit exceeded"
401:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Sign in required"
403:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Permission denied"
404:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Missing or invisible resource"
200:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchSchemaV1"
description: "Successful Response"
409:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Execution UUID already used"
429:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Too many requests (code RATE_LIMITED); retry later."
security:
- sessionUuidCookie:
- "N/A"
- bearerAuth:
- "N/A"
- oauth2:
- "openid"
- "profile"
- "email"
summary: "Inspect a target backend schema"
tags:
- "sql-workbench"
/qqq/v1/sql-workbench/execute:
post:
description: "Execute read-only SQL or preview and confirm a gated write. Requires\
\ SQL Workbench access; services enforce caller permissions, ownership, execution\
\ limits and audit."
operationId: "sqlWorkbenchExecute"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchExecuteRequestV1"
required: false
responses:
400:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Invalid input or execution limit exceeded"
401:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Sign in required"
403:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Permission denied"
404:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Missing or invisible resource"
200:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchExecutionV1"
description: "Successful Response"
409:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Execution UUID already used"
429:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Too many requests (code RATE_LIMITED); retry later."
security:
- sessionUuidCookie:
- "N/A"
- bearerAuth:
- "N/A"
- oauth2:
- "openid"
- "profile"
- "email"
summary: "Execute read-only SQL or preview and confirm a gated write"
tags:
- "sql-workbench"
/qqq/v1/sql-workbench/explain:
post:
description: "Explain SQL; ANALYZE remains subject to write gates. Requires\
\ SQL Workbench access; services enforce caller permissions, ownership, execution\
\ limits and audit."
operationId: "sqlWorkbenchExplain"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchExplainRequestV1"
required: false
responses:
400:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Invalid input or execution limit exceeded"
401:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Sign in required"
403:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Permission denied"
404:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Missing or invisible resource"
200:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchExplainV1"
description: "Successful Response"
409:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Execution UUID already used"
429:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Too many requests (code RATE_LIMITED); retry later."
security:
- sessionUuidCookie:
- "N/A"
- bearerAuth:
- "N/A"
- oauth2:
- "openid"
- "profile"
- "email"
summary: "Explain SQL; ANALYZE remains subject to write gates"
tags:
- "sql-workbench"
/qqq/v1/sql-workbench/executions/{uuid}/rows:
get:
description: "Page or sort the caller's cached result. Requires SQL Workbench\
\ access; services enforce caller permissions, ownership, execution limits\
\ and audit."
operationId: "sqlWorkbenchGetRows"
parameters:
- description: "Execution UUID; case insensitive."
in: "path"
name: "uuid"
required: true
schema:
type: "string"
- description: "Rows to skip; default zero; negative values become zero."
in: "query"
name: "offset"
required: false
schema:
type: "integer"
- description: "Page size; nonpositive or absent uses the default. Rows cap\
\ at maxPageSize; history caps at 200 (default 50)."
in: "query"
name: "limit"
required: false
schema:
type: "integer"
- description: "Optional zero-based result column index."
in: "query"
name: "sort"
required: false
schema:
type: "integer"
- description: "Sort direction: desc (case insensitive) or asc (default)."
in: "query"
name: "dir"
required: false
schema:
type: "string"
responses:
400:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Invalid input or execution limit exceeded"
401:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Sign in required"
403:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Permission denied"
404:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Missing or invisible resource"
200:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchRowsV1"
description: "Successful Response"
409:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Execution UUID already used"
429:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Too many requests (code RATE_LIMITED); retry later."
security:
- sessionUuidCookie:
- "N/A"
- bearerAuth:
- "N/A"
- oauth2:
- "openid"
- "profile"
- "email"
summary: "Page or sort the caller's cached result"
tags:
- "sql-workbench"
/qqq/v1/sql-workbench/executions/{uuid}/cancel:
post:
description: "Cancel the caller's running execution. Requires SQL Workbench\
\ access; services enforce caller permissions, ownership, execution limits\
\ and audit."
operationId: "sqlWorkbenchCancelExecution"
parameters:
- description: "Execution UUID; case insensitive."
in: "path"
name: "uuid"
required: true
schema:
type: "string"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchEmptyRequestV1"
required: false
responses:
400:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Invalid input or execution limit exceeded"
401:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Sign in required"
403:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Permission denied"
404:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Missing or invisible resource"
200:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchCancelledV1"
description: "Successful Response"
409:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Execution UUID already used"
429:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Too many requests (code RATE_LIMITED); retry later."
security:
- sessionUuidCookie:
- "N/A"
- bearerAuth:
- "N/A"
- oauth2:
- "openid"
- "profile"
- "email"
summary: "Cancel the caller's running execution"
tags:
- "sql-workbench"
/qqq/v1/sql-workbench/history:
get:
description: "List the caller's recent audited executions. Requires SQL Workbench\
\ access; services enforce caller permissions, ownership, execution limits\
\ and audit."
operationId: "sqlWorkbenchGetHistory"
parameters:
- description: "Page size; nonpositive or absent uses the default. Rows cap\
\ at maxPageSize; history caps at 200 (default 50)."
in: "query"
name: "limit"
required: false
schema:
type: "integer"
- description: "Configured target backend name."
in: "query"
name: "backendName"
required: false
schema:
type: "string"
responses:
400:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Invalid input or execution limit exceeded"
401:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Sign in required"
403:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Permission denied"
404:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Missing or invisible resource"
200:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchHistoryV1"
description: "Successful Response"
409:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Execution UUID already used"
429:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Too many requests (code RATE_LIMITED); retry later."
security:
- sessionUuidCookie:
- "N/A"
- bearerAuth:
- "N/A"
- oauth2:
- "openid"
- "profile"
- "email"
summary: "List the caller's recent audited executions"
tags:
- "sql-workbench"
/qqq/v1/sql-workbench/notebooks:
get:
description: "List visible personal or shared notebooks. Requires SQL Workbench\
\ access; services enforce caller permissions, ownership, execution limits\
\ and audit."
operationId: "sqlWorkbenchListNotebooks"
parameters:
- description: "mine (default) or shared notebook library."
in: "query"
name: "scope"
required: false
schema:
type: "string"
responses:
400:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Invalid input or execution limit exceeded"
401:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Sign in required"
403:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Permission denied"
404:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Missing or invisible resource"
200:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchNotebooksV1"
description: "Successful Response"
409:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Execution UUID already used"
429:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Too many requests (code RATE_LIMITED); retry later."
security:
- sessionUuidCookie:
- "N/A"
- bearerAuth:
- "N/A"
- oauth2:
- "openid"
- "profile"
- "email"
summary: "List visible personal or shared notebooks"
tags:
- "sql-workbench"
post:
description: "Create a personal notebook. Requires SQL Workbench access; services\
\ enforce caller permissions, ownership, execution limits and audit."
operationId: "sqlWorkbenchCreateNotebook"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchNotebookRequestV1"
required: false
responses:
400:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Invalid input or execution limit exceeded"
401:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Sign in required"
403:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Permission denied"
404:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Missing or invisible resource"
200:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchNotebookV1"
description: "Successful Response"
409:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Execution UUID already used"
429:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Too many requests (code RATE_LIMITED); retry later."
security:
- sessionUuidCookie:
- "N/A"
- bearerAuth:
- "N/A"
- oauth2:
- "openid"
- "profile"
- "email"
summary: "Create a personal notebook"
tags:
- "sql-workbench"
/qqq/v1/sql-workbench/notebooks/{id}:
delete:
description: "Delete an owned notebook. Requires SQL Workbench access; services\
\ enforce caller permissions, ownership, execution limits and audit."
operationId: "sqlWorkbenchDeleteNotebook"
parameters:
- description: "Notebook identifier."
in: "path"
name: "id"
required: true
schema:
type: "integer"
responses:
400:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Invalid input or execution limit exceeded"
401:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Sign in required"
403:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Permission denied"
404:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Missing or invisible resource"
200:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchDeletedV1"
description: "Successful Response"
409:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Execution UUID already used"
429:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Too many requests (code RATE_LIMITED); retry later."
security:
- sessionUuidCookie:
- "N/A"
- bearerAuth:
- "N/A"
- oauth2:
- "openid"
- "profile"
- "email"
summary: "Delete an owned notebook"
tags:
- "sql-workbench"
get:
description: "Get a visible notebook and its cells. Requires SQL Workbench access;\
\ services enforce caller permissions, ownership, execution limits and audit."
operationId: "sqlWorkbenchGetNotebook"
parameters:
- description: "Notebook identifier."
in: "path"
name: "id"
required: true
schema:
type: "integer"
responses:
400:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Invalid input or execution limit exceeded"
401:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Sign in required"
403:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Permission denied"
404:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Missing or invisible resource"
200:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchNotebookV1"
description: "Successful Response"
409:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Execution UUID already used"
429:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Too many requests (code RATE_LIMITED); retry later."
security:
- sessionUuidCookie:
- "N/A"
- bearerAuth:
- "N/A"
- oauth2:
- "openid"
- "profile"
- "email"
summary: "Get a visible notebook and its cells"
tags:
- "sql-workbench"
put:
description: "Update an owned notebook and record a version. Requires SQL Workbench\
\ access; services enforce caller permissions, ownership, execution limits\
\ and audit."
operationId: "sqlWorkbenchUpdateNotebook"
parameters:
- description: "Notebook identifier."
in: "path"
name: "id"
required: true
schema:
type: "integer"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchNotebookRequestV1"
required: false
responses:
400:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Invalid input or execution limit exceeded"
401:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Sign in required"
403:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Permission denied"
404:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Missing or invisible resource"
200:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchNotebookV1"
description: "Successful Response"
409:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Execution UUID already used"
429:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Too many requests (code RATE_LIMITED); retry later."
security:
- sessionUuidCookie:
- "N/A"
- bearerAuth:
- "N/A"
- oauth2:
- "openid"
- "profile"
- "email"
summary: "Update an owned notebook and record a version"
tags:
- "sql-workbench"
/qqq/v1/sql-workbench/notebooks/{id}/publish:
post:
description: "Publish or withdraw an owned notebook with share permission. Requires\
\ SQL Workbench access; services enforce caller permissions, ownership, execution\
\ limits and audit."
operationId: "sqlWorkbenchPublishNotebook"
parameters:
- description: "Notebook identifier."
in: "path"
name: "id"
required: true
schema:
type: "integer"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchPublishRequestV1"
required: false
responses:
400:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Invalid input or execution limit exceeded"
401:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Sign in required"
403:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Permission denied"
404:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Missing or invisible resource"
200:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchNotebookV1"
description: "Successful Response"
409:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Execution UUID already used"
429:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Too many requests (code RATE_LIMITED); retry later."
security:
- sessionUuidCookie:
- "N/A"
- bearerAuth:
- "N/A"
- oauth2:
- "openid"
- "profile"
- "email"
summary: "Publish or withdraw an owned notebook with share permission"
tags:
- "sql-workbench"
/qqq/v1/sql-workbench/notebooks/{id}/duplicate:
post:
description: "Make a personal copy of a visible notebook. Requires SQL Workbench\
\ access; services enforce caller permissions, ownership, execution limits\
\ and audit."
operationId: "sqlWorkbenchDuplicateNotebook"
parameters:
- description: "Notebook identifier."
in: "path"
name: "id"
required: true
schema:
type: "integer"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchEmptyRequestV1"
required: false
responses:
400:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Invalid input or execution limit exceeded"
401:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Sign in required"
403:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Permission denied"
404:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Missing or invisible resource"
200:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchNotebookV1"
description: "Successful Response"
409:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Execution UUID already used"
429:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Too many requests (code RATE_LIMITED); retry later."
security:
- sessionUuidCookie:
- "N/A"
- bearerAuth:
- "N/A"
- oauth2:
- "openid"
- "profile"
- "email"
summary: "Make a personal copy of a visible notebook"
tags:
- "sql-workbench"
/qqq/v1/sql-workbench/notebooks/{id}/versions:
get:
description: "List versions of a visible notebook. Requires SQL Workbench access;\
\ services enforce caller permissions, ownership, execution limits and audit."
operationId: "sqlWorkbenchListVersions"
parameters:
- description: "Notebook identifier."
in: "path"
name: "id"
required: true
schema:
type: "integer"
responses:
400:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Invalid input or execution limit exceeded"
401:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Sign in required"
403:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Permission denied"
404:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Missing or invisible resource"
200:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchVersionsV1"
description: "Successful Response"
409:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Execution UUID already used"
429:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Too many requests (code RATE_LIMITED); retry later."
security:
- sessionUuidCookie:
- "N/A"
- bearerAuth:
- "N/A"
- oauth2:
- "openid"
- "profile"
- "email"
summary: "List versions of a visible notebook"
tags:
- "sql-workbench"
/qqq/v1/sql-workbench/notebooks/{id}/versions/{n}:
get:
description: "Get a visible notebook version and saved content. Requires SQL\
\ Workbench access; services enforce caller permissions, ownership, execution\
\ limits and audit."
operationId: "sqlWorkbenchGetVersion"
parameters:
- description: "Notebook identifier."
in: "path"
name: "id"
required: true
schema:
type: "integer"
- description: "Notebook version number."
in: "path"
name: "n"
required: true
schema:
type: "integer"
responses:
400:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Invalid input or execution limit exceeded"
401:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Sign in required"
403:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Permission denied"
404:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Missing or invisible resource"
200:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchVersionV1"
description: "Successful Response"
409:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Execution UUID already used"
429:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Too many requests (code RATE_LIMITED); retry later."
security:
- sessionUuidCookie:
- "N/A"
- bearerAuth:
- "N/A"
- oauth2:
- "openid"
- "profile"
- "email"
summary: "Get a visible notebook version and saved content"
tags:
- "sql-workbench"
/qqq/v1/sql-workbench/notebooks/{id}/versions/{n}/restore:
post:
description: "Restore an owned notebook version as a new version. Requires SQL\
\ Workbench access; services enforce caller permissions, ownership, execution\
\ limits and audit."
operationId: "sqlWorkbenchRestoreVersion"
parameters:
- description: "Notebook identifier."
in: "path"
name: "id"
required: true
schema:
type: "integer"
- description: "Notebook version number."
in: "path"
name: "n"
required: true
schema:
type: "integer"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchEmptyRequestV1"
required: false
responses:
400:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Invalid input or execution limit exceeded"
401:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Sign in required"
403:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Permission denied"
404:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Missing or invisible resource"
200:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchNotebookV1"
description: "Successful Response"
409:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Execution UUID already used"
429:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Too many requests (code RATE_LIMITED); retry later."
security:
- sessionUuidCookie:
- "N/A"
- bearerAuth:
- "N/A"
- oauth2:
- "openid"
- "profile"
- "email"
summary: "Restore an owned notebook version as a new version"
tags:
- "sql-workbench"
/qqq/v1/sql-workbench/notebooks/{id}/snapshots:
get:
description: "List snapshots of a visible notebook. Requires SQL Workbench access;\
\ services enforce caller permissions, ownership, execution limits and audit."
operationId: "sqlWorkbenchListSnapshots"
parameters:
- description: "Notebook identifier."
in: "path"
name: "id"
required: true
schema:
type: "integer"
responses:
400:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Invalid input or execution limit exceeded"
401:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Sign in required"
403:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Permission denied"
404:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Missing or invisible resource"
200:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchSnapshotsV1"
description: "Successful Response"
409:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Execution UUID already used"
429:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Too many requests (code RATE_LIMITED); retry later."
security:
- sessionUuidCookie:
- "N/A"
- bearerAuth:
- "N/A"
- oauth2:
- "openid"
- "profile"
- "email"
summary: "List snapshots of a visible notebook"
tags:
- "sql-workbench"
post:
description: "Pin the caller's cached result to an owned notebook. Requires\
\ SQL Workbench access; services enforce caller permissions, ownership, execution\
\ limits and audit."
operationId: "sqlWorkbenchCreateSnapshot"
parameters:
- description: "Notebook identifier."
in: "path"
name: "id"
required: true
schema:
type: "integer"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchSnapshotRequestV1"
required: false
responses:
400:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Invalid input or execution limit exceeded"
401:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Sign in required"
403:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Permission denied"
404:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Missing or invisible resource"
200:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchSnapshotV1"
description: "Successful Response"
409:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Execution UUID already used"
429:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Too many requests (code RATE_LIMITED); retry later."
security:
- sessionUuidCookie:
- "N/A"
- bearerAuth:
- "N/A"
- oauth2:
- "openid"
- "profile"
- "email"
summary: "Pin the caller's cached result to an owned notebook"
tags:
- "sql-workbench"
/qqq/v1/sql-workbench/notebooks/{id}/snapshots/{snapshotId}:
delete:
description: "Delete a snapshot from an owned notebook. Requires SQL Workbench\
\ access; services enforce caller permissions, ownership, execution limits\
\ and audit."
operationId: "sqlWorkbenchDeleteSnapshot"
parameters:
- description: "Notebook identifier."
in: "path"
name: "id"
required: true
schema:
type: "integer"
- description: "Snapshot identifier."
in: "path"
name: "snapshotId"
required: true
schema:
type: "integer"
responses:
400:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Invalid input or execution limit exceeded"
401:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Sign in required"
403:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Permission denied"
404:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Missing or invisible resource"
200:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchDeletedV1"
description: "Successful Response"
409:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Execution UUID already used"
429:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Too many requests (code RATE_LIMITED); retry later."
security:
- sessionUuidCookie:
- "N/A"
- bearerAuth:
- "N/A"
- oauth2:
- "openid"
- "profile"
- "email"
summary: "Delete a snapshot from an owned notebook"
tags:
- "sql-workbench"
/qqq/v1/sql-workbench/executions/{uuid}/export:
get:
description: "Export the caller's cached result as CSV, JSON or XLSX. Requires\
\ SQL Workbench access; services enforce caller permissions, ownership, execution\
\ limits and audit."
operationId: "sqlWorkbenchExportResult"
parameters:
- description: "Execution UUID; case insensitive."
in: "path"
name: "uuid"
required: true
schema:
type: "string"
- description: "csv (default), json or xlsx; case insensitive."
in: "query"
name: "format"
required: false
schema:
type: "string"
responses:
400:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Invalid input or execution limit exceeded"
401:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Sign in required"
403:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Permission denied"
404:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Missing or invisible resource"
200:
content:
application/json:
schema:
$ref: "#/components/schemas/SqlWorkbenchExportJsonV1"
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet:
schema:
$ref: "#/components/schemas/SqlWorkbenchExportFileV1"
text/csv; charset=utf-8:
schema:
$ref: "#/components/schemas/SqlWorkbenchExportFileV1"
description: "Attachment named sql-result-{short UUID}.{format}; Cache-Control:\
\ no-store"
409:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Execution UUID already used"
429:
content:
application/json:
schema:
$ref: "#/components/schemas/BasicErrorResponseV1"
description: "Too many requests (code RATE_LIMITED); retry later."
security:
- sessionUuidCookie:
- "N/A"
- bearerAuth:
- "N/A"
- oauth2:
- "openid"
- "profile"
- "email"
summary: "Export the caller's cached result as CSV, JSON or XLSX"
tags:
- "sql-workbench"
servers:
- description: "The QQQ server that serves this document (paths include /qqq/v1)."
url: "/"
tags:
- description: "Operations of the sql-workbench extension."
name: "sql-workbench"