diff --git a/compiler/src/compiler.ts b/compiler/src/compiler.ts index e3ff58f39a..9865dfcca2 100644 --- a/compiler/src/compiler.ts +++ b/compiler/src/compiler.ts @@ -21,15 +21,10 @@ import { writeFile, mkdir } from 'fs/promises' import { join } from 'path' import stringify from 'safe-stable-stringify' import { Model } from './model/metamodel' -import { - compileEndpoints, - compileSpecification, - reAddAvailability -} from './model/build-model' -import buildJsonSpec, { JsonSpec } from './model/json-spec' +import { compileSpecification } from './model/build-model' import { ValidationErrors } from './validation-errors' -type StepFunction = (model: Model, restSpec: Map, errors: ValidationErrors) => Promise +type StepFunction = (model: Model, errors: ValidationErrors) => Promise /** * The main job of the compiler is to generate the Model and write it on disk. @@ -42,7 +37,6 @@ type StepFunction = (model: Model, restSpec: Map, errors: Vali export default class Compiler { queue: StepFunction[] model: Model - jsonSpec: Map errors: ValidationErrors specsFolder: string outputFolder: string @@ -55,16 +49,13 @@ export default class Compiler { } generateModel (): this { - this.jsonSpec = buildJsonSpec() - const endpoints = compileEndpoints() - this.model = compileSpecification(endpoints, this.specsFolder, this.outputFolder) - this.model = reAddAvailability(this.model) // resync availability information based on json spec if typescript has none. + this.model = compileSpecification(this.specsFolder, this.outputFolder) return this } async write (): Promise { for (const step of this.queue) { - this.model = await step(this.model, this.jsonSpec, this.errors) + this.model = await step(this.model, this.errors) } const customStringify = stringify.configure( diff --git a/compiler/src/index.ts b/compiler/src/index.ts index d9337825c4..0769a350c3 100644 --- a/compiler/src/index.ts +++ b/compiler/src/index.ts @@ -21,9 +21,7 @@ import { readFileSync, existsSync, lstatSync } from 'fs' import { join, resolve } from 'path' import { argv } from 'zx' import Compiler from './compiler' -import validateRestSpec from './steps/validate-rest-spec' import addInfo from './steps/add-info' -import addDescription from './steps/add-description' import validateModel from './steps/validate-model' import readDefinitionValidation from './steps/read-definition-validation' import addDeprecation from './steps/add-deprecation' @@ -73,8 +71,6 @@ compiler .step(addInfo) .step(addDeprecation) .step(readDefinitionValidation) - .step(validateRestSpec) - .step(addDescription) .step(validateModel) .step(addExamples) .write() diff --git a/compiler/src/model/build-model.ts b/compiler/src/model/build-model.ts index 75ac870609..efd1e54fea 100644 --- a/compiler/src/model/build-model.ts +++ b/compiler/src/model/build-model.ts @@ -32,7 +32,6 @@ import { TypeAliasDeclaration } from 'ts-morph' import * as model from './metamodel' -import buildJsonSpec from './json-spec' import { assert, customTypes, @@ -57,62 +56,10 @@ import { mediaTypeToStringArray } from './utils' -const jsonSpec = buildJsonSpec() - -export function reAddAvailability (model: model.Model): model.Model { - for (const [api, spec] of jsonSpec.entries()) { - for (const endpoint of model.endpoints) { - if (endpoint.name === api) { - if ((spec.stability != null || spec.visibility != null) && (endpoint.availability.stack === undefined && endpoint.availability.serverless === undefined)) { - endpoint.availability = { - stack: { - stability: spec.stability, - visibility: spec.visibility - } - } - } - } - } - } - return model -} - -export function compileEndpoints (): Record { - // Create endpoints and merge them with - // the recorded mappings if present. - const map = {} - for (const [api, spec] of jsonSpec.entries()) { - map[api] = { - name: api, - 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. - availability: {}, - request: null, - requestBodyRequired: Boolean(spec.body?.required), - response: null, - urls: spec.url.paths.map(path => { - return { - path: path.path, - methods: path.methods, - ...(path.deprecated != null && { deprecation: path.deprecated }) - } - }) - } - if (typeof spec.feature_flag === 'string') { - map[api].availability.stack = { featureFlag: spec.feature_flag } - } - } - return map -} - -export function compileSpecification (endpointMappings: Record, specsFolder: string, outputFolder: string): model.Model { +export function compileSpecification (specsFolder: string, outputFolder: string): model.Model { const tsConfigFilePath = join(specsFolder, 'tsconfig.json') const project = new Project({ tsConfigFilePath }) + const endpointMappings: Record = {} verifyUniqueness(project) @@ -151,9 +98,6 @@ export function compileSpecification (endpointMappings: Record p.name).includes(part.name)) { const queryType = type.query.find(property => property != null && property.name === part.name) as model.Property @@ -635,7 +588,7 @@ function visitRequestOrResponseProperty (member: PropertyDeclaration | PropertyS * ``` * urls: [ * { - * /** @deprecated 1.2.3 Use something else + * /** \@deprecated 1.2.3 Use something else * path: '/some/path', * methods: ["GET", "POST"] * } diff --git a/compiler/src/model/json-spec.ts b/compiler/src/model/json-spec.ts deleted file mode 100644 index 5f2f689c8d..0000000000 --- a/compiler/src/model/json-spec.ts +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* eslint-disable @typescript-eslint/no-var-requires */ - -import { join } from 'path' -import { readdirSync } from 'fs' -import * as model from './metamodel' - -const jsonSpecPath = join(__dirname, '..', '..', '..', 'specification', '_json_spec') - -export interface JsonSpec { - documentation: { - url: string - description: string - } - stability: model.Stability - visibility: model.Visibility - feature_flag?: string - headers: { - accept?: string[] - content_type?: string[] - } - url: { - paths: Array<{ - path: string - methods: string[] - parts?: Record - deprecated?: { - version: string - description: string - } - }> - } - params?: Record - body?: { - description: string - required?: boolean - } - docTag?: string - externalDocs?: { - url: string - description?: string - } -} - -export default function buildJsonSpec (): Map { - const files = readdirSync(jsonSpecPath) - .filter(file => file.endsWith('.json')) - - const map: Map = new Map() - for (const file of files) { - const json = require(join(jsonSpecPath, file)) - const name = Object.keys(json)[0] - map.set(name, json[name]) - } - - // Ensure deterministic ordering - return new Map([...map.entries()].sort((a, b) => a[0].localeCompare(b[0]))) -} diff --git a/compiler/src/model/utils.ts b/compiler/src/model/utils.ts index 4b90eb8b09..28538460ee 100644 --- a/compiler/src/model/utils.ts +++ b/compiler/src/model/utils.ts @@ -35,7 +35,6 @@ import { Node, Project } from 'ts-morph' -import { closest } from 'fastest-levenshtein' import semver from 'semver' import chalk from 'chalk' import * as model from './metamodel' @@ -629,6 +628,23 @@ function setTags, name: string): model.Endpoint { + mappings[name] = { + name: name, + // @ts-expect-error TODO + description: null, + // @ts-expect-error TODO + docUrl: null, + request: null, + requestBodyRequired: false, + response: null, + urls: [] + } + mappings[name].availability = {} + + return mappings[name] +} + /** Lifts jsDoc type annotations to request properties */ export function hoistRequestAnnotations ( request: model.Request, jsDocs: JSDoc[], mappings: Record, response: model.TypeName | null @@ -651,9 +667,7 @@ export function hoistRequestAnnotations ( assert(jsDocs, apiName !== '' && apiName !== null && apiName !== undefined, `Request ${request.name.name} does not declare the @rest_spec_name to link back to`) - const endpoint = mappings[apiName] - assert(jsDocs, endpoint != null, `The api '${apiName}' does not exists, did you mean '${closest(apiName, Object.keys(mappings))}'?`) - + const endpoint = updateEndpoints(mappings, apiName) endpoint.request = request.name endpoint.response = response diff --git a/compiler/src/steps/add-deprecation.ts b/compiler/src/steps/add-deprecation.ts index 718bf6b9cb..016b1f144f 100644 --- a/compiler/src/steps/add-deprecation.ts +++ b/compiler/src/steps/add-deprecation.ts @@ -18,12 +18,11 @@ */ import * as model from '../model/metamodel' -import { JsonSpec } from '../model/json-spec' /** * Populates the `deprecation` field for endpoints from the value of the corresponding request definition. */ -export default async function addContentType (model: model.Model, jsonSpec: Map): Promise { +export default async function addContentType (model: model.Model): Promise { for (const endpoint of model.endpoints) { if (endpoint.deprecation != null) { continue diff --git a/compiler/src/steps/add-description.ts b/compiler/src/steps/add-description.ts deleted file mode 100644 index ab817db9af..0000000000 --- a/compiler/src/steps/add-description.ts +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import assert from 'assert' -import * as model from '../model/metamodel' -import { JsonSpec } from '../model/json-spec' - -/** - * Adds the description from the rest-api-spec to every endpoint, path and query property - * if not already present (i.e. missing in the TypeScript definition) - */ -export default async function addDescription (model: model.Model, jsonSpec: Map): Promise { - for (const endpoint of model.endpoints) { - if (endpoint.request == null) continue - const requestDefinition = getDefinition(endpoint.request) - const spec = jsonSpec.get(endpoint.name) - assert(spec, `Can't find the json spec for ${endpoint.name}`) - - if (spec.documentation.description != null) { - requestDefinition.description = requestDefinition.description ?? spec.documentation.description - } - - // An API endpoint is defined by an endpoint object (paths and http methods) and a request - // type (parameters and structure). - endpoint.description = requestDefinition.description ?? spec.documentation.description - } - - return model - - function getDefinition (request: model.TypeName): model.Request { - for (const type of model.types) { - if (type.kind === 'request') { - if (type.name.name === request.name && type.name.namespace === request.namespace) { - return type - } - } - } - throw new Error(`Can't find the request definiton for ${request.namespace}.${request.name}`) - } -} diff --git a/compiler/src/steps/add-examples.ts b/compiler/src/steps/add-examples.ts index 7bf870327d..3b565696e6 100644 --- a/compiler/src/steps/add-examples.ts +++ b/compiler/src/steps/add-examples.ts @@ -18,7 +18,6 @@ */ import * as model from '../model/metamodel' -import { JsonSpec } from '../model/json-spec' import * as path from 'path' import * as fs from 'fs' import * as yaml from 'js-yaml' @@ -35,9 +34,7 @@ export default class ExamplesProcessor { } // Add request and response examples for all the endpoints in the model. - // Note that the 'jsonSpec' is a parameter that is passed to a 'Step'. - // We don't need that parameter for the the 'addExamples' functionality. - async addExamples (model: model.Model, jsonSpec: Map): Promise { + async addExamples (model: model.Model): Promise { const requestExamplesProcessor = new RequestExamplesProcessor(model, this.specsFolder) const responseExamplesProcessor = new ResponseExamplesProcessor(model, this.specsFolder) for (const endpoint of model.endpoints) { diff --git a/compiler/src/steps/add-info.ts b/compiler/src/steps/add-info.ts index 19205c22d3..c0a410babc 100644 --- a/compiler/src/steps/add-info.ts +++ b/compiler/src/steps/add-info.ts @@ -18,12 +18,11 @@ */ import * as model from '../model/metamodel' -import { JsonSpec } from '../model/json-spec' /** * Adds the `_info` field to the JSON model. */ -export default async function addInfo (model: model.Model, jsonSpec: Map): Promise { +export default async function addInfo (model: model.Model): Promise { model._info = { title: 'Elasticsearch Request & Response Specification', license: { diff --git a/compiler/src/steps/read-definition-validation.ts b/compiler/src/steps/read-definition-validation.ts index cf1b5ce668..39e8820ab7 100644 --- a/compiler/src/steps/read-definition-validation.ts +++ b/compiler/src/steps/read-definition-validation.ts @@ -19,7 +19,6 @@ import assert from 'assert' import * as model from '../model/metamodel' -import { JsonSpec } from '../model/json-spec' import chalk from 'chalk' /** @@ -27,7 +26,7 @@ import chalk from 'chalk' * contains the same properties of their "write" version. * Then, it copies every model.Property from write to read but 'required'. */ -export default async function readDefinitionValidation (model: model.Model, jsonSpec: Map): Promise { +export default async function readDefinitionValidation (model: model.Model): Promise { for (const type of model.types) { if (type.kind !== 'interface') continue const readBehavior = type.behaviors?.find(behavior => behavior.type.name === 'OverloadOf') diff --git a/compiler/src/steps/validate-model.ts b/compiler/src/steps/validate-model.ts index e65a6278f2..8e75953fc1 100644 --- a/compiler/src/steps/validate-model.ts +++ b/compiler/src/steps/validate-model.ts @@ -19,7 +19,6 @@ import * as model from '../model/metamodel' import { ValidationErrors } from '../validation-errors' -import { JsonSpec } from '../model/json-spec' import assert from 'assert' import { TypeName } from '../model/metamodel' @@ -46,7 +45,7 @@ enum JsonEvent { * - verify that request parents don't define properties (would they be path/request/body properties?) * - verify that unions can be distinguished in a JSON stream (otherwise they should be inheritance trees) */ -export default async function validateModel (apiModel: model.Model, restSpec: Map, errors: ValidationErrors): Promise { +export default async function validateModel (apiModel: model.Model, errors: ValidationErrors): Promise { const initialTypeCount = apiModel.types.length // Returns the fully-qualified name of a type name diff --git a/compiler/src/steps/validate-rest-spec.ts b/compiler/src/steps/validate-rest-spec.ts deleted file mode 100644 index ba9e6a024d..0000000000 --- a/compiler/src/steps/validate-rest-spec.ts +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import assert from 'assert' -import * as model from '../model/metamodel' -import { JsonSpec } from '../model/json-spec' -import { ValidationErrors } from '../validation-errors' -import { deepEqual } from '../model/utils' - -// This code can be simplified once https://github.com/tc39/proposal-set-methods is available - -enum Body { - noBody = 0, - yesBody = 1 -} - -const LOG = 'ALL' // default: ALL - -/** - * Validates the model against the rest-api-spec. - * It verifies is the model has exactly the same path and query parameters, - * furthermore it verifies if the body is required or not. - * If a validation fails, it will log a warning. - */ -export default async function validateRestSpec (model: model.Model, jsonSpec: Map, errors: ValidationErrors): Promise { - for (const endpoint of model.endpoints) { - if (endpoint.request == null) continue - const requestDefinition = getDefinition(endpoint.request) - const requestProperties = getProperties(requestDefinition) - if (endpoint.request.name === LOG || LOG === 'ALL') { - const spec = jsonSpec.get(endpoint.name) - assert(spec, `Can't find the json spec for ${endpoint.name}`) - - // Check URL paths and methods - if (spec.url.paths.length !== endpoint.urls.length) { - errors.addEndpointError(endpoint.name, 'request', `${endpoint.request.name}: different number of urls in the json spec`) - } else { - for (const modelUrl of endpoint.urls) { - // URL path - const restSpecUrl = spec.url.paths.find(path => path.path === modelUrl.path) - if (restSpecUrl == null) { - errors.addEndpointError(endpoint.name, 'request', `${endpoint.request.name}: url path '${modelUrl.path}' not found in the json spec`) - } else { - // URL methods - if (!deepEqual([...restSpecUrl.methods].sort(), [...modelUrl.methods].sort())) { - errors.addEndpointError(endpoint.name, 'request', `${modelUrl.path}: different http methods in the json spec`) - } - - // Deprecation. - if ((restSpecUrl.deprecated != null) !== (modelUrl.deprecation != null)) { - errors.addEndpointError(endpoint.name, 'request', `${endpoint.request.name}: different deprecation in the json spec`) - } - } - } - } - - // Check url parts - const urlParts = Array.from(new Set(spec.url.paths - .filter(path => path.parts != null) - .flatMap(path => { - assert(path.parts != null) - return Object.keys(path.parts) - }) - )) - const pathProperties = requestProperties.path.map(property => property.name) - // are all the parameters in the request definition present in the json spec? - for (const name of pathProperties) { - if (!urlParts.includes(name)) { - errors.addEndpointError(endpoint.name, 'request', `${endpoint.request.name}: path parameter '${name}' does not exist in the json spec`) - } - } - - // are all the parameters in the json spec present in the request definition? - for (const name of urlParts) { - if (!pathProperties.includes(name)) { - errors.addEndpointError(endpoint.name, 'request', `${endpoint.request.name}: missing json spec path parameter '${name}'`) - } - } - - // are all path parameters properly required or optional? - let urlPartsRequired = new Set(urlParts) - // A part is considered required if it is included in - // every path for the API endpoint. - for (const path of spec.url.paths) { - if (path.parts == null) { - // No parts means that all path parameters are optional! - urlPartsRequired = new Set() - break - } - urlPartsRequired = new Set([...Object.keys(path.parts)].filter((x) => urlPartsRequired.has(x))) - } - - // transform [{name: ..., required: ...}] -> {name: {required: ...}} - const pathPropertyMap: Record = requestProperties.path.reduce((prev, prop) => ({ ...prev, [prop.name]: prop }), {}) - for (const name of pathProperties) { - // okay to skip if it's not included since this scenario - // is covered above with a different error. - if (!urlParts.includes(name)) { - continue - } - // Find the mismatches between the specs - if (urlPartsRequired.has(name) && !pathPropertyMap[name].required) { - errors.addEndpointError(endpoint.name, 'request', `${endpoint.request.name}: path parameter '${name}' is required in the json spec`) - } else if (!urlPartsRequired.has(name) && pathPropertyMap[name].required) { - errors.addEndpointError(endpoint.name, 'request', `${endpoint.request.name}: path parameter '${name}' is optional in the json spec`) - } - } - - // fleet API are deliberately undocumented in rest-api-spec) - if (spec.params != null && !endpoint.name.startsWith('fleet.')) { - const params = Object.keys(spec.params) - const queryProperties = requestProperties.query.map(property => property.name) - // are all the parameters in the request definition present in the json spec? - for (const name of queryProperties) { - if (!params.includes(name)) { - errors.addEndpointError(endpoint.name, 'request', `${endpoint.request.name}: query parameter '${name}' does not exist in the json spec`) - } - } - - // are all the parameters in the json spec present in the request definition? - for (const name of params) { - if (!queryProperties.includes(name)) { - errors.addEndpointError(endpoint.name, 'request', `${endpoint.request.name}: missing json spec query parameter '${name}'`) - } - } - } - - if (requestProperties.body === Body.yesBody && spec.body == null) { - errors.addEndpointError(endpoint.name, 'request', `${endpoint.request.name}: should not have a body`) - } - - if (requestProperties.body === Body.noBody && spec.body != null && spec.body.required === true) { - errors.addEndpointError(endpoint.name, 'request', `${endpoint.request.name}: should have a body definition`) - } - - if (spec.body != null && spec.body.required === true && spec.body.required !== endpoint.requestBodyRequired) { - errors.addEndpointError(endpoint.name, 'request', ': should not be an optional body definition') - } - } - } - - return model - - function getDefinition (name: model.TypeName): model.Request | model.Interface { - for (const type of model.types) { - if (type.kind === 'request' || type.kind === 'interface') { - if (type.name.name === name.name && type.name.namespace === name.namespace) { - return type - } - } - } - throw new Error(`Can't find the request definiton for ${name.namespace}.${name.name}`) - } - - // recursively gets the properties from the current and inherited classes - function getProperties (definition: model.Request | model.Interface): { path: model.Property[], query: model.Property[], body: Body } { - const path: model.Property[] = [] - const query: model.Property[] = [] - let body: Body = Body.noBody - - if (definition.kind === 'request') { - if (definition.path.length > 0) { - path.push(...definition.path) - } - - if (definition.query.length > 0) { - query.push(...definition.query) - } - - if (definition.body.kind !== 'no_body') { - body = Body.yesBody - } - - if (definition.attachedBehaviors != null) { - for (const attachedBehavior of definition.attachedBehaviors) { - const type_ = getDefinition({ - namespace: '_spec_utils', - name: attachedBehavior - }) - if ( - type_.kind === 'interface' && - // allowing CommonQueryParameters too generates many errors - attachedBehavior === 'CommonCatQueryParameters' - ) { - for (const prop of type_.properties) { - query.push(prop) - } - } - } - } - } else { - if (definition.properties.length > 0) { - query.push(...definition.properties) - } - } - - return { path, query, body } - } -} diff --git a/compiler/test/body-codegen-name/specification/_global/index/request.ts b/compiler/test/body-codegen-name/specification/_global/index/request.ts index b18e03f3b7..aa92429be4 100644 --- a/compiler/test/body-codegen-name/specification/_global/index/request.ts +++ b/compiler/test/body-codegen-name/specification/_global/index/request.ts @@ -23,6 +23,12 @@ * @doc_id docs-index */ export interface Request { + urls: [ + { + path: '/foo', + methods: ['POST'] + } + ] body: Foo } diff --git a/compiler/test/duplicate-body-codegen-name/specification/_global/index/request.ts b/compiler/test/duplicate-body-codegen-name/specification/_global/index/request.ts index 7b3193bc6a..5638675df5 100644 --- a/compiler/test/duplicate-body-codegen-name/specification/_global/index/request.ts +++ b/compiler/test/duplicate-body-codegen-name/specification/_global/index/request.ts @@ -23,6 +23,12 @@ * @doc_id docs-index */ export interface Request { + urls: [ + { + path: "/foo/{id}" + methods: ["POST"] + } + ] path_parts: { id: string } diff --git a/compiler/test/no-body/specification/_global/info/request.ts b/compiler/test/no-body/specification/_global/info/request.ts index ddf89ba1cf..4a3f604339 100644 --- a/compiler/test/no-body/specification/_global/info/request.ts +++ b/compiler/test/no-body/specification/_global/info/request.ts @@ -23,6 +23,12 @@ * @doc_id api-root */ export interface Request { + urls: [ + { + path: "/foo" + methods: ["GET"] + } + ] body: { foo: string } diff --git a/compiler/test/request-availability/specification/_global/index/request.ts b/compiler/test/request-availability/specification/_global/index/request.ts index b69746c3e3..b3c077278d 100644 --- a/compiler/test/request-availability/specification/_global/index/request.ts +++ b/compiler/test/request-availability/specification/_global/index/request.ts @@ -24,6 +24,12 @@ * @doc_id docs-index */ export interface Request { + urls: [ + { + path: '/{index}/_doc/{id}' + methods: ['POST', 'PUT'] + } + ] path_parts: { id?: string index: string diff --git a/compiler/test/wrong-api-name/specification/_global/info/request.ts b/compiler/test/wrong-api-name/specification/_global/info/request.ts deleted file mode 100644 index 43ac7ffe54..0000000000 --- a/compiler/test/wrong-api-name/specification/_global/info/request.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/** - * @rest_spec_name foobar - * @availability stack since=0.0.0 stability=stable - */ -export interface Request {} diff --git a/compiler/test/wrong-api-name/specification/tsconfig.json b/compiler/test/wrong-api-name/specification/tsconfig.json deleted file mode 100644 index a983782068..0000000000 --- a/compiler/test/wrong-api-name/specification/tsconfig.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": "../../../../specification/tsconfig.json", - "typeRoots": ["./**/*.ts"], - "include": ["./**/*.ts"] -} diff --git a/compiler/test/wrong-api-name/test.ts b/compiler/test/wrong-api-name/test.ts deleted file mode 100644 index 1ea3da40c3..0000000000 --- a/compiler/test/wrong-api-name/test.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { join } from 'path' -import test from 'ava' -import Compiler from '../../src/compiler' -import * as Model from '../../src/model/metamodel' - -const specsFolder = join(__dirname, 'specification') -const outputFolder = join(__dirname, 'output') - -test('Wrong rest_spec_name for request definition', t => { - const compiler = new Compiler(specsFolder, outputFolder) - const error = t.throws(() => compiler.generateModel()) - t.true(error?.message.startsWith("The api 'foobar' does not exists, did you mean")) -}) diff --git a/output/openapi/elasticsearch-openapi.json b/output/openapi/elasticsearch-openapi.json index 1ec8946c02..c84ba6ba5c 100644 --- a/output/openapi/elasticsearch-openapi.json +++ b/output/openapi/elasticsearch-openapi.json @@ -3302,8 +3302,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -3536,8 +3535,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -3805,8 +3803,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -5264,8 +5261,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -6519,8 +6515,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -6671,8 +6666,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -6846,8 +6840,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -6955,8 +6948,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -7074,8 +7066,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -7166,8 +7157,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -7255,8 +7245,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -7344,8 +7333,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -7442,8 +7430,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -7523,8 +7510,7 @@ ] } } - }, - "required": true + } }, "responses": { "200": { @@ -7607,8 +7593,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -7688,8 +7673,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -7764,8 +7748,7 @@ ] } } - }, - "required": true + } }, "responses": { "200": { @@ -7845,8 +7828,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -7933,8 +7915,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -8014,8 +7995,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -8099,8 +8079,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -9721,8 +9700,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -10212,8 +10190,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -10912,8 +10889,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -11362,8 +11338,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -18679,8 +18654,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -20224,8 +20198,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -24007,8 +23980,7 @@ ] } } - }, - "required": true + } }, "responses": { "200": { @@ -24402,8 +24374,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -26517,8 +26488,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -26906,8 +26876,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -27238,8 +27207,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -27744,8 +27712,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -28298,8 +28265,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -28553,8 +28519,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -28663,8 +28628,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -29349,8 +29313,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -30648,8 +30611,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -31323,8 +31285,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -31409,8 +31370,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -32414,8 +32374,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -32685,8 +32644,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -32869,8 +32827,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -33043,8 +33000,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -33255,8 +33211,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -35429,8 +35384,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -35618,8 +35572,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -35812,8 +35765,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -36239,8 +36191,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -36640,8 +36591,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -39216,8 +39166,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -39355,8 +39304,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -39584,8 +39532,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -39695,8 +39642,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -39827,8 +39773,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -40679,8 +40624,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -40804,8 +40748,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -41117,8 +41060,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -42665,8 +42607,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -42766,8 +42707,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -42901,8 +42841,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -43267,8 +43206,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -43548,8 +43486,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -43636,8 +43573,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -43729,8 +43665,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -44011,8 +43946,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -44127,8 +44061,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -44189,8 +44122,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -44276,8 +44208,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -44360,8 +44291,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -44699,8 +44629,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -44922,8 +44851,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -45983,8 +45911,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -47431,8 +47358,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -48009,8 +47935,7 @@ ] } } - }, - "required": true + } }, "responses": { "200": { @@ -48224,8 +48149,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -49984,8 +49908,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -50844,8 +50767,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -51323,8 +51245,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -52680,8 +52601,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -146098,8 +146018,7 @@ } } } - }, - "required": true + } }, "connector.put": { "content": { @@ -146333,8 +146252,7 @@ } } } - }, - "required": true + } }, "explain": { "content": { @@ -147003,8 +146921,7 @@ } } } - }, - "required": true + } }, "indices.put_mapping": { "content": { @@ -147105,8 +147022,7 @@ } } } - }, - "required": true + } }, "indices.put_settings": { "content": { @@ -147203,8 +147119,7 @@ } } } - }, - "required": true + } }, "indices.rollover": { "content": { @@ -147533,8 +147448,7 @@ } } } - }, - "required": true + } }, "license.post": { "content": { @@ -147613,8 +147527,7 @@ } } } - }, - "required": true + } }, "ml.delete_expired_data": { "content": { @@ -148223,8 +148136,7 @@ } } } - }, - "required": true + } }, "rank_eval": { "content": { @@ -148259,8 +148171,7 @@ } } } - }, - "required": true + } }, "render_search_template": { "content": { @@ -148345,8 +148256,7 @@ } } } - }, - "required": true + } }, "scripts_painless_execute": { "content": { @@ -148938,8 +148848,7 @@ } } } - }, - "required": true + } }, "security.change_password": { "content": { @@ -148968,8 +148877,7 @@ } } } - }, - "required": true + } }, "security.create_api_key": { "content": { @@ -149021,8 +148929,7 @@ } } } - }, - "required": true + } }, "security.has_privileges": { "content": { @@ -149058,8 +148965,7 @@ } } } - }, - "required": true + } }, "security.has_privileges_user_profile": { "content": { @@ -149095,8 +149001,7 @@ } } } - }, - "required": true + } }, "security.put_privileges": { "content": { @@ -149226,8 +149131,7 @@ } } } - }, - "required": true + } }, "security.put_role_mapping": { "content": { @@ -149325,8 +149229,7 @@ } } } - }, - "required": true + } }, "security.put_user": { "content": { @@ -149409,8 +149312,7 @@ } } } - }, - "required": true + } }, "security.query_api_keys": { "content": { @@ -149687,8 +149589,7 @@ } } } - }, - "required": true + } }, "simulate.ingest": { "content": { @@ -149759,8 +149660,7 @@ } } } - }, - "required": true + } }, "snapshot.create": { "content": { @@ -150008,8 +149908,7 @@ } } } - }, - "required": true + } }, "sql.translate": { "content": { @@ -150063,8 +149962,7 @@ } } } - }, - "required": true + } }, "terms_enum": { "content": { @@ -150270,8 +150168,7 @@ } } } - }, - "required": true + } }, "text_structure.test_grok_pattern": { "content": { @@ -150307,8 +150204,7 @@ } } } - }, - "required": true + } }, "transform.preview_transform": { "content": { @@ -150550,8 +150446,7 @@ } } } - }, - "required": true + } }, "watcher.query_watches": { "content": { diff --git a/output/openapi/elasticsearch-serverless-openapi.json b/output/openapi/elasticsearch-serverless-openapi.json index 0060cd61e7..7484566f0f 100644 --- a/output/openapi/elasticsearch-serverless-openapi.json +++ b/output/openapi/elasticsearch-serverless-openapi.json @@ -2847,8 +2847,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -2978,8 +2977,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -3070,8 +3068,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -3159,8 +3156,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -3257,8 +3253,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -3338,8 +3333,7 @@ ] } } - }, - "required": true + } }, "responses": { "200": { @@ -3422,8 +3416,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -3503,8 +3496,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -3579,8 +3571,7 @@ ] } } - }, - "required": true + } }, "responses": { "200": { @@ -3660,8 +3651,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -3748,8 +3738,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -3829,8 +3818,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -3914,8 +3902,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -5343,8 +5330,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -5781,8 +5767,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -6514,8 +6499,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -10329,8 +10313,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -10932,8 +10915,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -14610,8 +14592,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -16018,8 +15999,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -16407,8 +16387,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -16670,8 +16649,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -16981,8 +16959,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -17378,8 +17355,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -17633,8 +17609,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -17743,8 +17718,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -18093,8 +18067,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -18787,8 +18760,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -19227,8 +19199,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -19313,8 +19284,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -20159,8 +20129,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -20430,8 +20399,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -20614,8 +20582,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -20788,8 +20755,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -22151,8 +22117,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -22340,8 +22305,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -22534,8 +22498,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -22961,8 +22924,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -25140,8 +25102,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -25826,8 +25787,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -26351,8 +26311,7 @@ ] } } - }, - "required": true + } }, "responses": { "200": { @@ -26555,8 +26514,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -27324,8 +27282,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -28133,8 +28090,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -28536,8 +28492,7 @@ } } } - }, - "required": true + } }, "responses": { "200": { @@ -88276,8 +88231,7 @@ } } } - }, - "required": true + } }, "connector.put": { "content": { @@ -88511,8 +88465,7 @@ } } } - }, - "required": true + } }, "explain": { "content": { @@ -88908,8 +88861,7 @@ } } } - }, - "required": true + } }, "indices.put_mapping": { "content": { @@ -89010,8 +88962,7 @@ } } } - }, - "required": true + } }, "indices.put_settings": { "content": { @@ -89288,8 +89239,7 @@ } } } - }, - "required": true + } }, "mget": { "content": { @@ -89337,8 +89287,7 @@ } } } - }, - "required": true + } }, "ml.get_calendars": { "content": { @@ -89590,8 +89539,7 @@ } } } - }, - "required": true + } }, "rank_eval": { "content": { @@ -89626,8 +89574,7 @@ } } } - }, - "required": true + } }, "render_search_template": { "content": { @@ -90253,8 +90200,7 @@ } } } - }, - "required": true + } }, "security.create_api_key": { "content": { @@ -90306,8 +90252,7 @@ } } } - }, - "required": true + } }, "security.has_privileges": { "content": { @@ -90343,8 +90288,7 @@ } } } - }, - "required": true + } }, "security.put_role": { "content": { @@ -90422,8 +90366,7 @@ } } } - }, - "required": true + } }, "security.query_api_keys": { "content": { @@ -90697,8 +90640,7 @@ } } } - }, - "required": true + } }, "sql.translate": { "content": { @@ -90752,8 +90694,7 @@ } } } - }, - "required": true + } }, "terms_enum": { "content": { diff --git a/output/schema/schema.json b/output/schema/schema.json index 5ea6d641a3..3fa85c24b9 100644 --- a/output/schema/schema.json +++ b/output/schema/schema.json @@ -1859,7 +1859,7 @@ "name": "Request", "namespace": "ccr.follow" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -1977,7 +1977,7 @@ "name": "Request", "namespace": "ccr.forget_follower" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -2139,7 +2139,7 @@ "name": "Request", "namespace": "ccr.put_auto_follow_pattern" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -2850,7 +2850,7 @@ "name": "Request", "namespace": "cluster.put_component_template" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -2892,7 +2892,7 @@ "name": "Request", "namespace": "cluster.put_settings" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -3227,7 +3227,7 @@ "name": "Request", "namespace": "connector.last_sync" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -3446,7 +3446,7 @@ "name": "Request", "namespace": "connector.secret_post" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "response": { "name": "Response", "namespace": "connector.secret_post" @@ -3477,7 +3477,7 @@ "name": "Request", "namespace": "connector.secret_put" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "response": { "name": "Response", "namespace": "connector.secret_put" @@ -3580,7 +3580,7 @@ "name": "Request", "namespace": "connector.sync_job_claim" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -3653,7 +3653,7 @@ "name": "Request", "namespace": "connector.sync_job_error" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -3767,7 +3767,7 @@ "name": "Request", "namespace": "connector.sync_job_post" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -3803,7 +3803,7 @@ "name": "Request", "namespace": "connector.sync_job_update_stats" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -3883,7 +3883,7 @@ "name": "Request", "namespace": "connector.update_api_key_id" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -3923,7 +3923,7 @@ "name": "Request", "namespace": "connector.update_configuration" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -3963,7 +3963,7 @@ "name": "Request", "namespace": "connector.update_error" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -3999,7 +3999,7 @@ "name": "Request", "namespace": "connector.update_features" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -4039,7 +4039,7 @@ "name": "Request", "namespace": "connector.update_filtering" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -4078,7 +4078,7 @@ "name": "Request", "namespace": "connector.update_filtering_validation" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -4118,7 +4118,7 @@ "name": "Request", "namespace": "connector.update_index_name" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -4158,7 +4158,7 @@ "name": "Request", "namespace": "connector.update_name" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -4197,7 +4197,7 @@ "name": "Request", "namespace": "connector.update_native" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -4237,7 +4237,7 @@ "name": "Request", "namespace": "connector.update_pipeline" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -4277,7 +4277,7 @@ "name": "Request", "namespace": "connector.update_scheduling" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -4317,7 +4317,7 @@ "name": "Request", "namespace": "connector.update_service_type" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -4357,7 +4357,7 @@ "name": "Request", "namespace": "connector.update_status" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -4665,7 +4665,7 @@ "name": "Request", "namespace": "_global.delete_by_query" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -4901,7 +4901,7 @@ "name": "Request", "namespace": "enrich.put_policy" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -5091,7 +5091,7 @@ "name": "Request", "namespace": "eql.search" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -5136,7 +5136,7 @@ "name": "Request", "namespace": "esql.async_query" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -5370,7 +5370,7 @@ "name": "Request", "namespace": "esql.query" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -5814,7 +5814,7 @@ "name": "Request", "namespace": "fleet.post_secret" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "response": { "name": "Response", "namespace": "fleet.post_secret" @@ -8499,7 +8499,7 @@ "name": "Request", "namespace": "indices.modify_data_stream" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -8795,7 +8795,7 @@ "name": "Request", "namespace": "indices.put_index_template" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -8842,7 +8842,7 @@ "name": "Request", "namespace": "indices.put_mapping" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -8942,7 +8942,7 @@ "name": "Request", "namespace": "indices.put_template" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -9627,7 +9627,7 @@ "name": "Request", "namespace": "indices.update_aliases" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -11452,7 +11452,7 @@ "name": "Request", "namespace": "ingest.put_geoip_database" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -11537,7 +11537,7 @@ "name": "Request", "namespace": "ingest.put_pipeline" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -11582,7 +11582,7 @@ "name": "Request", "namespace": "ingest.simulate" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -12087,7 +12087,7 @@ "name": "Request", "namespace": "_global.mget" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -12888,7 +12888,7 @@ "name": "Request", "namespace": "ml.estimate_model_memory" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -12934,7 +12934,7 @@ "name": "Request", "namespace": "ml.evaluate_data_frame" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -14057,7 +14057,7 @@ "name": "Request", "namespace": "ml.infer_trained_model" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -14191,7 +14191,7 @@ "name": "Request", "namespace": "ml.post_calendar_events" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -14491,7 +14491,7 @@ "name": "Request", "namespace": "ml.put_data_frame_analytics" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -14540,7 +14540,7 @@ "name": "Request", "namespace": "ml.put_datafeed" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -14586,7 +14586,7 @@ "name": "Request", "namespace": "ml.put_filter" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -14635,7 +14635,7 @@ "name": "Request", "namespace": "ml.put_job" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -14681,7 +14681,7 @@ "name": "Request", "namespace": "ml.put_trained_model" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -14773,7 +14773,7 @@ "name": "Request", "namespace": "ml.put_trained_model_definition_part" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -14819,7 +14819,7 @@ "name": "Request", "namespace": "ml.put_trained_model_vocabulary" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -15286,7 +15286,7 @@ "name": "Request", "namespace": "ml.update_data_frame_analytics" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -15332,7 +15332,7 @@ "name": "Request", "namespace": "ml.update_datafeed" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -15378,7 +15378,7 @@ "name": "Request", "namespace": "ml.update_filter" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -15424,7 +15424,7 @@ "name": "Request", "namespace": "ml.update_job" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -15470,7 +15470,7 @@ "name": "Request", "namespace": "ml.update_model_snapshot" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -15592,6 +15592,7 @@ } }, "description": "Validate an anomaly detection job.", + "docId": "ml-jobs", "docTag": "ml anomaly", "docUrl": "https://www.elastic.co/guide/en/machine-learning/current/ml-jobs.html", "name": "ml.validate", @@ -15599,7 +15600,7 @@ "name": "Request", "namespace": "ml.validate" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -16478,7 +16479,7 @@ "name": "Request", "namespace": "_global.put_script" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -16743,7 +16744,7 @@ "name": "Request", "namespace": "query_rules.put_rule" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -16790,7 +16791,7 @@ "name": "Request", "namespace": "query_rules.put_ruleset" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -16835,7 +16836,7 @@ "name": "Request", "namespace": "query_rules.test" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -16881,7 +16882,7 @@ "name": "Request", "namespace": "_global.rank_eval" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -16938,7 +16939,7 @@ "name": "Request", "namespace": "_global.reindex" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -17255,7 +17256,7 @@ "name": "Request", "namespace": "rollup.put_job" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -17297,7 +17298,7 @@ "name": "Request", "namespace": "rollup.rollup_search" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -18109,7 +18110,7 @@ "name": "Request", "namespace": "_global.search_template" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -18256,7 +18257,7 @@ "name": "Request", "namespace": "searchable_snapshots.mount" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -18348,7 +18349,7 @@ "name": "Request", "namespace": "security.activate_user_profile" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -18430,7 +18431,7 @@ "name": "Request", "namespace": "security.bulk_delete_role" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -18475,7 +18476,7 @@ "name": "Request", "namespace": "security.bulk_put_role" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -18517,7 +18518,7 @@ "name": "Request", "namespace": "security.bulk_update_api_keys" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -18552,7 +18553,7 @@ "name": "Request", "namespace": "security.change_password" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -18813,7 +18814,7 @@ "name": "Request", "namespace": "security.create_api_key" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -18856,7 +18857,7 @@ "name": "Request", "namespace": "security.create_cross_cluster_api_key" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -18949,7 +18950,7 @@ "name": "Request", "namespace": "security.delegate_pki" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "response": { "name": "Response", "namespace": "security.delegate_pki" @@ -19818,7 +19819,7 @@ "name": "Request", "namespace": "security.get_token" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -19985,7 +19986,7 @@ "name": "Request", "namespace": "security.grant_api_key" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -20027,7 +20028,7 @@ "name": "Request", "namespace": "security.has_privileges" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -20082,7 +20083,7 @@ "name": "Request", "namespace": "security.has_privileges_user_profile" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -20129,7 +20130,7 @@ "name": "Request", "namespace": "security.invalidate_api_key" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -20169,7 +20170,7 @@ "name": "Request", "namespace": "security.invalidate_token" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -20205,7 +20206,7 @@ "name": "Request", "namespace": "security.oidc_authenticate" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -20241,7 +20242,7 @@ "name": "Request", "namespace": "security.oidc_logout" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -20277,7 +20278,7 @@ "name": "Request", "namespace": "security.oidc_prepare_authentication" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -20371,7 +20372,7 @@ "name": "Request", "namespace": "security.put_role" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -20419,7 +20420,7 @@ "name": "Request", "namespace": "security.put_role_mapping" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -20460,7 +20461,7 @@ "name": "Request", "namespace": "security.put_user" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -20644,7 +20645,7 @@ "name": "Request", "namespace": "security.saml_authenticate" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -20686,7 +20687,7 @@ "name": "Request", "namespace": "security.saml_complete_logout" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -20728,7 +20729,7 @@ "name": "Request", "namespace": "security.saml_invalidate" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -20770,7 +20771,7 @@ "name": "Request", "namespace": "security.saml_logout" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -20812,7 +20813,7 @@ "name": "Request", "namespace": "security.saml_prepare_authentication" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -20985,7 +20986,7 @@ "name": "Request", "namespace": "security.update_cross_cluster_api_key" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -21026,7 +21027,7 @@ "name": "Request", "namespace": "security.update_settings" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -21071,7 +21072,7 @@ "name": "Request", "namespace": "security.update_user_profile_data" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -21201,7 +21202,7 @@ "name": "Request", "namespace": "shutdown.put_node" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -21244,7 +21245,7 @@ "name": "Request", "namespace": "simulate.ingest" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -21726,7 +21727,7 @@ "name": "Request", "namespace": "snapshot.clone" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -22251,7 +22252,7 @@ "name": "Request", "namespace": "sql.clear_cursor" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -22417,7 +22418,7 @@ "name": "Request", "namespace": "sql.query" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -22463,7 +22464,7 @@ "name": "Request", "namespace": "sql.translate" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -22891,7 +22892,7 @@ "name": "Request", "namespace": "synonyms.put_synonym" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -22936,7 +22937,7 @@ "name": "Request", "namespace": "synonyms.put_synonym_rule" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -23244,7 +23245,7 @@ "name": "Request", "namespace": "text_structure.find_message_structure" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -23334,7 +23335,7 @@ "name": "Request", "namespace": "text_structure.test_grok_pattern" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -23615,7 +23616,7 @@ "name": "Request", "namespace": "transform.put_transform" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -23882,7 +23883,7 @@ "name": "Request", "namespace": "transform.update_transform" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -23974,7 +23975,7 @@ "name": "Request", "namespace": "_global.update" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -24388,7 +24389,7 @@ "name": "Request", "namespace": "watcher.put_watch" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -24590,7 +24591,7 @@ "name": "Request", "namespace": "watcher.update_settings" }, - "requestBodyRequired": true, + "requestBodyRequired": false, "requestMediaType": [ "application/json" ], @@ -219488,7 +219489,7 @@ }, "path": [], "query": [], - "specLocation": "ml/validate/MlValidateJobRequest.ts#L27-L55" + "specLocation": "ml/validate/MlValidateJobRequest.ts#L27-L56" }, { "kind": "response", diff --git a/output/schema/validation-errors.json b/output/schema/validation-errors.json index c67541065f..35f338cb1b 100644 --- a/output/schema/validation-errors.json +++ b/output/schema/validation-errors.json @@ -1,26 +1,5 @@ { - "endpointErrors": { - "_internal.update_desired_nodes": { - "request": [ - "Request: query parameter 'master_timeout' does not exist in the json spec", - "Request: query parameter 'timeout' does not exist in the json spec" - ], - "response": [] - }, - "capabilities": { - "request": [ - "Request: query parameter 'timeout' does not exist in the json spec" - ], - "response": [] - }, - "monitoring.bulk": { - "request": [ - "Request: different number of urls in the json spec", - "Request: missing json spec path parameter 'type'" - ], - "response": [] - } - }, + "endpointErrors": {}, "generalErrors": [ "Dangling type '_global.scripts_painless_execute:PainlessExecutionPosition'", "Dangling type '_global.scripts_painless_execute:PainlessScript'", diff --git a/package-lock.json b/package-lock.json index c7b190e242..9cd24ff524 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,7 +7,7 @@ "": { "version": "overlay", "dependencies": { - "@redocly/cli": "^1.34.5" + "@redocly/cli": "^1.34.6" } }, "node_modules/@babel/code-frame": { @@ -434,9 +434,9 @@ } }, "node_modules/@redocly/cli": { - "version": "1.34.5", - "resolved": "https://registry.npmjs.org/@redocly/cli/-/cli-1.34.5.tgz", - "integrity": "sha512-5IEwxs7SGP5KEXjBKLU8Ffdz9by/KqNSeBk6YUVQaGxMXK//uYlTJIPntgUXbo1KAGG2d2q2XF8y4iFz6qNeiw==", + "version": "1.34.6", + "resolved": "https://registry.npmjs.org/@redocly/cli/-/cli-1.34.6.tgz", + "integrity": "sha512-V03jtLOXLm6+wpTuFNw9+eLHE6R3wywZo4Clt9XMPnulafbJcpCFz+J0e5/4Cw4zZB087xjU7WvRdI/bZ+pHtA==", "license": "MIT", "dependencies": { "@opentelemetry/api": "1.9.0", @@ -445,8 +445,8 @@ "@opentelemetry/sdk-trace-node": "1.26.0", "@opentelemetry/semantic-conventions": "1.27.0", "@redocly/config": "^0.22.0", - "@redocly/openapi-core": "1.34.5", - "@redocly/respect-core": "1.34.5", + "@redocly/openapi-core": "1.34.6", + "@redocly/respect-core": "1.34.6", "abort-controller": "^3.0.0", "chokidar": "^3.5.1", "colorette": "^1.2.0", @@ -458,8 +458,8 @@ "handlebars": "^4.7.6", "mobx": "^6.0.4", "pluralize": "^8.0.0", - "react": "^17.0.0 || ^18.2.0 || ^19.0.0", - "react-dom": "^17.0.0 || ^18.2.0 || ^19.0.0", + "react": "^17.0.0 || ^18.2.0 || ^19.2.1", + "react-dom": "^17.0.0 || ^18.2.0 || ^19.2.1", "redoc": "2.5.0", "semver": "^7.5.2", "simple-websocket": "^9.0.0", @@ -482,9 +482,9 @@ "license": "MIT" }, "node_modules/@redocly/openapi-core": { - "version": "1.34.5", - "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.34.5.tgz", - "integrity": "sha512-0EbE8LRbkogtcCXU7liAyC00n9uNG9hJ+eMyHFdUsy9lB/WGqnEBgwjA9q2cyzAVcdTkQqTBBU1XePNnN3OijA==", + "version": "1.34.6", + "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.34.6.tgz", + "integrity": "sha512-2+O+riuIUgVSuLl3Lyh5AplWZyVMNuG2F98/o6NrutKJfW4/GTZdPpZlIphS0HGgcOHgmWcCSHj+dWFlZaGSHw==", "license": "MIT", "dependencies": { "@redocly/ajv": "^8.11.2", @@ -503,14 +503,14 @@ } }, "node_modules/@redocly/respect-core": { - "version": "1.34.5", - "resolved": "https://registry.npmjs.org/@redocly/respect-core/-/respect-core-1.34.5.tgz", - "integrity": "sha512-GheC/g/QFztPe9UA9LamooSplQuy9pe0Yr8XGTqkz0ahivLDl7svoy/LSQNn1QH3XGtLKwFYMfTwFR2TAYyh5Q==", + "version": "1.34.6", + "resolved": "https://registry.npmjs.org/@redocly/respect-core/-/respect-core-1.34.6.tgz", + "integrity": "sha512-nXFBRctoB4CPCLR2it2WxDsuAE/nLd4EnW9mQ+IUKrIFAjMv1O6rgggxkgdlyKUyenYkajJIHSKwVbRS6FwlEQ==", "license": "MIT", "dependencies": { "@faker-js/faker": "^7.6.0", "@redocly/ajv": "8.11.2", - "@redocly/openapi-core": "1.34.5", + "@redocly/openapi-core": "1.34.6", "better-ajv-errors": "^1.2.0", "colorette": "^2.0.20", "concat-stream": "^2.0.0", @@ -2274,24 +2274,24 @@ } }, "node_modules/react": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", - "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", + "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/react-dom": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", - "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==", "license": "MIT", "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.2.0" + "react": "^19.2.3" } }, "node_modules/react-is": { diff --git a/package.json b/package.json index a5f1a5e0a7..ea76d681d6 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "transform-to-openapi": "npm run transform-to-openapi --prefix compiler --" }, "dependencies": { - "@redocly/cli": "^1.34.5" + "@redocly/cli": "^1.34.6" }, "version": "overlay" } diff --git a/specification/_doc_ids/table.csv b/specification/_doc_ids/table.csv index d0dd9caa12..3aaf333986 100644 --- a/specification/_doc_ids/table.csv +++ b/specification/_doc_ids/table.csv @@ -465,7 +465,7 @@ ml-get-memory,https://www.elastic.co/docs/api/doc/elasticsearch/operation/operat ml-get-overall-buckets,https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-ml-get-overall-buckets,https://www.elastic.co/guide/en/elasticsearch/reference/8.18/ml-get-overall-buckets.html, ml-get-record,https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-ml-get-records,https://www.elastic.co/guide/en/elasticsearch/reference/8.18/ml-get-record.html, ml-get-snapshot,https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-ml-get-model-snapshots,https://www.elastic.co/guide/en/elasticsearch/reference/8.18/ml-get-snapshot.html, -ml-jobs,https://www.elastic.co/docs/explore-analyze/machine-learning/anomaly-detection/ml-ad-run-jobs,, +ml-jobs,https://www.elastic.co/guide/en/machine-learning/current/ml-jobs.html,, ml-model-snapshots,https://www.elastic.co/docs/explore-analyze/machine-learning/anomaly-detection/ml-ad-run-jobs#ml-ad-model-snapshots,, ml-open-job,https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-ml-open-job,https://www.elastic.co/guide/en/elasticsearch/reference/8.18/ml-open-job.html, ml-post-calendar-event,https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-ml-post-calendar-events,https://www.elastic.co/guide/en/elasticsearch/reference/8.18/ml-post-calendar-event.html, diff --git a/specification/ml/validate/MlValidateJobRequest.ts b/specification/ml/validate/MlValidateJobRequest.ts index d020d52461..2e2d531556 100644 --- a/specification/ml/validate/MlValidateJobRequest.ts +++ b/specification/ml/validate/MlValidateJobRequest.ts @@ -30,6 +30,7 @@ import { ModelPlotConfig } from '@ml/_types/ModelPlot' * @rest_spec_name ml.validate * @availability stack since=6.3.0 stability=stable visibility=private * @availability serverless stability=stable visibility=private + * @doc_id ml-jobs * @doc_tag ml anomaly */ export interface Request extends RequestBase { diff --git a/specification/package-lock.json b/specification/package-lock.json index b05c3db44f..8862f03a9c 100644 --- a/specification/package-lock.json +++ b/specification/package-lock.json @@ -20,7 +20,6 @@ "license": "Apache-2.0", "dependencies": { "@typescript-eslint/utils": "^8.32.1", - "eslint-plugin-jsdoc": "^61.2.1", "markdownlint": "^0.39.0", "typescript": "^5.8.3" },