From 02d54732cc15fe0fcbafbc9335d6d121fb054ffd Mon Sep 17 00:00:00 2001 From: Lisa Cawley Date: Fri, 18 Oct 2024 11:57:11 -0700 Subject: [PATCH] Add @ext_doc_id for externalDocs in OpenAPI documents (#3028) --- compiler-rs/clients_schema/src/lib.rs | 66 ++++ .../clients_schema_to_openapi/src/paths.rs | 4 +- .../clients_schema_to_openapi/src/schemas.rs | 4 +- .../pkg/compiler_wasm_lib_bg.wasm | Bin 622790 -> 626702 bytes .../openapi_to_clients_schema/src/types.rs | 2 +- compiler/src/model/build-model.ts | 1 + compiler/src/model/json-spec.ts | 4 + compiler/src/model/metamodel.ts | 6 + compiler/src/model/utils.ts | 25 +- docs/doc-comments-guide.md | 6 +- docs/modeling-guide.md | 54 ++- .../elasticsearch-shared-overlays.yaml | 3 - output/openapi/elasticsearch-openapi.json | 309 ------------------ .../elasticsearch-serverless-openapi.json | 243 -------------- output/schema/schema.json | 8 +- .../_types/query_dsl/abstractions.ts | 2 +- specification/security/_types/Privileges.ts | 2 +- typescript-generator/src/metamodel.ts | 6 + 18 files changed, 158 insertions(+), 587 deletions(-) diff --git a/compiler-rs/clients_schema/src/lib.rs b/compiler-rs/clients_schema/src/lib.rs index 7df0bc82e..d8f2d16f3 100644 --- a/compiler-rs/clients_schema/src/lib.rs +++ b/compiler-rs/clients_schema/src/lib.rs @@ -55,6 +55,11 @@ pub trait Documented { fn description(&self) -> Option<&str>; } +pub trait ExternalDocument { + fn ext_doc_id(&self) -> Option<&str>; + fn ext_doc_url(&self) -> Option<&str>; +} + #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)] pub struct TypeName { // Order is important for Ord implementation @@ -314,6 +319,12 @@ pub struct Property { #[serde(skip_serializing_if = "Option::is_none")] pub doc_id: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub ext_doc_url: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub ext_doc_id: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub server_default: Option, @@ -355,6 +366,16 @@ impl Documented for Property { } } +impl ExternalDocument for Property { + fn ext_doc_url(&self) -> Option<&str> { + self.ext_doc_url.as_deref() + } + + fn ext_doc_id(&self) -> Option<&str> { + self.ext_doc_id.as_deref() + } +} + #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum ServerDefault { @@ -477,6 +498,13 @@ pub struct BaseType { #[serde(skip_serializing_if = "Option::is_none")] pub doc_id: Option, + /// Link to public documentation + #[serde(skip_serializing_if = "Option::is_none")] + pub ext_doc_url: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub ext_doc_id: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub deprecation: Option, @@ -512,6 +540,8 @@ impl BaseType { description: None, variant_name: None, spec_location: None, + ext_doc_id: None, + ext_doc_url: None, } } } @@ -530,6 +560,16 @@ impl Documented for BaseType { } } +impl ExternalDocument for BaseType { + fn ext_doc_url(&self) -> Option<&str> { + self.ext_doc_url.as_deref() + } + + fn ext_doc_id(&self) -> Option<&str> { + self.ext_doc_id.as_deref() + } +} + trait WithBaseType { fn base(&self) -> &BaseType; } @@ -548,6 +588,16 @@ impl Documented for T { } } +impl ExternalDocument for T { + fn ext_doc_url(&self) -> Option<&str> { + self.base().doc_url() + } + + fn ext_doc_id(&self) -> Option<&str> { + self.base().doc_id() + } +} + /// An interface type #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -809,6 +859,12 @@ pub struct Endpoint { #[serde(skip_serializing_if = "Option::is_none")] pub doc_id: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub ext_doc_id: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub ext_doc_url: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub deprecation: Option, @@ -854,6 +910,16 @@ impl Documented for Endpoint { } } +impl ExternalDocument for Endpoint { + fn ext_doc_url(&self) -> Option<&str> { + self.ext_doc_url.as_deref() + } + + fn ext_doc_id(&self) -> Option<&str> { + self.ext_doc_id.as_deref() + } +} + #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct Privileges { diff --git a/compiler-rs/clients_schema_to_openapi/src/paths.rs b/compiler-rs/clients_schema_to_openapi/src/paths.rs index 878646970..ed7e145ce 100644 --- a/compiler-rs/clients_schema_to_openapi/src/paths.rs +++ b/compiler-rs/clients_schema_to_openapi/src/paths.rs @@ -203,8 +203,8 @@ pub fn add_endpoint( }, summary: sum_desc.summary, description: sum_desc.description, - // external_docs: tac.convert_external_docs(endpoint), - external_docs: None, // Need values that differ from client purposes + external_docs: tac.convert_external_docs(endpoint), + // external_docs: None, // Need values that differ from client purposes operation_id: None, // set in clone_operation below with operation_counter parameters, request_body: request_body.clone(), diff --git a/compiler-rs/clients_schema_to_openapi/src/schemas.rs b/compiler-rs/clients_schema_to_openapi/src/schemas.rs index 00d0c69b4..210755056 100644 --- a/compiler-rs/clients_schema_to_openapi/src/schemas.rs +++ b/compiler-rs/clients_schema_to_openapi/src/schemas.rs @@ -209,9 +209,9 @@ impl<'a> TypesAndComponents<'a> { self.for_body(&response.body) } - pub fn convert_external_docs(&self, obj: &impl clients_schema::Documented) -> Option { + pub fn convert_external_docs(&self, obj: &impl clients_schema::ExternalDocument) -> Option { // FIXME: does the model contain resolved doc_id? - obj.doc_url().map(|url| { + obj.ext_doc_url().map(|url| { let branch: &str = self .model .info diff --git a/compiler-rs/compiler-wasm-lib/pkg/compiler_wasm_lib_bg.wasm b/compiler-rs/compiler-wasm-lib/pkg/compiler_wasm_lib_bg.wasm index def8ca610b82560189c1a01fac2a7c2763ff4224..feb5be1194da4144e255d9d325c0ba73ada2ac88 100644 GIT binary patch delta 181515 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ⅈ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 delta 178060 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
(i*N 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 z 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 diff --git a/compiler-rs/openapi_to_clients_schema/src/types.rs b/compiler-rs/openapi_to_clients_schema/src/types.rs index 647d57afc..b31d89c56 100644 --- a/compiler-rs/openapi_to_clients_schema/src/types.rs +++ b/compiler-rs/openapi_to_clients_schema/src/types.rs @@ -121,7 +121,7 @@ fn generate_type_for_schema( }) } if let Some(ref docs) = data.external_docs { - base.doc_url = Some(docs.url.clone()) + base.ext_doc_url = Some(docs.ext_docs_url.clone()) } // TODO: data.readonly/writeonly -> OverloadOf? diff --git a/compiler/src/model/build-model.ts b/compiler/src/model/build-model.ts index dffbde8b7..5d9187f6c 100644 --- a/compiler/src/model/build-model.ts +++ b/compiler/src/model/build-model.ts @@ -68,6 +68,7 @@ export function compileEndpoints (): Record { description: spec.documentation.description, docUrl: spec.documentation.url, docTag: spec.docTag, + extDocUrl: spec.externalDocs?.url, // Setting these values by default should be removed // when we no longer use rest-api-spec stubs as the // source of truth for stability/visibility. diff --git a/compiler/src/model/json-spec.ts b/compiler/src/model/json-spec.ts index ff4739b30..5f2f689c8 100644 --- a/compiler/src/model/json-spec.ts +++ b/compiler/src/model/json-spec.ts @@ -62,6 +62,10 @@ export interface JsonSpec { required?: boolean } docTag?: string + externalDocs?: { + url: string + description?: string + } } export default function buildJsonSpec (): Map { diff --git a/compiler/src/model/metamodel.ts b/compiler/src/model/metamodel.ts index f67053936..9f01d7a95 100644 --- a/compiler/src/model/metamodel.ts +++ b/compiler/src/model/metamodel.ts @@ -126,6 +126,8 @@ export class Property { description?: string docUrl?: string docId?: string + extDocId?: string + extDocUrl?: string serverDefault?: boolean | string | number | string[] | number[] deprecation?: Deprecation availability?: Availabilities @@ -158,6 +160,8 @@ export abstract class BaseType { /** Link to public documentation */ docUrl?: string docId?: string + extDocId?: string + extDocUrl?: string deprecation?: Deprecation /** If this endpoint has a quirk that needs special attention, give a short explanation about it */ esQuirk?: string @@ -406,6 +410,8 @@ export class Endpoint { description: string docUrl: string docId?: string + extDocId?: string + extDocUrl?: string deprecation?: Deprecation availability: Availabilities docTag?: string diff --git a/compiler/src/model/utils.ts b/compiler/src/model/utils.ts index 60e8ab7f3..769de32bf 100644 --- a/compiler/src/model/utils.ts +++ b/compiler/src/model/utils.ts @@ -625,7 +625,7 @@ export function hoistRequestAnnotations ( request: model.Request, jsDocs: JSDoc[], mappings: Record, response: model.TypeName | null ): void { const knownRequestAnnotations = [ - 'rest_spec_name', 'behavior', 'class_serializer', 'index_privileges', 'cluster_privileges', 'doc_id', 'availability', 'doc_tag' + 'rest_spec_name', 'behavior', 'class_serializer', 'index_privileges', 'cluster_privileges', 'doc_id', 'availability', 'doc_tag', 'ext_doc_id' ] // in most of the cases the jsDocs comes in a single block, // but it can happen that the user defines multiple single line jsDoc. @@ -685,6 +685,12 @@ export function hoistRequestAnnotations ( const docUrl = docIds.find(entry => entry[0] === value.trim()) assert(jsDocs, docUrl != null, `The @doc_id '${value.trim()}' is not present in _doc_ids/table.csv`) endpoint.docUrl = docUrl[1].replace(/\r/g, '') + } else if (tag === 'ext_doc_id') { + assert(jsDocs, value.trim() !== '', `Request ${request.name.name}'s @ext_doc_id cannot be empty`) + endpoint.extDocId = value.trim() + const docUrl = docIds.find(entry => entry[0] === value.trim()) + assert(jsDocs, docUrl != null, `The @ext_doc_id '${value.trim()}' is not present in _doc_ids/table.csv`) + endpoint.extDocUrl = docUrl[1].replace(/\r/g, '') } else if (tag === 'availability') { // The @availability jsTag is different than most because it allows // multiple values within the same docstring, hence needing to parse @@ -713,7 +719,7 @@ export function hoistTypeAnnotations (type: model.TypeDefinition, jsDocs: JSDoc[ assert(jsDocs, jsDocs.length < 2, 'Use a single multiline jsDoc block instead of multiple single line blocks') const validTags = ['class_serializer', 'doc_url', 'doc_id', 'behavior', 'variants', 'variant', 'shortcut_property', - 'codegen_names', 'non_exhaustive', 'es_quirk', 'behavior_meta'] + 'codegen_names', 'non_exhaustive', 'es_quirk', 'behavior_meta', 'ext_doc_id'] const tags = parseJsDocTags(jsDocs) if (jsDocs.length === 1) { const description = jsDocs[0].getDescription() @@ -742,6 +748,12 @@ export function hoistTypeAnnotations (type: model.TypeDefinition, jsDocs: JSDoc[ const docUrl = docIds.find(entry => entry[0] === value.trim()) assert(jsDocs, docUrl != null, `The @doc_id '${value.trim()}' is not present in _doc_ids/table.csv`) type.docUrl = docUrl[1].replace(/\r/g, '') + } else if (tag === 'ext_doc_id') { + assert(jsDocs, value.trim() !== '', `Type ${type.name.namespace}.${type.name.name}'s @ext_doc_id cannot be empty`) + type.extDocId = value.trim() + const docUrl = docIds.find(entry => entry[0] === value.trim()) + assert(jsDocs, docUrl != null, `The @ext_doc_id '${value.trim()}' is not present in _doc_ids/table.csv`) + type.extDocUrl = docUrl[1].replace(/\r/g, '') } else if (tag === 'codegen_names') { type.codegenNames = parseCommaSeparated(value) assert(jsDocs, @@ -764,7 +776,7 @@ function hoistPropertyAnnotations (property: model.Property, jsDocs: JSDoc[]): v assert(jsDocs, jsDocs.length < 2, 'Use a single multiline jsDoc block instead of multiple single line blocks') const validTags = ['prop_serializer', 'doc_url', 'aliases', 'codegen_name', 'server_default', - 'variant', 'doc_id', 'es_quirk', 'availability'] + 'variant', 'doc_id', 'es_quirk', 'availability', 'ext_doc_id'] const tags = parseJsDocTags(jsDocs) if (jsDocs.length === 1) { const description = jsDocs[0].getDescription() @@ -808,6 +820,13 @@ function hoistPropertyAnnotations (property: model.Property, jsDocs: JSDoc[]): v if (docUrl != null) { property.docUrl = docUrl[1].replace(/\r/g, '') } + } else if (tag === 'ext_doc_id') { + assert(jsDocs, value.trim() !== '', `Property ${property.name}'s @ext_doc_id is cannot be empty`) + property.extDocId = value + const docUrl = docIds.find(entry => entry[0] === value) + if (docUrl != null) { + property.extDocUrl = docUrl[1].replace(/\r/g, '') + } } else if (tag === 'server_default') { assert(jsDocs, property.type.kind === 'instance_of' || property.type.kind === 'union_of' || property.type.kind === 'array_of', `Default values can only be configured for instance_of or union_of types, you are using ${property.type.kind}`) assert(jsDocs, !property.required, 'Default values can only be specified on optional properties') diff --git a/docs/doc-comments-guide.md b/docs/doc-comments-guide.md index c8174e8ef..d801c7a8d 100644 --- a/docs/doc-comments-guide.md +++ b/docs/doc-comments-guide.md @@ -58,7 +58,7 @@ export interface Request extends RequestBase { ([original source code](https://github.com/elastic/elasticsearch-specification/blob/main/specification/_global/rank_eval/RankEvalRequest.ts)) For more information about the tags in this example (and other common tags such -as `@deprecated` and `@doc_id`), refer to the [Modeling Guide](https://github.com/elastic/elasticsearch-specification/blob/main/docs/modeling-guide.md#additional-information). +as `@deprecated` and `@ext_doc_id`), refer to the [Modeling Guide](https://github.com/elastic/elasticsearch-specification/blob/main/docs/modeling-guide.md#additional-information). ## Markup language @@ -76,9 +76,9 @@ GFM also has implementations in most languages, meaning that code generators wil **Doc comments are reference material**: they should be as succinct as possible while capturing all the necessary information to use the elements they're documenting. Remember that they will often show up in small IDE autocompletion popups! -In particular, doc comments are not the right place for tutorials or examples, which should be in dedicated documentation pages. These pages can of course be linked from the doc comments. +In particular, doc comments are not the right place for tutorials or extended examples, which should be in dedicated documentation pages. To reduce the risk of broken links, use `@ext_doc_id` to implement a link to additional documentation. -API endpoints will also have a `@doc_url` JSDoc tag that links to that API's detailed documentation page. +API endpoints can also have `@doc_id` or `@doc_url` JSDoc tags that enable clients to link to the API docs, for example. ### Multi-paragraph doc comments diff --git a/docs/modeling-guide.md b/docs/modeling-guide.md index b34470daf..0a9246759 100644 --- a/docs/modeling-guide.md +++ b/docs/modeling-guide.md @@ -598,37 +598,61 @@ class Foo { } ``` -#### `@doc_url` +#### `@doc_id` -The documentation url for the parameter or definition. -If possible, use `@doc_id`. +An identifier that can be used for generating the doc url in clients. +The unique id/url pair must exist in `specification/_doc_ids/table.csv`. +NOTE: This link is *not* included in the OpenAPI output. ```ts -class Foo { - bar: string - /** @doc_url http://localhost:9200 */ - baz?: string - faz: string +/** + * @rest_spec_name api + * @doc_id foobar + */ +class Request { + ... } ``` -#### `@doc_id` +```csv +foobar,/guide/en/example +``` + +#### `@ext_doc_id` -The documentation id that can be used for generating the doc url. -You must add the id/url pair in `specification/_doc_ids/table.csv`. +An identifier for a link. +The unique id/url pair must exist in `specification/_doc_ids/table.csv`. +NOTE: This link is included in the OpenAPI output. ```ts /** - * @rest_spec_name api - * @doc_id foobar + * @variants container + * @non_exhaustive + * @ext_doc_id query-dsl */ -class Request { +export class QueryContainer { ... } ``` ```csv -foobar,/guide/en/example +query-dsl,/guide/en/example +``` + + +#### `@doc_url` + +The documentation url for the parameter or definition. +To reduce the risk of broken links, use `@doc_id` instead. +NOTE: This link is *not* included in the OpenAPI output. + +```ts +class Foo { + bar: string + /** @doc_url http://localhost:9200 */ + baz?: string + faz: string +} ``` #### `@doc_tag` diff --git a/docs/overlays/elasticsearch-shared-overlays.yaml b/docs/overlays/elasticsearch-shared-overlays.yaml index 2609c7b94..885e7ae97 100644 --- a/docs/overlays/elasticsearch-shared-overlays.yaml +++ b/docs/overlays/elasticsearch-shared-overlays.yaml @@ -240,9 +240,6 @@ actions: description: Add x-model and updated externalDocs for the QueryContainer object update: x-model: true - externalDocs: - url: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html - description: Query domain specific language (DSL) reference - target: "$.components['schemas']['_types.analysis:CharFilter'].oneOf" description: Remove existing oneOf definition for CharFilter remove: true diff --git a/output/openapi/elasticsearch-openapi.json b/output/openapi/elasticsearch-openapi.json index 9c459fd9d..aac893e7f 100644 --- a/output/openapi/elasticsearch-openapi.json +++ b/output/openapi/elasticsearch-openapi.json @@ -2084,9 +2084,6 @@ "type": "object", "properties": { "remote_cluster": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-remote-clusters.html" - }, "description": "The remote cluster containing the leader indices to match against.", "type": "string" }, @@ -7662,9 +7659,6 @@ "type": "string" }, "params": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/esql-rest.html#esql-rest-params" - }, "description": "To avoid any attempts of hacking or code injection, extract the values in a separate list of parameters. Use question mark placeholders (?) in the query string for each of the parameters.", "type": "array", "items": { @@ -16722,9 +16716,6 @@ "type": "object", "properties": { "allow_lazy_start": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-settings.html" - }, "description": "Specifies whether this job can start when there is insufficient machine\nlearning node capacity for it to be immediately assigned to a node. If\nset to `false` and a machine learning node with capacity to run the job\ncannot be immediately found, the API returns an error. If set to `true`,\nthe API does not return an error; the job waits in the `starting` state\nuntil sufficient machine learning node capacity is available. This\nbehavior is also affected by the cluster-wide\n`xpack.ml.max_lazy_ml_nodes` setting.", "type": "boolean" }, @@ -21281,9 +21272,6 @@ "type": "string" }, "model_memory_limit": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-settings.html" - }, "description": "The approximate maximum amount of memory resources that are permitted for\nanalytical processing. If your `elasticsearch.yml` file contains an\n`xpack.ml.max_model_memory_limit` setting, an error occurs when you try\nto create data frame analytics jobs that have `model_memory_limit` values\ngreater than that setting.", "type": "string" }, @@ -21292,9 +21280,6 @@ "type": "number" }, "allow_lazy_start": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-settings.html" - }, "description": "Specifies whether this job can start when there is insufficient machine\nlearning node capacity for it to be immediately assigned to a node.", "type": "boolean" } @@ -21687,9 +21672,6 @@ "type": "object", "properties": { "allow_lazy_open": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-settings.html" - }, "description": "Advanced configuration option. Specifies whether this job can open when\nthere is insufficient machine learning node capacity for it to be\nimmediately assigned to a node. If `false` and a machine learning node\nwith capacity to run the job cannot immediately be found, the open\nanomaly detection jobs API returns an error. However, this is also\nsubject to the cluster-wide `xpack.ml.max_lazy_ml_nodes` setting. If this\noption is set to `true`, the open anomaly detection jobs API does not\nreturn an error and the job waits in the opening state until sufficient\nmachine learning node capacity is available.", "type": "boolean" }, @@ -21723,16 +21705,10 @@ "$ref": "#/components/schemas/_types:Duration" }, "daily_model_snapshot_retention_after_days": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/machine-learning/current/ml-ad-run-jobs.html#ml-ad-model-snapshots" - }, "description": "Advanced configuration option, which affects the automatic removal of old\nmodel snapshots for this job. It specifies a period of time (in days)\nafter which only the first snapshot per day is retained. This period is\nrelative to the timestamp of the most recent snapshot for this job. Valid\nvalues range from 0 to `model_snapshot_retention_days`. For jobs created\nbefore version 7.8.0, the default value matches\n`model_snapshot_retention_days`.", "type": "number" }, "model_snapshot_retention_days": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/machine-learning/current/ml-ad-run-jobs.html#ml-ad-model-snapshots" - }, "description": "Advanced configuration option, which affects the automatic removal of old\nmodel snapshots for this job. It specifies the maximum period of time (in\ndays) that snapshots are retained. This period is relative to the\ntimestamp of the most recent snapshot for this job.", "type": "number" }, @@ -29958,9 +29934,6 @@ "type": "object", "properties": { "role_descriptors": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-role.html" - }, "description": "An array of role descriptors for this API key. This parameter is optional. When it is not specified or is an empty array, then the API key will have a point in time snapshot of permissions of the authenticated user. If you supply role descriptors then the resultant permissions would be an intersection of API keys permissions and authenticated user’s permissions thereby limiting the access scope for API keys. The structure of role descriptor is the same as the request for create role API. For more details, see create or update roles API.", "type": "object", "additionalProperties": { @@ -35573,9 +35546,6 @@ ] }, "_types:Duration": { - "externalDocs": { - "url": "https://github.com/elastic/elasticsearch/blob/current/libs/core/src/main/java/org/elasticsearch/core/TimeValue.java" - }, "description": "A duration. Units can be `nanos`, `micros`, `ms` (milliseconds), `s` (seconds), `m` (minutes), `h` (hours) and\n`d` (days). Also accepts \"0\" without a unit and \"-1\" to indicate an unspecified value.", "oneOf": [ { @@ -40452,9 +40422,6 @@ ] }, "_global.search._types:Context": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-mlt-query.html#_document_input_parameters" - }, "description": "Text or location that we want similar documents for or a lookup to a document's field for the text.", "oneOf": [ { @@ -41086,9 +41053,6 @@ "$ref": "#/components/schemas/_types.query_dsl:FunctionScoreQuery" }, "fuzzy": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-fuzzy-query.html" - }, "description": "Returns documents that contain terms similar to the search term, as measured by a Levenshtein edit distance.", "type": "object", "additionalProperties": { @@ -41119,9 +41083,6 @@ "$ref": "#/components/schemas/_types.query_dsl:IdsQuery" }, "intervals": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-intervals-query.html" - }, "description": "Returns documents based on the order and proximity of matching terms.", "type": "object", "additionalProperties": { @@ -41134,9 +41095,6 @@ "$ref": "#/components/schemas/_types:KnnQuery" }, "match": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html" - }, "description": "Returns documents that match a provided text, number, date or boolean value.\nThe provided text is analyzed before matching.", "type": "object", "additionalProperties": { @@ -41149,9 +41107,6 @@ "$ref": "#/components/schemas/_types.query_dsl:MatchAllQuery" }, "match_bool_prefix": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-bool-prefix-query.html" - }, "description": "Analyzes its input and constructs a `bool` query from the terms.\nEach term except the last is used in a `term` query.\nThe last term is used in a prefix query.", "type": "object", "additionalProperties": { @@ -41164,9 +41119,6 @@ "$ref": "#/components/schemas/_types.query_dsl:MatchNoneQuery" }, "match_phrase": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query-phrase.html" - }, "description": "Analyzes the text and creates a phrase query out of the analyzed text.", "type": "object", "additionalProperties": { @@ -41176,9 +41128,6 @@ "maxProperties": 1 }, "match_phrase_prefix": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query-phrase-prefix.html" - }, "description": "Returns documents that contain the words of a provided text, in the same order as provided.\nThe last term of the provided text is treated as a prefix, matching any words that begin with that term.", "type": "object", "additionalProperties": { @@ -41206,9 +41155,6 @@ "$ref": "#/components/schemas/_types.query_dsl:PinnedQuery" }, "prefix": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-prefix-query.html" - }, "description": "Returns documents that contain a specific prefix in a provided field.", "type": "object", "additionalProperties": { @@ -41221,9 +41167,6 @@ "$ref": "#/components/schemas/_types.query_dsl:QueryStringQuery" }, "range": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html" - }, "description": "Returns documents that contain terms within a provided range.", "type": "object", "additionalProperties": { @@ -41236,9 +41179,6 @@ "$ref": "#/components/schemas/_types.query_dsl:RankFeatureQuery" }, "regexp": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-regexp-query.html" - }, "description": "Returns documents that contain terms matching a regular expression.", "type": "object", "additionalProperties": { @@ -41287,9 +41227,6 @@ "$ref": "#/components/schemas/_types.query_dsl:SpanOrQuery" }, "span_term": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-span-term-query.html" - }, "description": "Matches spans containing a term.", "type": "object", "additionalProperties": { @@ -41305,9 +41242,6 @@ "$ref": "#/components/schemas/_types.query_dsl:SparseVectorQuery" }, "term": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html" - }, "description": "Returns documents that contain an exact term in a provided field.\nTo return a document, the query term must exactly match the queried field's value, including whitespace and capitalization.", "type": "object", "additionalProperties": { @@ -41320,9 +41254,6 @@ "$ref": "#/components/schemas/_types.query_dsl:TermsQuery" }, "terms_set": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-terms-set-query.html" - }, "description": "Returns documents that contain a minimum number of exact terms in a provided field.\nTo return a document, a required number of terms must exactly match the field values, including whitespace and capitalization.", "type": "object", "additionalProperties": { @@ -41333,9 +41264,6 @@ }, "text_expansion": { "deprecated": true, - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-text-expansion-query.html" - }, "description": "Uses a natural language processing model to convert the query text into a list of token-weight pairs which are then used in a query against a sparse vector or rank features field.", "type": "object", "additionalProperties": { @@ -41355,9 +41283,6 @@ "maxProperties": 1 }, "wildcard": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-wildcard-query.html" - }, "description": "Returns documents that contain terms matching a wildcard pattern.", "type": "object", "additionalProperties": { @@ -41448,9 +41373,6 @@ ] }, "_types:MinimumShouldMatch": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-minimum-should-match.html" - }, "description": "The minimum number of terms that should match as integer, percentage or range", "oneOf": [ { @@ -42131,15 +42053,9 @@ ] }, "_types:MultiTermQueryRewrite": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-term-rewrite.html" - }, "type": "string" }, "_types:Fuzziness": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/common-options.html#fuzziness" - }, "oneOf": [ { "type": "string" @@ -42627,9 +42543,6 @@ ] }, "_types:SortOptions": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/sort-search-results.html" - }, "type": "object", "properties": { "_score": { @@ -42996,9 +42909,6 @@ "type": "object", "properties": { "analyzer": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html" - }, "description": "Analyzer used to normalize the term.", "type": "string" }, @@ -43029,9 +42939,6 @@ "type": "object", "properties": { "analyzer": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html" - }, "description": "Analyzer used to analyze terms in the query.", "type": "string" }, @@ -43062,9 +42969,6 @@ "type": "object", "properties": { "analyzer": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html" - }, "description": "Analyzer used to analyze the `prefix`.", "type": "string" }, @@ -43189,9 +43093,6 @@ "type": "object", "properties": { "analyzer": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html" - }, "description": "Analyzer used to convert the text in the query value into tokens.", "type": "string" }, @@ -43281,9 +43182,6 @@ "type": "object", "properties": { "analyzer": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html" - }, "description": "Analyzer used to convert the text in the query value into tokens.", "type": "string" }, @@ -43341,9 +43239,6 @@ "type": "object", "properties": { "analyzer": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html" - }, "description": "Analyzer used to convert the text in the query value into tokens.", "type": "string" }, @@ -43374,9 +43269,6 @@ "type": "object", "properties": { "analyzer": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html" - }, "description": "Analyzer used to convert text in the query value into tokens.", "type": "string" }, @@ -43411,9 +43303,6 @@ "type": "object", "properties": { "analyzer": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html" - }, "description": "The analyzer that is used to analyze the free form text.\nDefaults to the analyzer associated with the first field in fields.", "type": "string" }, @@ -43511,9 +43400,6 @@ ] }, "_types.query_dsl:Like": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-mlt-query.html#_document_input_parameters" - }, "description": "Text that we want similar documents for or a lookup to a document's field for the text.", "oneOf": [ { @@ -43593,9 +43479,6 @@ "type": "object", "properties": { "analyzer": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html" - }, "description": "Analyzer used to convert the text in the query value into tokens.", "type": "string" }, @@ -43874,9 +43757,6 @@ "type": "boolean" }, "analyzer": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html" - }, "description": "Analyzer used to convert text in the query string into tokens.", "type": "string" }, @@ -44011,9 +43891,6 @@ ] }, "_types:DateFormat": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-date-format.html" - }, "type": "string" }, "_types.query_dsl:RangeQueryBase": { @@ -44393,9 +44270,6 @@ "type": "boolean" }, "flags": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/regexp-syntax.html" - }, "description": "Enables optional operators for the regular expression.", "type": "string" }, @@ -44407,9 +44281,6 @@ "$ref": "#/components/schemas/_types:MultiTermQueryRewrite" }, "value": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/regexp-syntax.html" - }, "description": "Regular expression for terms you wish to find in the provided field.", "type": "string" } @@ -44542,9 +44413,6 @@ "type": "object", "properties": { "analyzer": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html" - }, "description": "Analyzer used to convert text in the query string into tokens.", "type": "string" }, @@ -44604,9 +44472,6 @@ ] }, "_types.query_dsl:SimpleQueryStringFlags": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html#supported-flags" - }, "description": "Query flags can be either a single flag or a combination of flags, e.g. `OR|AND|PREFIX`", "allOf": [ { @@ -46691,9 +46556,6 @@ "$ref": "#/components/schemas/_types:Field" }, "num_top_feature_importance_values": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/machine-learning/current/ml-feature-importance.html" - }, "description": "Specifies the maximum number of feature importance values per document.", "type": "number" } @@ -46707,9 +46569,6 @@ "type": "number" }, "num_top_feature_importance_values": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/machine-learning/current/ml-feature-importance.html" - }, "description": "Specifies the maximum number of feature importance values per document.", "type": "number" }, @@ -48308,9 +48167,6 @@ } }, "format": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-date-format.html" - }, "description": "A custom format for `date` type runtime fields.", "type": "string" }, @@ -48444,9 +48300,6 @@ ] }, "_types:NodeName": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html" - }, "type": "string" }, "autoscaling.get_autoscaling_capacity:AutoscalingDecider": { @@ -48974,9 +48827,6 @@ ] }, "_types:ByteSize": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/api-conventions.html#byte-units" - }, "oneOf": [ { "type": "number" @@ -57190,9 +57040,6 @@ ] }, "_types.analysis:Normalizer": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-normalizers.html" - }, "discriminator": { "propertyName": "type" }, @@ -58722,9 +58569,6 @@ "type": "object", "properties": { "meta": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-meta-field.html" - }, "description": "Metadata about the field.", "type": "object", "additionalProperties": { @@ -59067,9 +58911,6 @@ ] }, "fields": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html" - }, "description": "Multi-fields allow the same string value to be indexed in multiple ways for different purposes, such as one\nfield for search and a multi-field for sorting and aggregations, or the same string value analyzed by different analyzers.", "type": "object", "additionalProperties": { @@ -59077,9 +58918,6 @@ } }, "meta": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-meta-field.html" - }, "description": "Metadata about the field.", "type": "object", "additionalProperties": { @@ -61473,9 +61311,6 @@ } }, "_types:DataStreamName": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-data-stream.html#indices-create-data-stream-api-path-params" - }, "type": "string" }, "indices._types:DataStreamLifecycle": { @@ -61852,9 +61687,6 @@ "$ref": "#/components/schemas/cluster.stats:FieldTypesMappings" }, "versions": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analyzer-anatomy.html" - }, "description": "Contains statistics about analyzers and analyzer components used in selected nodes.", "type": "array", "items": { @@ -62488,9 +62320,6 @@ "$ref": "#/components/schemas/cluster.stats:ClusterNodeCount" }, "discovery_types": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-discovery-hosts-providers.html" - }, "description": "Contains statistics about the discovery types used by selected nodes.", "type": "object", "additionalProperties": { @@ -64512,9 +64341,6 @@ } }, "sequences": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-syntax.html#eql-sequences" - }, "description": "Contains event sequences matching the query. Each object represents a matching sequence. This parameter is only returned for EQL queries containing a sequence.", "type": "array", "items": { @@ -64537,9 +64363,6 @@ "type": "object" }, "missing": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-syntax.html#eql-missing-events" - }, "description": "Set to `true` for events in a timespan-constrained sequence that do not meet a given condition.", "type": "boolean" }, @@ -64570,9 +64393,6 @@ } }, "join_keys": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-syntax.html#eql-sequences" - }, "description": "Shared field values used to constrain matches in the sequence. These are defined using the by keyword in the EQL query syntax.", "type": "array", "items": { @@ -64761,9 +64581,6 @@ "type": "string" }, "metadata_field": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-fields.html" - }, "description": "Whether this field is registered as a metadata field.", "type": "boolean" }, @@ -65344,9 +65161,6 @@ "$ref": "#/components/schemas/_types:Duration" }, "use_significance": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-significantterms-aggregation.html" - }, "description": "Filters associated terms so only those that are significantly associated with your query are included.", "type": "boolean" } @@ -71426,9 +71240,6 @@ "type": "string" }, "pipeline": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/logstash/current/configuration-file-structure.html" - }, "description": "Configuration for the pipeline.", "type": "string" }, @@ -71464,9 +71275,6 @@ "type": "object", "properties": { "pipeline.workers": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/logstash/current/logstash-settings-file.html" - }, "description": "The number of workers that will, in parallel, execute the filter and output stages of the pipeline.", "type": "number" }, @@ -71479,9 +71287,6 @@ "type": "number" }, "queue.type": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/logstash/current/logstash-settings-file.html" - }, "description": "The internal queuing model to use for event buffering.", "type": "string" }, @@ -72060,9 +71865,6 @@ "type": "object", "properties": { "mse": { - "externalDocs": { - "url": "https://en.wikipedia.org/wiki/Mean_squared_error" - }, "description": "Average squared difference between the predicted values and the actual (ground truth) value. For more information, read this wiki article.", "type": "object", "additionalProperties": { @@ -72076,9 +71878,6 @@ "$ref": "#/components/schemas/ml._types:DataframeEvaluationRegressionMetricsHuber" }, "r_squared": { - "externalDocs": { - "url": "https://en.wikipedia.org/wiki/Coefficient_of_determination" - }, "description": "Proportion of the variance in the dependent variable that is predictable from the independent variables.", "type": "object", "additionalProperties": { @@ -75294,9 +75093,6 @@ "type": "object", "properties": { "absolute_importance": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/machine-learning/current/dfa-regression-lossfunction.html" - }, "description": "A positive number showing how much the parameter influences the variation of the loss function. For hyperparameters with values that are not specified by the user but tuned during hyperparameter optimization.", "type": "number" }, @@ -75435,9 +75231,6 @@ "$ref": "#/components/schemas/ml._types:TrainedModelInferenceStats" }, "ingest": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-stats.html" - }, "description": "A collection of ingest stats for the model across all nodes.\nThe values are summations of the individual node statistics.\nThe format matches the ingest section in the nodes stats API.", "type": "object", "additionalProperties": { @@ -75680,9 +75473,6 @@ "type": "object", "properties": { "cache_miss_count": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-settings.html" - }, "description": "The number of times the model was loaded for inference and was not retrieved from the cache.\nIf this number is close to the `inference_count`, the cache is not being appropriately used.\nThis can be solved by increasing the cache size or its time-to-live (TTL).\nRefer to general machine learning settings for the appropriate settings.", "type": "number" }, @@ -76239,9 +76029,6 @@ "type": "object", "properties": { "allow_lazy_open": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-job.html" - }, "description": "Advanced configuration option. Specifies whether this job can open when there is insufficient machine learning node capacity for it to be immediately assigned to a node.", "type": "boolean" }, @@ -76409,9 +76196,6 @@ "$ref": "#/components/schemas/_types:Field" }, "function": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/machine-learning/current/ml-functions.html" - }, "description": "The analysis function that is used.\nFor example, `count`, `rare`, `mean`, `min`, `max`, and `sum`.", "type": "string" }, @@ -77284,9 +77068,6 @@ } }, "total_indexing_buffer": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indexing-buffer.html" - }, "description": "Total heap allowed to be used to hold recently indexed documents before they must be written to disk. This size is a shared pool across all shards on this node, and is controlled by Indexing Buffer settings.", "type": "number" }, @@ -79839,9 +79620,6 @@ "type": "object", "properties": { "normalize": { - "externalDocs": { - "url": "https://en.wikipedia.org/wiki/Discounted_cumulative_gain#Normalized_DCG" - }, "description": "If set to true, this metric will calculate the Normalized DCG.", "type": "boolean" } @@ -81339,9 +81117,6 @@ "$ref": "#/components/schemas/_types:Metadata" }, "run_as": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/run-as-privilege.html" - }, "description": "A list of users that the API keys can impersonate. *Note*: in Serverless, the run-as feature is disabled. For API compatibility, you can still specify an empty `run_as` field, but a non-empty list will be rejected.", "type": "array", "items": { @@ -81969,9 +81744,6 @@ "$ref": "#/components/schemas/_types:Metadata" }, "run_as": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/run-as-privilege.html" - }, "description": "A list of users that the API keys can impersonate.", "type": "array", "items": { @@ -82150,9 +81922,6 @@ "type": "object", "properties": { "field_security": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/field-and-document-access-control.html" - }, "description": "The document fields that the owners of the role have read access to.", "type": "array", "items": { @@ -82470,9 +82239,6 @@ "$ref": "#/components/schemas/_types.query_dsl:IdsQuery" }, "match": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html" - }, "description": "Returns documents that match a provided text, number, date or boolean value.\nThe provided text is analyzed before matching.", "type": "object", "additionalProperties": { @@ -82485,9 +82251,6 @@ "$ref": "#/components/schemas/_types.query_dsl:MatchAllQuery" }, "prefix": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-prefix-query.html" - }, "description": "Returns documents that contain a specific prefix in a provided field.", "type": "object", "additionalProperties": { @@ -82497,9 +82260,6 @@ "maxProperties": 1 }, "range": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html" - }, "description": "Returns documents that contain terms within a provided range.", "type": "object", "additionalProperties": { @@ -82512,9 +82272,6 @@ "$ref": "#/components/schemas/_types.query_dsl:SimpleQueryStringQuery" }, "term": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html" - }, "description": "Returns documents that contain an exact term in a provided field.\nTo return a document, the query term must exactly match the queried field's value, including whitespace and capitalization.", "type": "object", "additionalProperties": { @@ -82527,9 +82284,6 @@ "$ref": "#/components/schemas/_types.query_dsl:TermsQuery" }, "wildcard": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-wildcard-query.html" - }, "description": "Returns documents that contain terms matching a wildcard pattern.", "type": "object", "additionalProperties": { @@ -82642,9 +82396,6 @@ "$ref": "#/components/schemas/_types.query_dsl:IdsQuery" }, "match": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html" - }, "description": "Returns roles that match a provided text, number, date or boolean value.\nThe provided text is analyzed before matching.", "type": "object", "additionalProperties": { @@ -82657,9 +82408,6 @@ "$ref": "#/components/schemas/_types.query_dsl:MatchAllQuery" }, "prefix": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-prefix-query.html" - }, "description": "Returns roles that contain a specific prefix in a provided field.", "type": "object", "additionalProperties": { @@ -82669,9 +82417,6 @@ "maxProperties": 1 }, "range": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html" - }, "description": "Returns roles that contain terms within a provided range.", "type": "object", "additionalProperties": { @@ -82684,9 +82429,6 @@ "$ref": "#/components/schemas/_types.query_dsl:SimpleQueryStringQuery" }, "term": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html" - }, "description": "Returns roles that contain an exact term in a provided field.\nTo return a document, the query term must exactly match the queried field's value, including whitespace and capitalization.", "type": "object", "additionalProperties": { @@ -82699,9 +82441,6 @@ "$ref": "#/components/schemas/_types.query_dsl:TermsQuery" }, "wildcard": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-wildcard-query.html" - }, "description": "Returns roles that contain terms matching a wildcard pattern.", "type": "object", "additionalProperties": { @@ -82749,9 +82488,6 @@ "$ref": "#/components/schemas/_types.query_dsl:ExistsQuery" }, "match": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html" - }, "description": "Returns users that match a provided text, number, date or boolean value.\nThe provided text is analyzed before matching.", "type": "object", "additionalProperties": { @@ -82764,9 +82500,6 @@ "$ref": "#/components/schemas/_types.query_dsl:MatchAllQuery" }, "prefix": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-prefix-query.html" - }, "description": "Returns users that contain a specific prefix in a provided field.", "type": "object", "additionalProperties": { @@ -82776,9 +82509,6 @@ "maxProperties": 1 }, "range": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html" - }, "description": "Returns users that contain terms within a provided range.", "type": "object", "additionalProperties": { @@ -82791,9 +82521,6 @@ "$ref": "#/components/schemas/_types.query_dsl:SimpleQueryStringQuery" }, "term": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html" - }, "description": "Returns users that contain an exact term in a provided field.\nTo return a document, the query term must exactly match the queried field's value, including whitespace and capitalization.", "type": "object", "additionalProperties": { @@ -82806,9 +82533,6 @@ "$ref": "#/components/schemas/_types.query_dsl:TermsQuery" }, "wildcard": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-wildcard-query.html" - }, "description": "Returns users that contain terms matching a wildcard pattern.", "type": "object", "additionalProperties": { @@ -83133,9 +82857,6 @@ ] }, "watcher._types:CronExpression": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/api-conventions.html#api-cron-expressions" - }, "type": "string" }, "slm._types:Statistics": { @@ -101320,9 +101041,6 @@ "type": "object", "properties": { "query": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-syntax.html" - }, "description": "EQL query you wish to run.", "type": "string" }, @@ -101640,9 +101358,6 @@ "type": "object", "properties": { "analyzer": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-analyzers.html" - }, "description": "The name of the analyzer that should be applied to the provided `text`.\nThis could be a built-in analyzer, or an analyzer that’s been configured in the index.", "type": "string" }, @@ -101654,9 +101369,6 @@ } }, "char_filter": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-charfilters.html" - }, "description": "Array of character filters used to preprocess characters before the tokenizer.", "type": "array", "items": { @@ -101671,9 +101383,6 @@ "$ref": "#/components/schemas/_types:Field" }, "filter": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-tokenfilters.html" - }, "description": "Array of token filters used to apply after the tokenizer.", "type": "array", "items": { @@ -101681,9 +101390,6 @@ } }, "normalizer": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-normalizers.html" - }, "description": "Normalizer to use to convert text into a single token.", "type": "string" }, @@ -101712,9 +101418,6 @@ } }, "settings": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules.html#index-modules-settings" - }, "description": "Configuration options for the target index.", "type": "object", "additionalProperties": { @@ -102279,9 +101982,6 @@ "type": "string" }, "model_memory_limit": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-settings.html" - }, "description": "The approximate maximum amount of memory resources that are permitted for\nanalytical processing. If your `elasticsearch.yml` file contains an\n`xpack.ml.max_model_memory_limit` setting, an error occurs when you try to\ncreate data frame analytics jobs that have `model_memory_limit` values\ngreater than that setting.", "type": "string" }, @@ -102293,9 +101993,6 @@ "$ref": "#/components/schemas/ml._types:DataframeAnalysisAnalyzedFields" }, "allow_lazy_start": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-settings.html" - }, "description": "Specifies whether this job can start when there is insufficient machine\nlearning node capacity for it to be immediately assigned to a node.", "type": "boolean" } @@ -103095,9 +102792,6 @@ "$ref": "#/components/schemas/_types:Name" }, "role_descriptors": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-role.html" - }, "description": "An array of role descriptors for this API key. This parameter is optional. When it is not specified or is an empty array, then the API key will have a point in time snapshot of permissions of the authenticated user. If you supply role descriptors then the resultant permissions would be an intersection of API keys permissions and authenticated user’s permissions thereby limiting the access scope for API keys. The structure of role descriptor is the same as the request for create role API. For more details, see create or update roles API.", "type": "object", "additionalProperties": { @@ -103231,9 +102925,6 @@ "$ref": "#/components/schemas/_types:Metadata" }, "run_as": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/run-as-privilege.html" - }, "description": "A list of users that the owners of this role can impersonate. *Note*: in Serverless, the run-as feature is disabled. For API compatibility, you can still specify an empty `run_as` field, but a non-empty list will be rejected.", "type": "array", "items": { diff --git a/output/openapi/elasticsearch-serverless-openapi.json b/output/openapi/elasticsearch-serverless-openapi.json index 75a117bd9..8d90f4b34 100644 --- a/output/openapi/elasticsearch-serverless-openapi.json +++ b/output/openapi/elasticsearch-serverless-openapi.json @@ -5038,9 +5038,6 @@ "type": "string" }, "params": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/esql-rest.html#esql-rest-params" - }, "description": "To avoid any attempts of hacking or code injection, extract the values in a separate list of parameters. Use question mark placeholders (?) in the query string for each of the parameters.", "type": "array", "items": { @@ -10130,9 +10127,6 @@ "type": "object", "properties": { "allow_lazy_start": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-settings.html" - }, "description": "Specifies whether this job can start when there is insufficient machine\nlearning node capacity for it to be immediately assigned to a node. If\nset to `false` and a machine learning node with capacity to run the job\ncannot be immediately found, the API returns an error. If set to `true`,\nthe API does not return an error; the job waits in the `starting` state\nuntil sufficient machine learning node capacity is available. This\nbehavior is also affected by the cluster-wide\n`xpack.ml.max_lazy_ml_nodes` setting.", "type": "boolean" }, @@ -13221,9 +13215,6 @@ "type": "string" }, "model_memory_limit": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-settings.html" - }, "description": "The approximate maximum amount of memory resources that are permitted for\nanalytical processing. If your `elasticsearch.yml` file contains an\n`xpack.ml.max_model_memory_limit` setting, an error occurs when you try\nto create data frame analytics jobs that have `model_memory_limit` values\ngreater than that setting.", "type": "string" }, @@ -13232,9 +13223,6 @@ "type": "number" }, "allow_lazy_start": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-settings.html" - }, "description": "Specifies whether this job can start when there is insufficient machine\nlearning node capacity for it to be immediately assigned to a node.", "type": "boolean" } @@ -13627,9 +13615,6 @@ "type": "object", "properties": { "allow_lazy_open": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-settings.html" - }, "description": "Advanced configuration option. Specifies whether this job can open when\nthere is insufficient machine learning node capacity for it to be\nimmediately assigned to a node. If `false` and a machine learning node\nwith capacity to run the job cannot immediately be found, the open\nanomaly detection jobs API returns an error. However, this is also\nsubject to the cluster-wide `xpack.ml.max_lazy_ml_nodes` setting. If this\noption is set to `true`, the open anomaly detection jobs API does not\nreturn an error and the job waits in the opening state until sufficient\nmachine learning node capacity is available.", "type": "boolean" }, @@ -13663,16 +13648,10 @@ "$ref": "#/components/schemas/_types:Duration" }, "daily_model_snapshot_retention_after_days": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/machine-learning/current/ml-ad-run-jobs.html#ml-ad-model-snapshots" - }, "description": "Advanced configuration option, which affects the automatic removal of old\nmodel snapshots for this job. It specifies a period of time (in days)\nafter which only the first snapshot per day is retained. This period is\nrelative to the timestamp of the most recent snapshot for this job. Valid\nvalues range from 0 to `model_snapshot_retention_days`. For jobs created\nbefore version 7.8.0, the default value matches\n`model_snapshot_retention_days`.", "type": "number" }, "model_snapshot_retention_days": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/machine-learning/current/ml-ad-run-jobs.html#ml-ad-model-snapshots" - }, "description": "Advanced configuration option, which affects the automatic removal of old\nmodel snapshots for this job. It specifies the maximum period of time (in\ndays) that snapshots are retained. This period is relative to the\ntimestamp of the most recent snapshot for this job.", "type": "number" }, @@ -17274,9 +17253,6 @@ "type": "object", "properties": { "role_descriptors": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-role.html" - }, "description": "An array of role descriptors for this API key. This parameter is optional. When it is not specified or is an empty array, then the API key will have a point in time snapshot of permissions of the authenticated user. If you supply role descriptors then the resultant permissions would be an intersection of API keys permissions and authenticated user’s permissions thereby limiting the access scope for API keys. The structure of role descriptor is the same as the request for create role API. For more details, see create or update roles API.", "type": "object", "additionalProperties": { @@ -19853,9 +19829,6 @@ ] }, "_types:Duration": { - "externalDocs": { - "url": "https://github.com/elastic/elasticsearch/blob/current/libs/core/src/main/java/org/elasticsearch/core/TimeValue.java" - }, "description": "A duration. Units can be `nanos`, `micros`, `ms` (milliseconds), `s` (seconds), `m` (minutes), `h` (hours) and\n`d` (days). Also accepts \"0\" without a unit and \"-1\" to indicate an unspecified value.", "oneOf": [ { @@ -24732,9 +24705,6 @@ ] }, "_global.search._types:Context": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-mlt-query.html#_document_input_parameters" - }, "description": "Text or location that we want similar documents for or a lookup to a document's field for the text.", "oneOf": [ { @@ -25363,9 +25333,6 @@ "$ref": "#/components/schemas/_types.query_dsl:FunctionScoreQuery" }, "fuzzy": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-fuzzy-query.html" - }, "description": "Returns documents that contain terms similar to the search term, as measured by a Levenshtein edit distance.", "type": "object", "additionalProperties": { @@ -25396,9 +25363,6 @@ "$ref": "#/components/schemas/_types.query_dsl:IdsQuery" }, "intervals": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-intervals-query.html" - }, "description": "Returns documents based on the order and proximity of matching terms.", "type": "object", "additionalProperties": { @@ -25411,9 +25375,6 @@ "$ref": "#/components/schemas/_types:KnnQuery" }, "match": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html" - }, "description": "Returns documents that match a provided text, number, date or boolean value.\nThe provided text is analyzed before matching.", "type": "object", "additionalProperties": { @@ -25426,9 +25387,6 @@ "$ref": "#/components/schemas/_types.query_dsl:MatchAllQuery" }, "match_bool_prefix": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-bool-prefix-query.html" - }, "description": "Analyzes its input and constructs a `bool` query from the terms.\nEach term except the last is used in a `term` query.\nThe last term is used in a prefix query.", "type": "object", "additionalProperties": { @@ -25441,9 +25399,6 @@ "$ref": "#/components/schemas/_types.query_dsl:MatchNoneQuery" }, "match_phrase": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query-phrase.html" - }, "description": "Analyzes the text and creates a phrase query out of the analyzed text.", "type": "object", "additionalProperties": { @@ -25453,9 +25408,6 @@ "maxProperties": 1 }, "match_phrase_prefix": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query-phrase-prefix.html" - }, "description": "Returns documents that contain the words of a provided text, in the same order as provided.\nThe last term of the provided text is treated as a prefix, matching any words that begin with that term.", "type": "object", "additionalProperties": { @@ -25483,9 +25435,6 @@ "$ref": "#/components/schemas/_types.query_dsl:PinnedQuery" }, "prefix": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-prefix-query.html" - }, "description": "Returns documents that contain a specific prefix in a provided field.", "type": "object", "additionalProperties": { @@ -25498,9 +25447,6 @@ "$ref": "#/components/schemas/_types.query_dsl:QueryStringQuery" }, "range": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html" - }, "description": "Returns documents that contain terms within a provided range.", "type": "object", "additionalProperties": { @@ -25513,9 +25459,6 @@ "$ref": "#/components/schemas/_types.query_dsl:RankFeatureQuery" }, "regexp": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-regexp-query.html" - }, "description": "Returns documents that contain terms matching a regular expression.", "type": "object", "additionalProperties": { @@ -25564,9 +25507,6 @@ "$ref": "#/components/schemas/_types.query_dsl:SpanOrQuery" }, "span_term": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-span-term-query.html" - }, "description": "Matches spans containing a term.", "type": "object", "additionalProperties": { @@ -25582,9 +25522,6 @@ "$ref": "#/components/schemas/_types.query_dsl:SparseVectorQuery" }, "term": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html" - }, "description": "Returns documents that contain an exact term in a provided field.\nTo return a document, the query term must exactly match the queried field's value, including whitespace and capitalization.", "type": "object", "additionalProperties": { @@ -25597,9 +25534,6 @@ "$ref": "#/components/schemas/_types.query_dsl:TermsQuery" }, "terms_set": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-terms-set-query.html" - }, "description": "Returns documents that contain a minimum number of exact terms in a provided field.\nTo return a document, a required number of terms must exactly match the field values, including whitespace and capitalization.", "type": "object", "additionalProperties": { @@ -25610,9 +25544,6 @@ }, "text_expansion": { "deprecated": true, - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-text-expansion-query.html" - }, "description": "Uses a natural language processing model to convert the query text into a list of token-weight pairs which are then used in a query against a sparse vector or rank features field.", "type": "object", "additionalProperties": { @@ -25632,9 +25563,6 @@ "maxProperties": 1 }, "wildcard": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-wildcard-query.html" - }, "description": "Returns documents that contain terms matching a wildcard pattern.", "type": "object", "additionalProperties": { @@ -25725,9 +25653,6 @@ ] }, "_types:MinimumShouldMatch": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-minimum-should-match.html" - }, "description": "The minimum number of terms that should match as integer, percentage or range", "oneOf": [ { @@ -26408,15 +26333,9 @@ ] }, "_types:MultiTermQueryRewrite": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-term-rewrite.html" - }, "type": "string" }, "_types:Fuzziness": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/common-options.html#fuzziness" - }, "oneOf": [ { "type": "string" @@ -26904,9 +26823,6 @@ ] }, "_types:SortOptions": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/sort-search-results.html" - }, "type": "object", "properties": { "_score": { @@ -27273,9 +27189,6 @@ "type": "object", "properties": { "analyzer": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html" - }, "description": "Analyzer used to normalize the term.", "type": "string" }, @@ -27306,9 +27219,6 @@ "type": "object", "properties": { "analyzer": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html" - }, "description": "Analyzer used to analyze terms in the query.", "type": "string" }, @@ -27339,9 +27249,6 @@ "type": "object", "properties": { "analyzer": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html" - }, "description": "Analyzer used to analyze the `prefix`.", "type": "string" }, @@ -27466,9 +27373,6 @@ "type": "object", "properties": { "analyzer": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html" - }, "description": "Analyzer used to convert the text in the query value into tokens.", "type": "string" }, @@ -27558,9 +27462,6 @@ "type": "object", "properties": { "analyzer": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html" - }, "description": "Analyzer used to convert the text in the query value into tokens.", "type": "string" }, @@ -27618,9 +27519,6 @@ "type": "object", "properties": { "analyzer": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html" - }, "description": "Analyzer used to convert the text in the query value into tokens.", "type": "string" }, @@ -27651,9 +27549,6 @@ "type": "object", "properties": { "analyzer": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html" - }, "description": "Analyzer used to convert text in the query value into tokens.", "type": "string" }, @@ -27688,9 +27583,6 @@ "type": "object", "properties": { "analyzer": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html" - }, "description": "The analyzer that is used to analyze the free form text.\nDefaults to the analyzer associated with the first field in fields.", "type": "string" }, @@ -27788,9 +27680,6 @@ ] }, "_types.query_dsl:Like": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-mlt-query.html#_document_input_parameters" - }, "description": "Text that we want similar documents for or a lookup to a document's field for the text.", "oneOf": [ { @@ -27870,9 +27759,6 @@ "type": "object", "properties": { "analyzer": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html" - }, "description": "Analyzer used to convert the text in the query value into tokens.", "type": "string" }, @@ -28151,9 +28037,6 @@ "type": "boolean" }, "analyzer": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html" - }, "description": "Analyzer used to convert text in the query string into tokens.", "type": "string" }, @@ -28288,9 +28171,6 @@ ] }, "_types:DateFormat": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-date-format.html" - }, "type": "string" }, "_types.query_dsl:RangeQueryBase": { @@ -28670,9 +28550,6 @@ "type": "boolean" }, "flags": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/regexp-syntax.html" - }, "description": "Enables optional operators for the regular expression.", "type": "string" }, @@ -28684,9 +28561,6 @@ "$ref": "#/components/schemas/_types:MultiTermQueryRewrite" }, "value": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/regexp-syntax.html" - }, "description": "Regular expression for terms you wish to find in the provided field.", "type": "string" } @@ -28819,9 +28693,6 @@ "type": "object", "properties": { "analyzer": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html" - }, "description": "Analyzer used to convert text in the query string into tokens.", "type": "string" }, @@ -28881,9 +28752,6 @@ ] }, "_types.query_dsl:SimpleQueryStringFlags": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html#supported-flags" - }, "description": "Query flags can be either a single flag or a combination of flags, e.g. `OR|AND|PREFIX`", "allOf": [ { @@ -30968,9 +30836,6 @@ "$ref": "#/components/schemas/_types:Field" }, "num_top_feature_importance_values": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/machine-learning/current/ml-feature-importance.html" - }, "description": "Specifies the maximum number of feature importance values per document.", "type": "number" } @@ -30984,9 +30849,6 @@ "type": "number" }, "num_top_feature_importance_values": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/machine-learning/current/ml-feature-importance.html" - }, "description": "Specifies the maximum number of feature importance values per document.", "type": "number" }, @@ -32558,9 +32420,6 @@ } }, "format": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-date-format.html" - }, "description": "A custom format for `date` type runtime fields.", "type": "string" }, @@ -34334,9 +34193,6 @@ ] }, "_types:ByteSize": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/api-conventions.html#byte-units" - }, "oneOf": [ { "type": "number" @@ -39014,9 +38870,6 @@ ] }, "_types.analysis:Normalizer": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-normalizers.html" - }, "discriminator": { "propertyName": "type" }, @@ -40546,9 +40399,6 @@ "type": "object", "properties": { "meta": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-meta-field.html" - }, "description": "Metadata about the field.", "type": "object", "additionalProperties": { @@ -40891,9 +40741,6 @@ ] }, "fields": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html" - }, "description": "Multi-fields allow the same string value to be indexed in multiple ways for different purposes, such as one\nfield for search and a multi-field for sorting and aggregations, or the same string value analyzed by different analyzers.", "type": "object", "additionalProperties": { @@ -40901,9 +40748,6 @@ } }, "meta": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-meta-field.html" - }, "description": "Metadata about the field.", "type": "object", "additionalProperties": { @@ -42957,9 +42801,6 @@ } }, "_types:DataStreamName": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-data-stream.html#indices-create-data-stream-api-path-params" - }, "type": "string" }, "indices._types:DataStreamLifecycle": { @@ -44201,9 +44042,6 @@ } }, "sequences": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-syntax.html#eql-sequences" - }, "description": "Contains event sequences matching the query. Each object represents a matching sequence. This parameter is only returned for EQL queries containing a sequence.", "type": "array", "items": { @@ -44226,9 +44064,6 @@ "type": "object" }, "missing": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-syntax.html#eql-missing-events" - }, "description": "Set to `true` for events in a timespan-constrained sequence that do not meet a given condition.", "type": "boolean" }, @@ -44259,9 +44094,6 @@ } }, "join_keys": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-syntax.html#eql-sequences" - }, "description": "Shared field values used to constrain matches in the sequence. These are defined using the by keyword in the EQL query syntax.", "type": "array", "items": { @@ -44435,9 +44267,6 @@ "type": "string" }, "metadata_field": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-fields.html" - }, "description": "Whether this field is registered as a metadata field.", "type": "boolean" }, @@ -44628,9 +44457,6 @@ "$ref": "#/components/schemas/_types:Duration" }, "use_significance": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-significantterms-aggregation.html" - }, "description": "Filters associated terms so only those that are significantly associated with your query are included.", "type": "boolean" } @@ -47910,9 +47736,6 @@ "type": "string" }, "pipeline": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/logstash/current/configuration-file-structure.html" - }, "description": "Configuration for the pipeline.", "type": "string" }, @@ -47948,9 +47771,6 @@ "type": "object", "properties": { "pipeline.workers": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/logstash/current/logstash-settings-file.html" - }, "description": "The number of workers that will, in parallel, execute the filter and output stages of the pipeline.", "type": "number" }, @@ -47963,9 +47783,6 @@ "type": "number" }, "queue.type": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/logstash/current/logstash-settings-file.html" - }, "description": "The internal queuing model to use for event buffering.", "type": "string" }, @@ -48448,9 +48265,6 @@ "type": "object", "properties": { "mse": { - "externalDocs": { - "url": "https://en.wikipedia.org/wiki/Mean_squared_error" - }, "description": "Average squared difference between the predicted values and the actual (ground truth) value. For more information, read this wiki article.", "type": "object", "additionalProperties": { @@ -48464,9 +48278,6 @@ "$ref": "#/components/schemas/ml._types:DataframeEvaluationRegressionMetricsHuber" }, "r_squared": { - "externalDocs": { - "url": "https://en.wikipedia.org/wiki/Coefficient_of_determination" - }, "description": "Proportion of the variance in the dependent variable that is predictable from the independent variables.", "type": "object", "additionalProperties": { @@ -50821,9 +50632,6 @@ "type": "object", "properties": { "absolute_importance": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/machine-learning/current/dfa-regression-lossfunction.html" - }, "description": "A positive number showing how much the parameter influences the variation of the loss function. For hyperparameters with values that are not specified by the user but tuned during hyperparameter optimization.", "type": "number" }, @@ -50962,9 +50770,6 @@ "$ref": "#/components/schemas/ml._types:TrainedModelInferenceStats" }, "ingest": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-stats.html" - }, "description": "A collection of ingest stats for the model across all nodes.\nThe values are summations of the individual node statistics.\nThe format matches the ingest section in the nodes stats API.", "type": "object", "additionalProperties": { @@ -51203,9 +51008,6 @@ "type": "object", "properties": { "cache_miss_count": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-settings.html" - }, "description": "The number of times the model was loaded for inference and was not retrieved from the cache.\nIf this number is close to the `inference_count`, the cache is not being appropriately used.\nThis can be solved by increasing the cache size or its time-to-live (TTL).\nRefer to general machine learning settings for the appropriate settings.", "type": "number" }, @@ -51676,9 +51478,6 @@ "type": "object", "properties": { "allow_lazy_open": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-job.html" - }, "description": "Advanced configuration option. Specifies whether this job can open when there is insufficient machine learning node capacity for it to be immediately assigned to a node.", "type": "boolean" }, @@ -51846,9 +51645,6 @@ "$ref": "#/components/schemas/_types:Field" }, "function": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/machine-learning/current/ml-functions.html" - }, "description": "The analysis function that is used.\nFor example, `count`, `rare`, `mean`, `min`, `max`, and `sum`.", "type": "string" }, @@ -53081,9 +52877,6 @@ "type": "object", "properties": { "normalize": { - "externalDocs": { - "url": "https://en.wikipedia.org/wiki/Discounted_cumulative_gain#Normalized_DCG" - }, "description": "If set to true, this metric will calculate the Normalized DCG.", "type": "boolean" } @@ -53679,9 +53472,6 @@ "$ref": "#/components/schemas/_types:Metadata" }, "run_as": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/run-as-privilege.html" - }, "description": "A list of users that the API keys can impersonate. *Note*: in Serverless, the run-as feature is disabled. For API compatibility, you can still specify an empty `run_as` field, but a non-empty list will be rejected.", "type": "array", "items": { @@ -54054,9 +53844,6 @@ "$ref": "#/components/schemas/_types.query_dsl:IdsQuery" }, "match": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html" - }, "description": "Returns documents that match a provided text, number, date or boolean value.\nThe provided text is analyzed before matching.", "type": "object", "additionalProperties": { @@ -54069,9 +53856,6 @@ "$ref": "#/components/schemas/_types.query_dsl:MatchAllQuery" }, "prefix": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-prefix-query.html" - }, "description": "Returns documents that contain a specific prefix in a provided field.", "type": "object", "additionalProperties": { @@ -54081,9 +53865,6 @@ "maxProperties": 1 }, "range": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html" - }, "description": "Returns documents that contain terms within a provided range.", "type": "object", "additionalProperties": { @@ -54096,9 +53877,6 @@ "$ref": "#/components/schemas/_types.query_dsl:SimpleQueryStringQuery" }, "term": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html" - }, "description": "Returns documents that contain an exact term in a provided field.\nTo return a document, the query term must exactly match the queried field's value, including whitespace and capitalization.", "type": "object", "additionalProperties": { @@ -54111,9 +53889,6 @@ "$ref": "#/components/schemas/_types.query_dsl:TermsQuery" }, "wildcard": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-wildcard-query.html" - }, "description": "Returns documents that contain terms matching a wildcard pattern.", "type": "object", "additionalProperties": { @@ -62042,9 +61817,6 @@ "type": "object", "properties": { "query": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-syntax.html" - }, "description": "EQL query you wish to run.", "type": "string" }, @@ -62196,9 +61968,6 @@ "type": "object", "properties": { "analyzer": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-analyzers.html" - }, "description": "The name of the analyzer that should be applied to the provided `text`.\nThis could be a built-in analyzer, or an analyzer that’s been configured in the index.", "type": "string" }, @@ -62210,9 +61979,6 @@ } }, "char_filter": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-charfilters.html" - }, "description": "Array of character filters used to preprocess characters before the tokenizer.", "type": "array", "items": { @@ -62227,9 +61993,6 @@ "$ref": "#/components/schemas/_types:Field" }, "filter": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-tokenfilters.html" - }, "description": "Array of token filters used to apply after the tokenizer.", "type": "array", "items": { @@ -62237,9 +62000,6 @@ } }, "normalizer": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-normalizers.html" - }, "description": "Normalizer to use to convert text into a single token.", "type": "string" }, @@ -63228,9 +62988,6 @@ "$ref": "#/components/schemas/_types:Name" }, "role_descriptors": { - "externalDocs": { - "url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-role.html" - }, "description": "An array of role descriptors for this API key. This parameter is optional. When it is not specified or is an empty array, then the API key will have a point in time snapshot of permissions of the authenticated user. If you supply role descriptors then the resultant permissions would be an intersection of API keys permissions and authenticated user’s permissions thereby limiting the access scope for API keys. The structure of role descriptor is the same as the request for create role API. For more details, see create or update roles API.", "type": "object", "additionalProperties": { diff --git a/output/schema/schema.json b/output/schema/schema.json index 5a1f375fb..66ee64b4f 100644 --- a/output/schema/schema.json +++ b/output/schema/schema.json @@ -82310,8 +82310,8 @@ }, { "kind": "interface", - "docId": "query-dsl", - "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl.html", + "extDocId": "query-dsl", + "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/query-dsl.html", "name": { "name": "QueryContainer", "namespace": "_types.query_dsl" @@ -187420,8 +187420,8 @@ "properties": [ { "description": "When you create a role, you can specify a query that defines the document level security permissions. You can optionally\nuse Mustache templates in the role query to insert the username of the current authenticated user into the role.\nLike other places in Elasticsearch that support templating or scripting, you can specify inline, stored, or file-based\ntemplates and define custom parameters. You access the details for the current authenticated user through the _user parameter.", - "docId": "templating-role-query", - "docUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/field-and-document-access-control.html#templating-role-query", + "extDocId": "templating-role-query", + "extDocUrl": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/field-and-document-access-control.html#templating-role-query", "name": "template", "required": false, "type": { diff --git a/specification/_types/query_dsl/abstractions.ts b/specification/_types/query_dsl/abstractions.ts index 713854c23..43fdb6dfd 100644 --- a/specification/_types/query_dsl/abstractions.ts +++ b/specification/_types/query_dsl/abstractions.ts @@ -102,7 +102,7 @@ import { WeightedTokensQuery } from './WeightedTokensQuery' /** * @variants container * @non_exhaustive - * @doc_id query-dsl + * @ext_doc_id query-dsl */ export class QueryContainer { /** diff --git a/specification/security/_types/Privileges.ts b/specification/security/_types/Privileges.ts index abfafbdef..356973864 100644 --- a/specification/security/_types/Privileges.ts +++ b/specification/security/_types/Privileges.ts @@ -293,7 +293,7 @@ export class RoleTemplateQuery { * Like other places in Elasticsearch that support templating or scripting, you can specify inline, stored, or file-based * templates and define custom parameters. You access the details for the current authenticated user through the _user parameter. * - * @doc_id templating-role-query + * @ext_doc_id templating-role-query */ template?: RoleTemplateScript } diff --git a/typescript-generator/src/metamodel.ts b/typescript-generator/src/metamodel.ts index f67053936..9f01d7a95 100644 --- a/typescript-generator/src/metamodel.ts +++ b/typescript-generator/src/metamodel.ts @@ -126,6 +126,8 @@ export class Property { description?: string docUrl?: string docId?: string + extDocId?: string + extDocUrl?: string serverDefault?: boolean | string | number | string[] | number[] deprecation?: Deprecation availability?: Availabilities @@ -158,6 +160,8 @@ export abstract class BaseType { /** Link to public documentation */ docUrl?: string docId?: string + extDocId?: string + extDocUrl?: string deprecation?: Deprecation /** If this endpoint has a quirk that needs special attention, give a short explanation about it */ esQuirk?: string @@ -406,6 +410,8 @@ export class Endpoint { description: string docUrl: string docId?: string + extDocId?: string + extDocUrl?: string deprecation?: Deprecation availability: Availabilities docTag?: string