From e9a8ca5b5d728aa1d8920a5d93837d792df9ac3b Mon Sep 17 00:00:00 2001 From: Emma Spice Date: Tue, 20 Oct 2026 18:01:18 -0700 Subject: [PATCH 1/2] docs: async queries reject task history; /v1/search rejects empty text Documents spiceai/spiceai#15213 and #15119. --- website/docs/features/distributed-query/index.md | 1 + website/public/openapi.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/website/docs/features/distributed-query/index.md b/website/docs/features/distributed-query/index.md index 248f0581e..1a5e0f2ef 100644 --- a/website/docs/features/distributed-query/index.md +++ b/website/docs/features/distributed-query/index.md @@ -672,6 +672,7 @@ Each scheduler deletes, with their result chunks, the jobs whose results have ex - The `format` query parameter on the results endpoint is declared but not yet implemented (results are always JSON over HTTP, Arrow IPC over Flight) - Result TTL is not yet configurable per-query (fixed at 12 hours) - Chunk size is not yet configurable per-query (fixed at 10,000 rows) +- Async queries reject locally accelerated datasets, Cayenne catalog tables, and `runtime.task_history` (including `runtime.local_task_history`), because task history is read only on the scheduler. Run these queries through `/v1/sql` or Flight SQL. A rejected query fails with the error code `EXECUTION_FAILED`. ## High Availability diff --git a/website/public/openapi.json b/website/public/openapi.json index b3dbff11f..ed9320751 100644 --- a/website/public/openapi.json +++ b/website/public/openapi.json @@ -10404,7 +10404,7 @@ }, "text": { "type": "string", - "description": "The text to search documents for similarity" + "description": "The text to search documents for similarity. Must contain at least one non-whitespace character." }, "where": { "type": [ From 8af5f65f46fb49b836d4a6cea4ac6d3165c6770c Mon Sep 17 00:00:00 2001 From: Spice Schema Bot Date: Wed, 21 Oct 2026 01:04:31 +0000 Subject: [PATCH 2/2] chore: update API docs --- website/docs/api/HTTP/post-search.RequestSchema.json | 2 +- website/docs/api/HTTP/post-search.api.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/website/docs/api/HTTP/post-search.RequestSchema.json b/website/docs/api/HTTP/post-search.RequestSchema.json index d92d5dbda..b615b7fda 100644 --- a/website/docs/api/HTTP/post-search.RequestSchema.json +++ b/website/docs/api/HTTP/post-search.RequestSchema.json @@ -1 +1 @@ -{"title":"Body","body":{"description":"Search request parameters","content":{"application/json":{"schema":{"allOf":[{"type":"object","required":["text"],"properties":{"additional_columns":{"type":"array","items":{"type":"string"},"description":"Additional columns to return from the dataset. If the column is a primary key, it will be\n returned within the response under `.primary_key`, not `.data`."},"datasets":{"type":["array","null"],"items":{"type":"string"},"description":"The datasets to search for similarity. If None, search across all datasets. For available datasets, use the `list_datasets` tool and ensure `can_search_documents==true`."},"limit":{"type":["integer","null"],"description":"Number of documents to return for each dataset","minimum":0},"text":{"type":"string","description":"The text to search documents for similarity"},"where":{"type":["string","null"],"description":"An SQL filter predicate to apply. Format: 'WHERE `where_cond`'."}},"title":"SearchRequestBaseJson"},{"type":"object","properties":{"keywords":{"type":["array","null"],"items":{"type":"string"}}}}],"description":"HTTP request schema is separate from AI requests, so that keywords can be supplied as an optional field for HTTP calls.\n`schemars` doesn't allow setting `#[serde(default)]` as well as `#[schemars(required)]` - the field does not become required.\nWhen the field is not required, the model ignores it.","title":"SearchRequestHTTPJson"},"example":{"datasets":["app_messages"],"text":"Tokyo plane tickets","where":"user=1234321","additional_columns":["timestamp"],"limit":3,"keywords":["plane","tickets"]}}},"required":true}} \ No newline at end of file +{"title":"Body","body":{"description":"Search request parameters","content":{"application/json":{"schema":{"allOf":[{"type":"object","required":["text"],"properties":{"additional_columns":{"type":"array","items":{"type":"string"},"description":"Additional columns to return from the dataset. If the column is a primary key, it will be\n returned within the response under `.primary_key`, not `.data`."},"datasets":{"type":["array","null"],"items":{"type":"string"},"description":"The datasets to search for similarity. If None, search across all datasets. For available datasets, use the `list_datasets` tool and ensure `can_search_documents==true`."},"limit":{"type":["integer","null"],"description":"Number of documents to return for each dataset","minimum":0},"text":{"type":"string","description":"The text to search documents for similarity. Must contain at least one non-whitespace character."},"where":{"type":["string","null"],"description":"An SQL filter predicate to apply. Format: 'WHERE `where_cond`'."}},"title":"SearchRequestBaseJson"},{"type":"object","properties":{"keywords":{"type":["array","null"],"items":{"type":"string"}}}}],"description":"HTTP request schema is separate from AI requests, so that keywords can be supplied as an optional field for HTTP calls.\n`schemars` doesn't allow setting `#[serde(default)]` as well as `#[schemars(required)]` - the field does not become required.\nWhen the field is not required, the model ignores it.","title":"SearchRequestHTTPJson"},"example":{"datasets":["app_messages"],"text":"Tokyo plane tickets","where":"user=1234321","additional_columns":["timestamp"],"limit":3,"keywords":["plane","tickets"]}}},"required":true}} \ No newline at end of file diff --git a/website/docs/api/HTTP/post-search.api.mdx b/website/docs/api/HTTP/post-search.api.mdx index 75bb04ab7..c4cbe3eda 100644 --- a/website/docs/api/HTTP/post-search.api.mdx +++ b/website/docs/api/HTTP/post-search.api.mdx @@ -5,7 +5,7 @@ description: "Perform a vector similarity search (VSS) operation on a dataset." sidebar_label: "Search" hide_title: true hide_table_of_contents: true -api: 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 +api: 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 sidebar_class_name: "post api-method" info_path: docs/api/HTTP/runtime custom_edit_url: null