From 75da498812f144e274890aeff5a2add3e0221291 Mon Sep 17 00:00:00 2001 From: Daniel Spangenberger Date: Tue, 25 Aug 2026 13:24:00 -0400 Subject: [PATCH] sync spec: composite-topic imported_model_ids on v2 document queries Syncs api/openapi.json from exploreomni/omni@main (f75cae25d89). - `queryPresentations.data.*.query.imported_model_ids` (string[]) added to the v2 document create/patch-draft bodies and the v2 read response. Model IDs the query reaches through its composite topic's imports; the API authorizes the run gate on each. - `models update` description now documents the Connection Admin / Modeler requirements for renaming schema, shared, shared-extension, and branch models. - `dashboards download` gains a description covering how cross-model tiles are resolved (target user, else the API key's user) and omitted when unqueryable. - AI routine failure `code` enum: `no_gate` replaced by `not_expressible`. No new operations, and no new query or path params, so the command surface is unchanged. The new body field is reachable via `omni documents v2-create --schema --field queryPresentations.data.query`. Confidence: high Scope-risk: narrow Not-tested: live API call exercising imported_model_ids Co-Authored-By: Claude --- api/openapi.json | 19 +++++++++++++++++-- cmd/omni/openapi.json | 19 +++++++++++++++++-- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/api/openapi.json b/api/openapi.json index c13c771..98db825 100644 --- a/api/openapi.json +++ b/api/openapi.json @@ -2460,9 +2460,9 @@ "code": { "type": "string", "enum": [ + "not_expressible", "no_query", "malformed_query", - "no_gate", "dry_run_failed", "no_condition_detected" ], @@ -26102,6 +26102,13 @@ }, "description": "Filters that were embedded directly in raw SQL (read-only)." }, + "imported_model_ids": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Model IDs (UUIDs) the query reaches through its composite topic's imports — the topic's import_models entries, which must be model ids, not names. Authorization requires the run gate on each; omit only for queries that do not touch imported topics." + }, "join_paths_from_topic_name": { "type": "string", "description": "Topic name that determines join path precedence for parsed SQL queries." @@ -30404,6 +30411,13 @@ }, "description": "Filters that were embedded directly in raw SQL (read-only)." }, + "imported_model_ids": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Model IDs (UUIDs) the query reaches through its composite topic's imports — the topic's import_models entries, which must be model ids, not names. Authorization requires the run gate on each; omit only for queries that do not touch imported topics." + }, "join_paths_from_topic_name": { "type": "string", "description": "Topic name that determines join path precedence for parsed SQL queries." @@ -44764,6 +44778,7 @@ }, "/api/v1/dashboards/{identifier}/download": { "post": { + "description": "The artifact includes cross-model tiles the download runs as (the target user when one is named, else the API key’s user); tiles on a model they cannot query are omitted.", "operationId": "dashboardsDownload", "summary": "Initiate dashboard download", "tags": [ @@ -50128,7 +50143,7 @@ }, "/api/v1/models/{modelId}": { "patch": { - "description": "Update metadata for an existing model. Currently supports renaming the model via the `name` field.", + "description": "Update metadata for an existing model. Currently supports renaming the model via the `name` field. Renaming a schema, shared, or shared extension model requires Connection Admin; renaming a branch requires Modeler.", "operationId": "modelsUpdate", "summary": "Update model", "tags": [ diff --git a/cmd/omni/openapi.json b/cmd/omni/openapi.json index c13c771..98db825 100644 --- a/cmd/omni/openapi.json +++ b/cmd/omni/openapi.json @@ -2460,9 +2460,9 @@ "code": { "type": "string", "enum": [ + "not_expressible", "no_query", "malformed_query", - "no_gate", "dry_run_failed", "no_condition_detected" ], @@ -26102,6 +26102,13 @@ }, "description": "Filters that were embedded directly in raw SQL (read-only)." }, + "imported_model_ids": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Model IDs (UUIDs) the query reaches through its composite topic's imports — the topic's import_models entries, which must be model ids, not names. Authorization requires the run gate on each; omit only for queries that do not touch imported topics." + }, "join_paths_from_topic_name": { "type": "string", "description": "Topic name that determines join path precedence for parsed SQL queries." @@ -30404,6 +30411,13 @@ }, "description": "Filters that were embedded directly in raw SQL (read-only)." }, + "imported_model_ids": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Model IDs (UUIDs) the query reaches through its composite topic's imports — the topic's import_models entries, which must be model ids, not names. Authorization requires the run gate on each; omit only for queries that do not touch imported topics." + }, "join_paths_from_topic_name": { "type": "string", "description": "Topic name that determines join path precedence for parsed SQL queries." @@ -44764,6 +44778,7 @@ }, "/api/v1/dashboards/{identifier}/download": { "post": { + "description": "The artifact includes cross-model tiles the download runs as (the target user when one is named, else the API key’s user); tiles on a model they cannot query are omitted.", "operationId": "dashboardsDownload", "summary": "Initiate dashboard download", "tags": [ @@ -50128,7 +50143,7 @@ }, "/api/v1/models/{modelId}": { "patch": { - "description": "Update metadata for an existing model. Currently supports renaming the model via the `name` field.", + "description": "Update metadata for an existing model. Currently supports renaming the model via the `name` field. Renaming a schema, shared, or shared extension model requires Connection Admin; renaming a branch requires Modeler.", "operationId": "modelsUpdate", "summary": "Update model", "tags": [