diff --git a/packages/kbn-openapi-generator/redocly_linter/config.yaml b/packages/kbn-openapi-generator/redocly_linter/config.yaml index b423d9172b1c8..fc4ff630cc2bb 100644 --- a/packages/kbn-openapi-generator/redocly_linter/config.yaml +++ b/packages/kbn-openapi-generator/redocly_linter/config.yaml @@ -5,23 +5,24 @@ plugins: rules: spec: error - spec-strict-refs: warn + spec-strict-refs: error no-path-trailing-slash: error no-identical-paths: error - no-ambiguous-paths: warn + no-ambiguous-paths: error no-unresolved-refs: error no-enum-type-mismatch: error component-name-unique: error path-declaration-must-exist: error path-not-include-query: error - path-parameters-defined: warn - operation-description: warn operation-2xx-response: error - operation-4xx-response: warn operation-operationId: error operation-operationId-unique: error - operation-summary: warn operation-operationId-url-safe: error operation-parameters-unique: error - boolean-parameter-prefixes: warn extra-linter-rules-plugin/valid-x-modify: error + # Disable rules generating the majority of warnings. + # They will be handled separately. + # operation-description: warn + # operation-summary: warn + # operation-4xx-response: warn + # path-parameters-defined: warn diff --git a/x-pack/plugins/osquery/common/api/asset/assets.gen.ts b/x-pack/plugins/osquery/common/api/asset/assets.gen.ts new file mode 100644 index 0000000000000..f0cc5209e13a4 --- /dev/null +++ b/x-pack/plugins/osquery/common/api/asset/assets.gen.ts @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/* + * NOTICE: Do not edit this file manually. + * This file is automatically generated by the OpenAPI Generator, @kbn/openapi-generator. + * + * info: + * title: Assets Schema + * version: 1 + */ + +import { z } from 'zod'; + +import { AssetsRequestQuery } from './assets_status.gen'; + +export type ReadAssetsStatusRequestParams = z.infer; +export const ReadAssetsStatusRequestParams = z.object({ + query: AssetsRequestQuery, +}); +export type ReadAssetsStatusRequestParamsInput = z.input; + +export type ReadAssetsStatusResponse = z.infer; +export const ReadAssetsStatusResponse = z.object({}); + +export type UpdateAssetsStatusRequestParams = z.infer; +export const UpdateAssetsStatusRequestParams = z.object({ + query: AssetsRequestQuery, +}); +export type UpdateAssetsStatusRequestParamsInput = z.input; + +export type UpdateAssetsStatusResponse = z.infer; +export const UpdateAssetsStatusResponse = z.object({}); diff --git a/x-pack/plugins/osquery/common/api/asset/assets.schema.yaml b/x-pack/plugins/osquery/common/api/asset/assets.schema.yaml index 31688b7ce66cb..2769bc188ab20 100644 --- a/x-pack/plugins/osquery/common/api/asset/assets.schema.yaml +++ b/x-pack/plugins/osquery/common/api/asset/assets.schema.yaml @@ -5,25 +5,41 @@ info: paths: /internal/osquery/assets: get: + x-codegen-enabled: true + operationId: ReadAssetsStatus summary: Get assets parameters: - - $ref: './assets_status.schema.yaml#/components/parameters/AssetsStatusRequestQueryParameter' + - name: query + in: path + required: true + schema: + $ref: './assets_status.schema.yaml#/components/schemas/AssetsRequestQuery' responses: '200': description: OK content: application/json: schema: - $ref: './assets_status.schema.yaml#/components/schemas/SuccessResponse' + type: object + properties: {} + # Define properties for the success response if needed /internal/osquery/assets/update: post: + x-codegen-enabled: true + operationId: UpdateAssetsStatus summary: Update assets parameters: - - $ref: './assets_status.schema.yaml#/components/parameters/AssetsStatusRequestQueryParameter' + - name: query + in: path + required: true + schema: + $ref: './assets_status.schema.yaml#/components/schemas/AssetsRequestQuery' responses: '200': description: OK content: application/json: schema: - $ref: './assets_status.schema.yaml#/components/schemas/SuccessResponse' + type: object + properties: {} + # Define properties for the success response if needed diff --git a/x-pack/plugins/osquery/common/api/asset/assets_status.gen.ts b/x-pack/plugins/osquery/common/api/asset/assets_status.gen.ts index 53a98b96612ea..fd3c50374943f 100644 --- a/x-pack/plugins/osquery/common/api/asset/assets_status.gen.ts +++ b/x-pack/plugins/osquery/common/api/asset/assets_status.gen.ts @@ -18,6 +18,3 @@ import { z } from 'zod'; export type AssetsRequestQuery = z.infer; export const AssetsRequestQuery = z.object({}); - -export type SuccessResponse = z.infer; -export const SuccessResponse = z.object({}); diff --git a/x-pack/plugins/osquery/common/api/asset/assets_status.schema.yaml b/x-pack/plugins/osquery/common/api/asset/assets_status.schema.yaml index 48322c1266b07..fb57329a9992d 100644 --- a/x-pack/plugins/osquery/common/api/asset/assets_status.schema.yaml +++ b/x-pack/plugins/osquery/common/api/asset/assets_status.schema.yaml @@ -2,19 +2,8 @@ openapi: 3.0.0 info: title: Assets Status Schema version: '1' -paths: { } +paths: {} components: - parameters: - AssetsStatusRequestQueryParameter: - name: query - in: path - required: true - schema: - $ref: '#/components/schemas/AssetsRequestQuery' schemas: AssetsRequestQuery: type: object - SuccessResponse: - type: object - properties: {} - # Define properties for the success response if needed diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/fleet_wrapper.gen.ts b/x-pack/plugins/osquery/common/api/fleet_wrapper/fleet_wrapper.gen.ts new file mode 100644 index 0000000000000..1ecea2c4caf19 --- /dev/null +++ b/x-pack/plugins/osquery/common/api/fleet_wrapper/fleet_wrapper.gen.ts @@ -0,0 +1,51 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/* + * NOTICE: Do not edit this file manually. + * This file is automatically generated by the OpenAPI Generator, @kbn/openapi-generator. + * + * info: + * title: Fleet wrapper schema + * version: 1 + */ + +import { z } from 'zod'; + +import { Id } from '../model/schema/common_attributes.gen'; + +export type GetAgentDetailsRequestParams = z.infer; +export const GetAgentDetailsRequestParams = z.object({ + id: Id, +}); +export type GetAgentDetailsRequestParamsInput = z.input; + +export type GetAgentDetailsResponse = z.infer; +export const GetAgentDetailsResponse = z.object({}); + +export type GetAgentPackagePoliciesResponse = z.infer; +export const GetAgentPackagePoliciesResponse = z.object({}); + +export type GetAgentPoliciesResponse = z.infer; +export const GetAgentPoliciesResponse = z.object({}); + +export type GetAgentPolicyRequestParams = z.infer; +export const GetAgentPolicyRequestParams = z.object({ + id: Id, +}); +export type GetAgentPolicyRequestParamsInput = z.input; + +export type GetAgentPolicyResponse = z.infer; +export const GetAgentPolicyResponse = z.object({}); +export type GetAgentsRequestQuery = z.infer; +export const GetAgentsRequestQuery = z.object({ + query: z.object({}), +}); +export type GetAgentsRequestQueryInput = z.input; + +export type GetAgentsResponse = z.infer; +export const GetAgentsResponse = z.object({}); diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/fleet_wrapper.schema.yaml b/x-pack/plugins/osquery/common/api/fleet_wrapper/fleet_wrapper.schema.yaml index 7e46e15abb825..fa5a576cb1a2e 100644 --- a/x-pack/plugins/osquery/common/api/fleet_wrapper/fleet_wrapper.schema.yaml +++ b/x-pack/plugins/osquery/common/api/fleet_wrapper/fleet_wrapper.schema.yaml @@ -5,66 +5,94 @@ info: paths: /internal/osquery/fleet_wrapper/agents: get: + x-codegen-enabled: true + operationId: GetAgents summary: Get agents parameters: - - $ref: './get_agents.schema.yaml#/components/parameters/GetAgentsRequestQueryParameter' + - name: query + in: query + required: true + schema: + type: object + additionalProperties: true responses: '200': description: OK content: application/json: schema: - $ref: './get_agents.schema.yaml#/components/schemas/SuccessResponse' + type: object + properties: {} + # Define properties for the success response if needed /internal/osquery/fleet_wrapper/agents/{id}: get: + x-codegen-enabled: true + operationId: GetAgentDetails summary: Get Agent details parameters: - - $ref: './get_agent_details.schema.yaml#/components/parameters/GetAgentDetailsRequestQueryParameter' + - name: id + in: path + required: true + schema: + $ref: '../model/schema/common_attributes.schema.yaml#/components/schemas/Id' responses: '200': description: OK content: application/json: schema: - $ref: './get_agent_details.schema.yaml#/components/schemas/SuccessResponse' + type: object + properties: {} + # Define properties for the success response if needed /internal/osquery/fleet_wrapper/agent_policies: get: + x-codegen-enabled: true + operationId: GetAgentPolicies summary: Get Agent policies - parameters: - - $ref: './get_agent_policies.schema.yaml#/components/parameters/GetAgentPoliciesRequestParameter' - - $ref: './get_agent_policies.schema.yaml#/components/parameters/GetAgentPoliciesRequestQueryParameter' responses: '200': description: OK content: application/json: schema: - $ref: './get_agent_policies.schema.yaml#/components/schemas/SuccessResponse' + type: object + properties: {} + # Define properties for the success response if needed /internal/osquery/fleet_wrapper/agent_policies/{id}: get: + x-codegen-enabled: true + operationId: GetAgentPolicy summary: Get Agent policy parameters: - - $ref: './get_agent_policy.schema.yaml#/components/parameters/GetAgentPolicyRequestParameter' + - name: id + in: path + required: true + schema: + $ref: '../model/schema/common_attributes.schema.yaml#/components/schemas/Id' responses: '200': description: OK content: application/json: schema: - $ref: './get_agent_policy.schema.yaml#/components/schemas/SuccessResponse' + type: object + properties: {} + # Define properties for the success response if needed /internal/osquery/fleet_wrapper/package_policies: get: + x-codegen-enabled: true + operationId: GetAgentPackagePolicies summary: Get Agent policy - parameters: - - $ref: './get_package_policies.schema.yaml#/components/parameters/GetPackagePoliciesRequestQueryParameter' responses: '200': description: OK content: application/json: schema: - $ref: './get_package_policies.schema.yaml#/components/schemas/SuccessResponse' + type: object + properties: {} + # Define properties for the success response if needed diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_details.gen.ts b/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_details.gen.ts deleted file mode 100644 index 5d721a018205b..0000000000000 --- a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_details.gen.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -/* - * NOTICE: Do not edit this file manually. - * This file is automatically generated by the OpenAPI Generator, @kbn/openapi-generator. - * - * info: - * title: Get agent details schema - * version: 1 - */ - -import { z } from 'zod'; - -export type GetAgentDetailsRequestParams = z.infer; -export const GetAgentDetailsRequestParams = z.object({}); - -export type SuccessResponse = z.infer; -export const SuccessResponse = z.object({}); diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_details.schema.yaml b/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_details.schema.yaml deleted file mode 100644 index bdf4cb3329cdf..0000000000000 --- a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_details.schema.yaml +++ /dev/null @@ -1,20 +0,0 @@ -openapi: 3.0.0 -info: - title: Get agent details schema - version: '1' -paths: { } -components: - parameters: - GetAgentDetailsRequestQueryParameter: - name: query - in: path - required: true - schema: - $ref: '#/components/schemas/GetAgentDetailsRequestParams' - schemas: - GetAgentDetailsRequestParams: - type: object - SuccessResponse: - type: object - properties: {} - # Define properties for the success response if needed diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_details_route.ts b/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_details_route.ts deleted file mode 100644 index fcc7dad089bab..0000000000000 --- a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_details_route.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; - -export const getAgentDetailsRequestParamsSchema = t.unknown; - -export type GetAgentDetailsRequestParamsSchema = t.OutputOf< - typeof getAgentDetailsRequestParamsSchema ->; diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_policies.gen.ts b/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_policies.gen.ts deleted file mode 100644 index 875c21a600e93..0000000000000 --- a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_policies.gen.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -/* - * NOTICE: Do not edit this file manually. - * This file is automatically generated by the OpenAPI Generator, @kbn/openapi-generator. - * - * info: - * title: Get agent policies schema - * version: 1 - */ - -import { z } from 'zod'; - -export type GetAgentPoliciesRequestParams = z.infer; -export const GetAgentPoliciesRequestParams = z.object({}); - -export type SuccessResponse = z.infer; -export const SuccessResponse = z.object({}); diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_policies.schema.yaml b/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_policies.schema.yaml deleted file mode 100644 index cdfb521712674..0000000000000 --- a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_policies.schema.yaml +++ /dev/null @@ -1,26 +0,0 @@ -openapi: 3.0.0 -info: - title: Get agent policies schema - version: '1' -paths: { } -components: - parameters: - GetAgentPoliciesRequestQueryParameter: - name: query - in: query - required: true - schema: - $ref: '#/components/schemas/GetAgentPoliciesRequestParams' - GetAgentPoliciesRequestParameter: - name: query - in: path - required: true - schema: - $ref: '#/components/schemas/GetAgentPoliciesRequestParams' - schemas: - GetAgentPoliciesRequestParams: - type: object - SuccessResponse: - type: object - properties: {} - # Define properties for the success response if needed diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_policies_route.ts b/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_policies_route.ts deleted file mode 100644 index 84a68e5fbf4c7..0000000000000 --- a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_policies_route.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import * as t from 'io-ts'; - -export const getAgentPoliciesRequestParamsSchema = t.unknown; - -export type GetAgentPoliciesRequestParamsSchema = t.OutputOf< - typeof getAgentPoliciesRequestParamsSchema ->; - -export const getAgentPoliciesRequestQuerySchema = t.unknown; - -export type GetAgentPoliciesRequestQuerySchema = t.OutputOf< - typeof getAgentPoliciesRequestQuerySchema ->; diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_policy.gen.ts b/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_policy.gen.ts deleted file mode 100644 index 3f19e274761bd..0000000000000 --- a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_policy.gen.ts +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -/* - * NOTICE: Do not edit this file manually. - * This file is automatically generated by the OpenAPI Generator, @kbn/openapi-generator. - * - * info: - * title: Get agent policy schema - * version: 1 - */ - -import { z } from 'zod'; - -import { Id } from '../model/schema/common_attributes.gen'; - -export type GetAgentPolicyRequestParams = z.infer; -export const GetAgentPolicyRequestParams = z.object({ - id: Id.optional(), -}); - -export type SuccessResponse = z.infer; -export const SuccessResponse = z.object({}); diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_policy.schema.yaml b/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_policy.schema.yaml deleted file mode 100644 index dc4a2607bfc6b..0000000000000 --- a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_policy.schema.yaml +++ /dev/null @@ -1,23 +0,0 @@ -openapi: 3.0.0 -info: - title: Get agent policy schema - version: '1' -paths: { } -components: - parameters: - GetAgentPolicyRequestParameter: - name: query - in: path - required: true - schema: - $ref: '#/components/schemas/GetAgentPolicyRequestParams' - schemas: - GetAgentPolicyRequestParams: - type: object - properties: - id: - $ref: '../model/schema/common_attributes.schema.yaml#/components/schemas/Id' - SuccessResponse: - type: object - properties: {} - # Define properties for the success response if needed diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_status.gen.ts b/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_status.gen.ts index 80adc112312a7..041aac0bf2320 100644 --- a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_status.gen.ts +++ b/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_status.gen.ts @@ -26,6 +26,3 @@ export const GetAgentStatusRequestQueryParams = z.object({ kuery: KueryOrUndefined.optional(), policyId: Id.optional(), }); - -export type SuccessResponse = z.infer; -export const SuccessResponse = z.object({}); diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_status.schema.yaml b/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_status.schema.yaml index e10174bee2634..af2e9307b4c12 100644 --- a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_status.schema.yaml +++ b/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_status.schema.yaml @@ -2,21 +2,8 @@ openapi: 3.0.0 info: title: Get agent status schema version: '1' -paths: { } +paths: {} components: - parameters: - GetAgentStatusRequestQueryParameter: - name: query - in: query - required: true - schema: - $ref: '#/components/schemas/GetAgentStatusRequestQueryParams' - GetAgentStatusRequestParameter: - name: query - in: path - required: true - schema: - $ref: '#/components/schemas/GetAgentStatusRequestParams' schemas: GetAgentStatusRequestParams: type: object @@ -27,7 +14,3 @@ components: $ref: '../model/schema/common_attributes.schema.yaml#/components/schemas/KueryOrUndefined' policyId: $ref: '../model/schema/common_attributes.schema.yaml#/components/schemas/Id' - SuccessResponse: - type: object - properties: {} - # Define properties for the success response if needed diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agents.gen.ts b/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agents.gen.ts deleted file mode 100644 index b162bcbfd967b..0000000000000 --- a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agents.gen.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -/* - * NOTICE: Do not edit this file manually. - * This file is automatically generated by the OpenAPI Generator, @kbn/openapi-generator. - * - * info: - * title: Get agents schema - * version: 1 - */ - -import { z } from 'zod'; - -export type GetAgentsRequestParams = z.infer; -export const GetAgentsRequestParams = z.object({}); - -export type SuccessResponse = z.infer; -export const SuccessResponse = z.object({}); diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agents.schema.yaml b/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agents.schema.yaml deleted file mode 100644 index c1a387512c3d3..0000000000000 --- a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agents.schema.yaml +++ /dev/null @@ -1,20 +0,0 @@ -openapi: 3.0.0 -info: - title: Get agents schema - version: '1' -paths: { } -components: - parameters: - GetAgentsRequestQueryParameter: - name: query - in: path - required: true - schema: - $ref: '#/components/schemas/GetAgentsRequestParams' - schemas: - GetAgentsRequestParams: - type: object - SuccessResponse: - type: object - properties: {} - # Define properties for the success response if needed diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_package_policies.gen.ts b/x-pack/plugins/osquery/common/api/fleet_wrapper/get_package_policies.gen.ts deleted file mode 100644 index f4c3be37371ea..0000000000000 --- a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_package_policies.gen.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -/* - * NOTICE: Do not edit this file manually. - * This file is automatically generated by the OpenAPI Generator, @kbn/openapi-generator. - * - * info: - * title: Get package policies schema - * version: 1 - */ - -import { z } from 'zod'; - -export type GetPackagePoliciesRequestParams = z.infer; -export const GetPackagePoliciesRequestParams = z.object({}); - -export type SuccessResponse = z.infer; -export const SuccessResponse = z.object({}); diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_package_policies.schema.yaml b/x-pack/plugins/osquery/common/api/fleet_wrapper/get_package_policies.schema.yaml deleted file mode 100644 index 708867e8f7fa1..0000000000000 --- a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_package_policies.schema.yaml +++ /dev/null @@ -1,20 +0,0 @@ -openapi: 3.0.0 -info: - title: Get package policies schema - version: '1' -paths: { } -components: - parameters: - GetPackagePoliciesRequestQueryParameter: - name: query - in: path - required: true - schema: - $ref: '#/components/schemas/GetPackagePoliciesRequestParams' - schemas: - GetPackagePoliciesRequestParams: - type: object - SuccessResponse: - type: object - properties: {} - # Define properties for the success response if needed diff --git a/x-pack/plugins/osquery/common/api/index.ts b/x-pack/plugins/osquery/common/api/index.ts index 681eaab583ca8..b1c42a8dc45e6 100644 --- a/x-pack/plugins/osquery/common/api/index.ts +++ b/x-pack/plugins/osquery/common/api/index.ts @@ -7,8 +7,7 @@ export * from './asset/get_assets_status_route'; export * from './asset/update_assets_status_route'; -export * from './fleet_wrapper/get_agent_policies_route'; -export * from './fleet_wrapper/get_agent_details_route'; +export * from './fleet_wrapper/fleet_wrapper.gen'; export * from './fleet_wrapper/get_agent_policy_route'; export * from './fleet_wrapper/get_agent_status_for_agent_policy_route'; export * from './fleet_wrapper/get_agents_route'; diff --git a/x-pack/plugins/osquery/common/api/status/privileges_check.schema.yaml b/x-pack/plugins/osquery/common/api/status/privileges_check.schema.yaml index 2702d1bafa040..8a8267a83f336 100644 --- a/x-pack/plugins/osquery/common/api/status/privileges_check.schema.yaml +++ b/x-pack/plugins/osquery/common/api/status/privileges_check.schema.yaml @@ -5,6 +5,7 @@ info: paths: /internal/osquery/privileges_check: get: + operationId: ReadPrivilegesCheck summary: Get Osquery privileges check responses: '200': @@ -13,4 +14,4 @@ paths: application/json: schema: type: object - properties: { } + properties: {} diff --git a/x-pack/plugins/osquery/common/api/status/status.schema.yaml b/x-pack/plugins/osquery/common/api/status/status.schema.yaml index 9ab4d3bd0e607..1ed1e096ba10e 100644 --- a/x-pack/plugins/osquery/common/api/status/status.schema.yaml +++ b/x-pack/plugins/osquery/common/api/status/status.schema.yaml @@ -5,6 +5,7 @@ info: paths: /internal/osquery/status: get: + operationId: ReadInstallationStatus summary: Get Osquery installation status responses: '200': @@ -13,4 +14,4 @@ paths: application/json: schema: type: object - properties: { } + properties: {} diff --git a/x-pack/plugins/osquery/scripts/openapi/generate.js b/x-pack/plugins/osquery/scripts/openapi/generate.js index 35c099301e81c..018a965702c3e 100644 --- a/x-pack/plugins/osquery/scripts/openapi/generate.js +++ b/x-pack/plugins/osquery/scripts/openapi/generate.js @@ -17,6 +17,4 @@ generate({ rootDir: OSQUERY_ROOT, sourceGlob: './**/*.schema.yaml', templateName: 'zod_operation_schema', - // TODO: Fix lint errors - skipLinting: true, }); diff --git a/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_details.ts b/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_details.ts index b3b6539f9fc35..c1d445fd40183 100644 --- a/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_details.ts +++ b/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_details.ts @@ -6,12 +6,11 @@ */ import type { IRouter } from '@kbn/core/server'; -import type { GetAgentDetailsRequestParamsSchema } from '../../../common/api'; -import { buildRouteValidation } from '../../utils/build_validation/route_validation'; +import { buildRouteValidationWithZod } from '@kbn/zod-helpers'; import { API_VERSIONS } from '../../../common/constants'; import { PLUGIN_ID } from '../../../common'; import type { OsqueryAppContext } from '../../lib/osquery_app_context_services'; -import { getAgentDetailsRequestParamsSchema } from '../../../common/api'; +import { GetAgentDetailsRequestParams } from '../../../common/api'; export const getAgentDetailsRoute = (router: IRouter, osqueryContext: OsqueryAppContext) => { router.versioned @@ -25,10 +24,7 @@ export const getAgentDetailsRoute = (router: IRouter, osqueryContext: OsqueryApp version: API_VERSIONS.internal.v1, validate: { request: { - params: buildRouteValidation< - typeof getAgentDetailsRequestParamsSchema, - GetAgentDetailsRequestParamsSchema - >(getAgentDetailsRequestParamsSchema), + params: buildRouteValidationWithZod(GetAgentDetailsRequestParams), }, }, }, @@ -38,8 +34,7 @@ export const getAgentDetailsRoute = (router: IRouter, osqueryContext: OsqueryApp try { agent = await osqueryContext.service .getAgentService() - ?.asInternalUser // @ts-expect-error update types - ?.getAgent(request.params.id); + ?.asInternalUser?.getAgent(request.params.id); } catch (err) { return response.notFound(); } diff --git a/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_policies.ts b/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_policies.ts index ee80758652706..9e84410712506 100644 --- a/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_policies.ts +++ b/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_policies.ts @@ -11,19 +11,10 @@ import { satisfies } from 'semver'; import type { GetAgentPoliciesResponseItem, PackagePolicy } from '@kbn/fleet-plugin/common'; import { PACKAGE_POLICY_SAVED_OBJECT_TYPE } from '@kbn/fleet-plugin/common'; import type { IRouter } from '@kbn/core/server'; -import type { - GetAgentPoliciesRequestParamsSchema, - GetAgentPoliciesRequestQuerySchema, -} from '../../../common/api'; -import { buildRouteValidation } from '../../utils/build_validation/route_validation'; import { API_VERSIONS } from '../../../common/constants'; import { OSQUERY_INTEGRATION_NAME, PLUGIN_ID } from '../../../common'; import type { OsqueryAppContext } from '../../lib/osquery_app_context_services'; import { getInternalSavedObjectsClient } from '../utils'; -import { - getAgentPoliciesRequestParamsSchema, - getAgentPoliciesRequestQuerySchema, -} from '../../../common/api'; export const getAgentPoliciesRoute = (router: IRouter, osqueryContext: OsqueryAppContext) => { router.versioned @@ -35,18 +26,7 @@ export const getAgentPoliciesRoute = (router: IRouter, osqueryContext: OsqueryAp .addVersion( { version: API_VERSIONS.internal.v1, - validate: { - request: { - params: buildRouteValidation< - typeof getAgentPoliciesRequestParamsSchema, - GetAgentPoliciesRequestParamsSchema - >(getAgentPoliciesRequestParamsSchema), - query: buildRouteValidation< - typeof getAgentPoliciesRequestQuerySchema, - GetAgentPoliciesRequestQuerySchema - >(getAgentPoliciesRequestQuerySchema), - }, - }, + validate: {}, }, async (context, request, response) => { const internalSavedObjectsClient = await getInternalSavedObjectsClient( diff --git a/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_policy.ts b/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_policy.ts index 85de68f7e44d9..bad5b01289d52 100644 --- a/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_policy.ts +++ b/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_policy.ts @@ -6,13 +6,12 @@ */ import type { IRouter } from '@kbn/core/server'; -import type { GetAgentPolicyRequestParamsSchema } from '../../../common/api'; -import { buildRouteValidation } from '../../utils/build_validation/route_validation'; +import { buildRouteValidationWithZod } from '@kbn/zod-helpers'; import { API_VERSIONS } from '../../../common/constants'; import { PLUGIN_ID } from '../../../common'; import type { OsqueryAppContext } from '../../lib/osquery_app_context_services'; import { getInternalSavedObjectsClient } from '../utils'; -import { getAgentPolicyRequestParamsSchema } from '../../../common/api'; +import { GetAgentPolicyRequestParams } from '../../../common/api'; export const getAgentPolicyRoute = (router: IRouter, osqueryContext: OsqueryAppContext) => { router.versioned @@ -26,10 +25,7 @@ export const getAgentPolicyRoute = (router: IRouter, osqueryContext: OsqueryAppC version: API_VERSIONS.internal.v1, validate: { request: { - params: buildRouteValidation< - typeof getAgentPolicyRequestParamsSchema, - GetAgentPolicyRequestParamsSchema - >(getAgentPolicyRequestParamsSchema), + params: buildRouteValidationWithZod(GetAgentPolicyRequestParams), }, }, }, diff --git a/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_package_policies.ts b/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_package_policies.ts index 887fa4811e73e..86719125b97eb 100644 --- a/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_package_policies.ts +++ b/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_package_policies.ts @@ -7,13 +7,10 @@ import type { IRouter } from '@kbn/core/server'; import { PACKAGE_POLICY_SAVED_OBJECT_TYPE } from '@kbn/fleet-plugin/common'; -import type { GetPackagePoliciesRequestQuerySchema } from '../../../common/api'; -import { buildRouteValidation } from '../../utils/build_validation/route_validation'; import { API_VERSIONS } from '../../../common/constants'; import { PLUGIN_ID, OSQUERY_INTEGRATION_NAME } from '../../../common'; import type { OsqueryAppContext } from '../../lib/osquery_app_context_services'; import { getInternalSavedObjectsClient } from '../utils'; -import { getPackagePoliciesRequestQuerySchema } from '../../../common/api'; export const getPackagePoliciesRoute = (router: IRouter, osqueryContext: OsqueryAppContext) => { router.versioned @@ -25,14 +22,7 @@ export const getPackagePoliciesRoute = (router: IRouter, osqueryContext: Osquery .addVersion( { version: API_VERSIONS.internal.v1, - validate: { - request: { - query: buildRouteValidation< - typeof getPackagePoliciesRequestQuerySchema, - GetPackagePoliciesRequestQuerySchema - >(getPackagePoliciesRequestQuerySchema), - }, - }, + validate: {}, }, async (context, request, response) => { const internalSavedObjectsClient = await getInternalSavedObjectsClient( diff --git a/x-pack/plugins/osquery/tsconfig.json b/x-pack/plugins/osquery/tsconfig.json index 6d713311c777d..6cc74e9733a92 100644 --- a/x-pack/plugins/osquery/tsconfig.json +++ b/x-pack/plugins/osquery/tsconfig.json @@ -3,9 +3,7 @@ "compilerOptions": { "outDir": "target/types" }, - "exclude": [ - "target/**/*" - ], + "exclude": ["target/**/*"], "include": [ // add all the folders contains files to be compiled "common/**/*", @@ -77,6 +75,7 @@ "@kbn/openapi-generator", "@kbn/code-editor", "@kbn/search-types", - "@kbn/react-kibana-context-render" + "@kbn/react-kibana-context-render", + "@kbn/zod-helpers" ] } diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/index_management/create_index/create_index.schema.yaml b/x-pack/plugins/security_solution/common/api/detection_engine/index_management/create_index/create_index.schema.yaml index 63213117bd9fb..b825f5f7af7c0 100644 --- a/x-pack/plugins/security_solution/common/api/detection_engine/index_management/create_index/create_index.schema.yaml +++ b/x-pack/plugins/security_solution/common/api/detection_engine/index_management/create_index/create_index.schema.yaml @@ -35,6 +35,7 @@ paths: schema: $ref: '../../../model/error_responses.schema.yaml#/components/schemas/SiemErrorResponse' 404: + description: Not found content: application/json: schema: diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/index_management/read_index/read_index.schema.yaml b/x-pack/plugins/security_solution/common/api/detection_engine/index_management/read_index/read_index.schema.yaml index 4c38c57da7592..ddfbf564de2ac 100644 --- a/x-pack/plugins/security_solution/common/api/detection_engine/index_management/read_index/read_index.schema.yaml +++ b/x-pack/plugins/security_solution/common/api/detection_engine/index_management/read_index/read_index.schema.yaml @@ -38,6 +38,7 @@ paths: schema: $ref: '../../../model/error_responses.schema.yaml#/components/schemas/SiemErrorResponse' 404: + description: Not found content: application/json: schema: diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/bulk_upload_asset_criticality.gen.ts b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/bulk_upload_asset_criticality.gen.ts index c0d00e394b6b1..5315edc16ab9f 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/bulk_upload_asset_criticality.gen.ts +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/bulk_upload_asset_criticality.gen.ts @@ -18,7 +18,35 @@ import { z } from 'zod'; import { CreateAssetCriticalityRecord } from './common.gen'; -export type AssetCriticalityBulkUploadRequest = z.infer; -export const AssetCriticalityBulkUploadRequest = z.object({ +export type AssetCriticalityBulkUploadErrorItem = z.infer< + typeof AssetCriticalityBulkUploadErrorItem +>; +export const AssetCriticalityBulkUploadErrorItem = z.object({ + message: z.string(), + index: z.number().int(), +}); + +export type AssetCriticalityBulkUploadStats = z.infer; +export const AssetCriticalityBulkUploadStats = z.object({ + successful: z.number().int(), + failed: z.number().int(), + total: z.number().int(), +}); + +export type BulkUpsertAssetCriticalityRecordsRequestBody = z.infer< + typeof BulkUpsertAssetCriticalityRecordsRequestBody +>; +export const BulkUpsertAssetCriticalityRecordsRequestBody = z.object({ records: z.array(CreateAssetCriticalityRecord).min(1).max(1000), }); +export type BulkUpsertAssetCriticalityRecordsRequestBodyInput = z.input< + typeof BulkUpsertAssetCriticalityRecordsRequestBody +>; + +export type BulkUpsertAssetCriticalityRecordsResponse = z.infer< + typeof BulkUpsertAssetCriticalityRecordsResponse +>; +export const BulkUpsertAssetCriticalityRecordsResponse = z.object({ + errors: z.array(AssetCriticalityBulkUploadErrorItem), + stats: AssetCriticalityBulkUploadStats, +}); diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/bulk_upload_asset_criticality.schema.yaml b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/bulk_upload_asset_criticality.schema.yaml index b4b7d5d2f1fe4..c0fecede6da72 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/bulk_upload_asset_criticality.schema.yaml +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/bulk_upload_asset_criticality.schema.yaml @@ -13,40 +13,82 @@ paths: /api/asset_criticality/bulk: post: x-labels: [ess, serverless] + x-codegen-enabled: true + operationId: BulkUpsertAssetCriticalityRecords summary: Bulk upsert asset criticality data, creating or updating records as needed requestBody: content: application/json: schema: - $ref: '#/components/schemas/AssetCriticalityBulkUploadRequest' - + type: object + example: + records: + - id_value: 'host-1' + id_field: 'host.name' + criticality_level: 'low_impact' + - id_value: 'host-2' + id_field: 'host.name' + criticality_level: 'medium_impact' + properties: + records: + type: array + minItems: 1 + maxItems: 1000 + items: + $ref: './common.schema.yaml#/components/schemas/CreateAssetCriticalityRecord' + required: + - records responses: '200': description: Bulk upload successful content: application/json: schema: - $ref: './common.schema.yaml#/components/schemas/AssetCriticalityBulkUploadResponse' + type: object + example: + errors: + - message: 'Invalid ID field' + index: 0 + stats: + successful: 1 + failed: 1 + total: 2 + properties: + errors: + type: array + items: + $ref: '#/components/schemas/AssetCriticalityBulkUploadErrorItem' + stats: + $ref: '#/components/schemas/AssetCriticalityBulkUploadStats' + required: + - errors + - stats '413': description: File too large + components: schemas: - AssetCriticalityBulkUploadRequest: + AssetCriticalityBulkUploadErrorItem: type: object - example: - records: - - id_value: 'host-1' - id_field: 'host.name' - criticality_level: 'low_impact' - - id_value: 'host-2' - id_field: 'host.name' - criticality_level: 'medium_impact' properties: - records: - type: array - minItems: 1 - maxItems: 1000 - items: - $ref: './common.schema.yaml#/components/schemas/CreateAssetCriticalityRecord' + message: + type: string + index: + type: integer required: - - records + - message + - index + + AssetCriticalityBulkUploadStats: + type: object + properties: + successful: + type: integer + failed: + type: integer + total: + type: integer + required: + - successful + - failed + - total diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/common.gen.ts b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/common.gen.ts index 4b689d22944e1..dfaa5d852c993 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/common.gen.ts +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/common.gen.ts @@ -53,28 +53,6 @@ export const CreateAssetCriticalityRecord = AssetCriticalityRecordIdParts.merge( }) ); -export type CreateSingleAssetCriticalityRequest = z.infer< - typeof CreateSingleAssetCriticalityRequest ->; -export const CreateSingleAssetCriticalityRequest = CreateAssetCriticalityRecord.merge( - z.object({ - /** - * If 'wait_for' the request will wait for the index refresh. - */ - refresh: z.literal('wait_for').optional(), - }) -); - -export type DeleteAssetCriticalityRecord = z.infer; -export const DeleteAssetCriticalityRecord = AssetCriticalityRecordIdParts.merge( - z.object({ - /** - * If 'wait_for' the request will wait for the index refresh. - */ - refresh: z.literal('wait_for').optional(), - }) -); - export type AssetCriticalityRecord = z.infer; export const AssetCriticalityRecord = CreateAssetCriticalityRecord.merge( z.object({ @@ -84,24 +62,3 @@ export const AssetCriticalityRecord = CreateAssetCriticalityRecord.merge( '@timestamp': z.string().datetime(), }) ); - -export type AssetCriticalityBulkUploadErrorItem = z.infer< - typeof AssetCriticalityBulkUploadErrorItem ->; -export const AssetCriticalityBulkUploadErrorItem = z.object({ - message: z.string(), - index: z.number().int(), -}); - -export type AssetCriticalityBulkUploadStats = z.infer; -export const AssetCriticalityBulkUploadStats = z.object({ - successful: z.number().int(), - failed: z.number().int(), - total: z.number().int(), -}); - -export type AssetCriticalityBulkUploadResponse = z.infer; -export const AssetCriticalityBulkUploadResponse = z.object({ - errors: z.array(AssetCriticalityBulkUploadErrorItem), - stats: AssetCriticalityBulkUploadStats, -}); diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/common.schema.yaml b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/common.schema.yaml index 3218ec07e0fe2..8d3e05ab59bac 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/common.schema.yaml +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/common.schema.yaml @@ -58,24 +58,6 @@ components: $ref: '#/components/schemas/AssetCriticalityLevel' required: - criticality_level - CreateSingleAssetCriticalityRequest: - allOf: - - $ref: '#/components/schemas/CreateAssetCriticalityRecord' - - type: object - properties: - refresh: - type: string - enum: [wait_for] - description: If 'wait_for' the request will wait for the index refresh. - DeleteAssetCriticalityRecord: - allOf: - - $ref: '#/components/schemas/AssetCriticalityRecordIdParts' - - type: object - properties: - refresh: - type: string - enum: [wait_for] - description: If 'wait_for' the request will wait for the index refresh. AssetCriticalityRecord: allOf: - $ref: '#/components/schemas/CreateAssetCriticalityRecord' @@ -88,46 +70,3 @@ components: description: The time the record was created or updated. required: - '@timestamp' - AssetCriticalityBulkUploadErrorItem: - type: object - properties: - message: - type: string - index: - type: integer - required: - - message - - index - AssetCriticalityBulkUploadStats: - type: object - properties: - successful: - type: integer - failed: - type: integer - total: - type: integer - required: - - successful - - failed - - total - AssetCriticalityBulkUploadResponse: - type: object - example: - errors: - - message: 'Invalid ID field' - index: 0 - stats: - successful: 1 - failed: 1 - total: 2 - properties: - errors: - type: array - items: - $ref: '#/components/schemas/AssetCriticalityBulkUploadErrorItem' - stats: - $ref: '#/components/schemas/AssetCriticalityBulkUploadStats' - required: - - errors - - stats diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/create_asset_criticality.gen.ts b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/create_asset_criticality.gen.ts new file mode 100644 index 0000000000000..4836f4fe844dd --- /dev/null +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/create_asset_criticality.gen.ts @@ -0,0 +1,59 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/* + * NOTICE: Do not edit this file manually. + * This file is automatically generated by the OpenAPI Generator, @kbn/openapi-generator. + * + * info: + * title: Asset Criticality Create Record Schema + * version: 1 + */ + +import { z } from 'zod'; + +import { CreateAssetCriticalityRecord, AssetCriticalityRecord } from './common.gen'; + +export type CreateAssetCriticalityRecordRequestBody = z.infer< + typeof CreateAssetCriticalityRecordRequestBody +>; +export const CreateAssetCriticalityRecordRequestBody = CreateAssetCriticalityRecord.merge( + z.object({ + /** + * If 'wait_for' the request will wait for the index refresh. + */ + refresh: z.literal('wait_for').optional(), + }) +); +export type CreateAssetCriticalityRecordRequestBodyInput = z.input< + typeof CreateAssetCriticalityRecordRequestBody +>; + +export type CreateAssetCriticalityRecordResponse = z.infer< + typeof CreateAssetCriticalityRecordResponse +>; +export const CreateAssetCriticalityRecordResponse = AssetCriticalityRecord; + +export type InternalCreateAssetCriticalityRecordRequestBody = z.infer< + typeof InternalCreateAssetCriticalityRecordRequestBody +>; +export const InternalCreateAssetCriticalityRecordRequestBody = CreateAssetCriticalityRecord.merge( + z.object({ + /** + * If 'wait_for' the request will wait for the index refresh. + */ + refresh: z.literal('wait_for').optional(), + }) +); +export type InternalCreateAssetCriticalityRecordRequestBodyInput = z.input< + typeof InternalCreateAssetCriticalityRecordRequestBody +>; + +export type InternalCreateAssetCriticalityRecordResponse = z.infer< + typeof InternalCreateAssetCriticalityRecordResponse +>; +export const InternalCreateAssetCriticalityRecordResponse = AssetCriticalityRecord; diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/create_asset_criticality.schema.yaml b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/create_asset_criticality.schema.yaml index d59ce99c8717c..3d0bbf108d95f 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/create_asset_criticality.schema.yaml +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/create_asset_criticality.schema.yaml @@ -14,14 +14,23 @@ paths: post: x-labels: [ess, serverless] x-internal: true - operationId: AssetCriticalityCreateRecord + x-codegen-enabled: true + operationId: InternalCreateAssetCriticalityRecord summary: Deprecated Internal Create Criticality Record + deprecated: true requestBody: required: true content: application/json: schema: - $ref: './common.schema.yaml#/components/schemas/CreateSingleAssetCriticalityRequest' + allOf: + - $ref: './common.schema.yaml#/components/schemas/CreateAssetCriticalityRecord' + - type: object + properties: + refresh: + type: string + enum: [wait_for] + description: If 'wait_for' the request will wait for the index refresh. responses: '200': description: Successful response @@ -34,14 +43,22 @@ paths: /api/asset_criticality: post: x-labels: [ess, serverless] - operationId: AssetCriticalityCreateRecord + x-codegen-enabled: true + operationId: CreateAssetCriticalityRecord summary: Create Criticality Record requestBody: required: true content: application/json: schema: - $ref: './common.schema.yaml#/components/schemas/CreateSingleAssetCriticalityRequest' + allOf: + - $ref: './common.schema.yaml#/components/schemas/CreateAssetCriticalityRecord' + - type: object + properties: + refresh: + type: string + enum: [wait_for] + description: If 'wait_for' the request will wait for the index refresh. responses: '200': description: Successful response diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/delete_asset_criticality.gen.ts b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/delete_asset_criticality.gen.ts new file mode 100644 index 0000000000000..fe290a67c6634 --- /dev/null +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/delete_asset_criticality.gen.ts @@ -0,0 +1,61 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/* + * NOTICE: Do not edit this file manually. + * This file is automatically generated by the OpenAPI Generator, @kbn/openapi-generator. + * + * info: + * title: Asset Criticality Delete Record Schema + * version: 1 + */ + +import { z } from 'zod'; + +import { IdField } from './common.gen'; + +export type DeleteAssetCriticalityRecordRequestQuery = z.infer< + typeof DeleteAssetCriticalityRecordRequestQuery +>; +export const DeleteAssetCriticalityRecordRequestQuery = z.object({ + /** + * The ID value of the asset. + */ + id_value: z.string(), + /** + * The field representing the ID. + */ + id_field: IdField, + /** + * If 'wait_for' the request will wait for the index refresh. + */ + refresh: z.literal('wait_for').optional(), +}); +export type DeleteAssetCriticalityRecordRequestQueryInput = z.input< + typeof DeleteAssetCriticalityRecordRequestQuery +>; + +export type InternalDeleteAssetCriticalityRecordRequestQuery = z.infer< + typeof InternalDeleteAssetCriticalityRecordRequestQuery +>; +export const InternalDeleteAssetCriticalityRecordRequestQuery = z.object({ + /** + * The ID value of the asset. + */ + id_value: z.string(), + /** + * The field representing the ID. + */ + id_field: IdField, + /** + * If 'wait_for' the request will wait for the index refresh. + */ + refresh: z.literal('wait_for').optional(), +}); +export type InternalDeleteAssetCriticalityRecordRequestQueryInput = z.input< + typeof InternalDeleteAssetCriticalityRecordRequestQuery +>; diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/delete_asset_criticality.schema.yaml b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/delete_asset_criticality.schema.yaml index 94e1cc82e15ad..d66a2283596c0 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/delete_asset_criticality.schema.yaml +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/delete_asset_criticality.schema.yaml @@ -14,11 +14,31 @@ paths: delete: x-labels: [ess, serverless] x-internal: true - operationId: AssetCriticalityDeleteRecord + x-codegen-enabled: true + operationId: InternalDeleteAssetCriticalityRecord summary: Deprecated Internal Delete Criticality Record + deprecated: true parameters: - - $ref: './common.schema.yaml#/components/parameters/id_value' - - $ref: './common.schema.yaml#/components/parameters/id_field' + - name: id_value + in: query + required: true + schema: + type: string + description: The ID value of the asset. + - name: id_field + in: query + required: true + schema: + $ref: './common.schema.yaml#/components/schemas/IdField' + example: 'host.name' + description: The field representing the ID. + - name: refresh + in: query + required: false + schema: + type: string + enum: [wait_for] + description: If 'wait_for' the request will wait for the index refresh. responses: '200': description: Successful response @@ -27,11 +47,30 @@ paths: /api/asset_criticality: delete: x-labels: [ess, serverless] - operationId: AssetCriticalityDeleteRecord + x-codegen-enabled: true + operationId: DeleteAssetCriticalityRecord summary: Delete Criticality Record parameters: - - $ref: './common.schema.yaml#/components/parameters/id_value' - - $ref: './common.schema.yaml#/components/parameters/id_field' + - name: id_value + in: query + required: true + schema: + type: string + description: The ID value of the asset. + - name: id_field + in: query + required: true + schema: + $ref: './common.schema.yaml#/components/schemas/IdField' + example: 'host.name' + description: The field representing the ID. + - name: refresh + in: query + required: false + schema: + type: string + enum: [wait_for] + description: If 'wait_for' the request will wait for the index refresh. responses: '200': description: Successful response diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality.gen.ts b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality.gen.ts new file mode 100644 index 0000000000000..7437960ef9cae --- /dev/null +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality.gen.ts @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/* + * NOTICE: Do not edit this file manually. + * This file is automatically generated by the OpenAPI Generator, @kbn/openapi-generator. + * + * info: + * title: Asset Criticality Get Record Schema + * version: 1 + */ + +import { z } from 'zod'; + +import { IdField, AssetCriticalityRecord } from './common.gen'; + +export type GetAssetCriticalityRecordRequestQuery = z.infer< + typeof GetAssetCriticalityRecordRequestQuery +>; +export const GetAssetCriticalityRecordRequestQuery = z.object({ + /** + * The ID value of the asset. + */ + id_value: z.string(), + /** + * The field representing the ID. + */ + id_field: IdField, +}); +export type GetAssetCriticalityRecordRequestQueryInput = z.input< + typeof GetAssetCriticalityRecordRequestQuery +>; + +export type GetAssetCriticalityRecordResponse = z.infer; +export const GetAssetCriticalityRecordResponse = AssetCriticalityRecord; diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality.schema.yaml b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality.schema.yaml index 56f3e37de1126..ca2784c48653d 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality.schema.yaml +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality.schema.yaml @@ -14,11 +14,23 @@ paths: get: x-labels: [ess, serverless] x-internal: true - operationId: AssetCriticalityGetRecord + operationId: InternalGetAssetCriticalityRecord summary: Deprecated Internal Get Criticality Record + deprecated: true parameters: - - $ref: './common.schema.yaml#/components/parameters/id_value' - - $ref: './common.schema.yaml#/components/parameters/id_field' + - name: id_value + in: query + required: true + schema: + type: string + description: The ID value of the asset. + - name: id_field + in: query + required: true + schema: + $ref: './common.schema.yaml#/components/schemas/IdField' + example: 'host.name' + description: The field representing the ID. responses: '200': description: Successful response @@ -33,11 +45,23 @@ paths: /api/asset_criticality: get: x-labels: [ess, serverless] - operationId: AssetCriticalityGetRecord + x-codegen-enabled: true + operationId: GetAssetCriticalityRecord summary: Get Criticality Record parameters: - - $ref: './common.schema.yaml#/components/parameters/id_value' - - $ref: './common.schema.yaml#/components/parameters/id_field' + - name: id_value + in: query + required: true + schema: + type: string + description: The ID value of the asset. + - name: id_field + in: query + required: true + schema: + $ref: './common.schema.yaml#/components/schemas/IdField' + example: 'host.name' + description: The field representing the ID. responses: '200': description: Successful response diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_status.gen.ts b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_status.gen.ts index bb51693825def..f9d24b61bbef0 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_status.gen.ts +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_status.gen.ts @@ -16,7 +16,7 @@ import { z } from 'zod'; -export type AssetCriticalityStatusResponse = z.infer; -export const AssetCriticalityStatusResponse = z.object({ +export type GetAssetCriticalityStatusResponse = z.infer; +export const GetAssetCriticalityStatusResponse = z.object({ asset_criticality_resources_installed: z.boolean().optional(), }); diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_status.schema.yaml b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_status.schema.yaml index 4052ad8f07177..f8f5dcb7c8ecd 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_status.schema.yaml +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/get_asset_criticality_status.schema.yaml @@ -14,7 +14,8 @@ paths: get: x-labels: [ess, serverless] x-internal: true - operationId: AssetCriticalityGetStatus + x-codegen-enabled: true + operationId: GetAssetCriticalityStatus summary: Get Asset Criticality Status responses: '200': @@ -22,14 +23,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AssetCriticalityStatusResponse' + type: object + properties: + asset_criticality_resources_installed: + type: boolean '400': description: Invalid request - -components: - schemas: - AssetCriticalityStatusResponse: - type: object - properties: - asset_criticality_resources_installed: - type: boolean diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/index.ts b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/index.ts index 326a20d6c66a7..fb99a69f49f92 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/index.ts +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/index.ts @@ -9,5 +9,5 @@ export * from './common.gen'; export * from './get_asset_criticality_status.gen'; export * from './get_asset_criticality_privileges.gen'; export * from './bulk_upload_asset_criticality.gen'; +export * from './upload_asset_criticality_csv.gen'; export * from './list_asset_criticality.gen'; -export * from './list_asset_criticality_query_params'; diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/list_asset_criticality.gen.ts b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/list_asset_criticality.gen.ts index 9cf2f7ca7c628..e17a2b006896c 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/list_asset_criticality.gen.ts +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/list_asset_criticality.gen.ts @@ -18,8 +18,39 @@ import { z } from 'zod'; import { AssetCriticalityRecord } from './common.gen'; -export type AssetCriticalityListResponse = z.infer; -export const AssetCriticalityListResponse = z.object({ +export type FindAssetCriticalityRecordsRequestQuery = z.infer< + typeof FindAssetCriticalityRecordsRequestQuery +>; +export const FindAssetCriticalityRecordsRequestQuery = z.object({ + /** + * The field to sort by. + */ + sort_field: z.enum(['id_value', 'id_field', 'criticality_level', '@timestamp']).optional(), + /** + * The order to sort by. + */ + sort_direction: z.enum(['asc', 'desc']).optional(), + /** + * The page number to return. + */ + page: z.coerce.number().int().min(1).optional(), + /** + * The number of records to return per page. + */ + per_page: z.coerce.number().int().min(1).max(1000).optional(), + /** + * The kuery to filter by. + */ + kuery: z.string().optional(), +}); +export type FindAssetCriticalityRecordsRequestQueryInput = z.input< + typeof FindAssetCriticalityRecordsRequestQuery +>; + +export type FindAssetCriticalityRecordsResponse = z.infer< + typeof FindAssetCriticalityRecordsResponse +>; +export const FindAssetCriticalityRecordsResponse = z.object({ records: z.array(AssetCriticalityRecord), page: z.number().int().min(1), per_page: z.number().int().min(1).max(1000), diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/list_asset_criticality.schema.yaml b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/list_asset_criticality.schema.yaml index 7c9a28c4eeaaf..34c5b98a4617f 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/list_asset_criticality.schema.yaml +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/list_asset_criticality.schema.yaml @@ -13,6 +13,8 @@ paths: /api/asset_criticality/list: post: x-labels: [ess, serverless] + x-codegen-enabled: true + operationId: FindAssetCriticalityRecords summary: List asset criticality data, filtering and sorting as needed parameters: - name: sort_field @@ -26,7 +28,7 @@ paths: - criticality_level - \@timestamp description: The field to sort by. - - name: sort_order + - name: sort_direction in: query required: false schema: @@ -62,31 +64,24 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AssetCriticalityListResponse' - -components: - schemas: - AssetCriticalityListResponse: - type: object - properties: - records: - type: array - items: - $ref: './common.schema.yaml#/components/schemas/AssetCriticalityRecord' - page: - type: integer - minimum: 1 - per_page: - type: integer - minimum: 1 - maximum: 1000 - total: - type: integer - minimum: 0 - required: - - records - - page - - per_page - - total - - \ No newline at end of file + type: object + properties: + records: + type: array + items: + $ref: './common.schema.yaml#/components/schemas/AssetCriticalityRecord' + page: + type: integer + minimum: 1 + per_page: + type: integer + minimum: 1 + maximum: 1000 + total: + type: integer + minimum: 0 + required: + - records + - page + - per_page + - total diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/list_asset_criticality_query_params.ts b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/list_asset_criticality_query_params.ts deleted file mode 100644 index b70393056c48f..0000000000000 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/list_asset_criticality_query_params.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { z } from 'zod'; - -export const ListAssetCriticalityQueryParams = z.object({ - page: z.coerce.number().min(1).optional(), - per_page: z.coerce.number().min(1).max(10000).optional(), - sort_field: z.enum(['id_field', 'id_value', '@timestamp', 'criticality_level']).optional(), - sort_direction: z.enum(['asc', 'desc']).optional(), - kuery: z.string().optional(), -}); - -export type ListAssetCriticalityQueryParams = z.infer; diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/upload_asset_criticality_csv.gen.ts b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/upload_asset_criticality_csv.gen.ts new file mode 100644 index 0000000000000..4282056378426 --- /dev/null +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/upload_asset_criticality_csv.gen.ts @@ -0,0 +1,46 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/* + * NOTICE: Do not edit this file manually. + * This file is automatically generated by the OpenAPI Generator, @kbn/openapi-generator. + * + * info: + * title: Asset Criticality CSV Upload Schema + * version: 1 + */ + +import { z } from 'zod'; + +export type AssetCriticalityCsvUploadErrorItem = z.infer; +export const AssetCriticalityCsvUploadErrorItem = z.object({ + message: z.string(), + index: z.number().int(), +}); + +export type AssetCriticalityCsvUploadStats = z.infer; +export const AssetCriticalityCsvUploadStats = z.object({ + successful: z.number().int(), + failed: z.number().int(), + total: z.number().int(), +}); + +export type InternalUploadAssetCriticalityRecordsResponse = z.infer< + typeof InternalUploadAssetCriticalityRecordsResponse +>; +export const InternalUploadAssetCriticalityRecordsResponse = z.object({ + errors: z.array(AssetCriticalityCsvUploadErrorItem), + stats: AssetCriticalityCsvUploadStats, +}); + +export type UploadAssetCriticalityRecordsResponse = z.infer< + typeof UploadAssetCriticalityRecordsResponse +>; +export const UploadAssetCriticalityRecordsResponse = z.object({ + errors: z.array(AssetCriticalityCsvUploadErrorItem), + stats: AssetCriticalityCsvUploadStats, +}); diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/upload_asset_criticality_csv.schema.yaml b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/upload_asset_criticality_csv.schema.yaml index c348dcefa8b78..77e78f5c6d4d3 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/upload_asset_criticality_csv.schema.yaml +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/asset_criticality/upload_asset_criticality_csv.schema.yaml @@ -14,7 +14,10 @@ paths: post: x-labels: [ess, serverless] x-internal: true + x-codegen-enabled: true + operationId: InternalUploadAssetCriticalityRecords summary: Deprecated internal API which Uploads a CSV file containing asset criticality data + deprecated: true requestBody: content: multipart/form-data: @@ -33,13 +36,33 @@ paths: content: application/json: schema: - $ref: '#./common/components/schemas/AssetCriticalityBulkUploadResponse' + type: object + example: + errors: + - message: 'Invalid ID field' + index: 0 + stats: + successful: 1 + failed: 1 + total: 2 + properties: + errors: + type: array + items: + $ref: '#/components/schemas/AssetCriticalityCsvUploadErrorItem' + stats: + $ref: '#/components/schemas/AssetCriticalityCsvUploadStats' + required: + - errors + - stats '413': description: File too large /api/asset_criticality/upload_csv: post: x-labels: [ess, serverless] x-internal: true + x-codegen-enabled: true + operationId: UploadAssetCriticalityRecords summary: Uploads a CSV file containing asset criticality data requestBody: content: @@ -59,6 +82,51 @@ paths: content: application/json: schema: - $ref: '#./common/components/schemas/AssetCriticalityBulkUploadResponse' + type: object + example: + errors: + - message: 'Invalid ID field' + index: 0 + stats: + successful: 1 + failed: 1 + total: 2 + properties: + errors: + type: array + items: + $ref: '#/components/schemas/AssetCriticalityCsvUploadErrorItem' + stats: + $ref: '#/components/schemas/AssetCriticalityCsvUploadStats' + required: + - errors + - stats '413': description: File too large + +components: + schemas: + AssetCriticalityCsvUploadErrorItem: + type: object + properties: + message: + type: string + index: + type: integer + required: + - message + - index + + AssetCriticalityCsvUploadStats: + type: object + properties: + successful: + type: integer + failed: + type: integer + total: + type: integer + required: + - successful + - failed + - total diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_disable_route.gen.ts b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_disable_route.gen.ts index 620620c95b888..b50eb00db6301 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_disable_route.gen.ts +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_disable_route.gen.ts @@ -16,13 +16,13 @@ import { z } from 'zod'; -export type RiskEngineDisableResponse = z.infer; -export const RiskEngineDisableResponse = z.object({ - success: z.boolean().optional(), -}); - export type RiskEngineDisableErrorResponse = z.infer; export const RiskEngineDisableErrorResponse = z.object({ message: z.string(), full_error: z.string(), }); + +export type DisableRiskEngineResponse = z.infer; +export const DisableRiskEngineResponse = z.object({ + success: z.boolean().optional(), +}); diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_disable_route.schema.yaml b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_disable_route.schema.yaml index 33f35aa1bef1b..c491ec74e2a50 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_disable_route.schema.yaml +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_disable_route.schema.yaml @@ -18,6 +18,8 @@ paths: post: x-labels: [ess, serverless] x-internal: true + x-codegen-enabled: true + operationId: DisableRiskEngine summary: Disable the Risk Engine requestBody: content: @@ -28,7 +30,10 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/RiskEngineDisableResponse' + type: object + properties: + success: + type: boolean '400': description: Task manager is unavailable content: @@ -44,11 +49,6 @@ paths: components: schemas: - RiskEngineDisableResponse: - type: object - properties: - success: - type: boolean RiskEngineDisableErrorResponse: type: object required: diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_enable_route.gen.ts b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_enable_route.gen.ts index cee1121b778ae..7bdbfd17449db 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_enable_route.gen.ts +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_enable_route.gen.ts @@ -16,13 +16,13 @@ import { z } from 'zod'; -export type RiskEngineEnableResponse = z.infer; -export const RiskEngineEnableResponse = z.object({ - success: z.boolean().optional(), -}); - -export type RiskEngineEnableErrorResponse = z.infer; -export const RiskEngineEnableErrorResponse = z.object({ +export type EnableRiskEngineErrorResponse = z.infer; +export const EnableRiskEngineErrorResponse = z.object({ message: z.string(), full_error: z.string(), }); + +export type EnableRiskEngineResponse = z.infer; +export const EnableRiskEngineResponse = z.object({ + success: z.boolean().optional(), +}); diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_enable_route.schema.yaml b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_enable_route.schema.yaml index 5cfd5ffdd4fdf..6b2656bbb21b0 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_enable_route.schema.yaml +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_enable_route.schema.yaml @@ -18,6 +18,8 @@ paths: post: x-labels: [ess, serverless] x-internal: true + x-codegen-enabled: true + operationId: EnableRiskEngine summary: Enable the Risk Engine requestBody: content: @@ -28,7 +30,10 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/RiskEngineEnableResponse' + type: object + properties: + success: + type: boolean '400': description: Task manager is unavailable content: @@ -40,16 +45,11 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/RiskEngineEnableErrorResponse' + $ref: '#/components/schemas/EnableRiskEngineErrorResponse' components: schemas: - RiskEngineEnableResponse: - type: object - properties: - success: - type: boolean - RiskEngineEnableErrorResponse: + EnableRiskEngineErrorResponse: type: object required: - message diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_init_route.gen.ts b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_init_route.gen.ts index d973a435b9aec..f9d79cd8f96a6 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_init_route.gen.ts +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_init_route.gen.ts @@ -16,8 +16,8 @@ import { z } from 'zod'; -export type RiskEngineInitResult = z.infer; -export const RiskEngineInitResult = z.object({ +export type InitRiskEngineResult = z.infer; +export const InitRiskEngineResult = z.object({ risk_engine_enabled: z.boolean(), risk_engine_resources_installed: z.boolean(), risk_engine_configuration_created: z.boolean(), @@ -25,13 +25,13 @@ export const RiskEngineInitResult = z.object({ errors: z.array(z.string()), }); -export type RiskEngineInitResponse = z.infer; -export const RiskEngineInitResponse = z.object({ - result: RiskEngineInitResult, -}); - -export type RiskEngineInitErrorResponse = z.infer; -export const RiskEngineInitErrorResponse = z.object({ +export type InitRiskEngineErrorResponse = z.infer; +export const InitRiskEngineErrorResponse = z.object({ message: z.string(), full_error: z.string(), }); + +export type InitRiskEngineResponse = z.infer; +export const InitRiskEngineResponse = z.object({ + result: InitRiskEngineResult, +}); diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_init_route.schema.yaml b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_init_route.schema.yaml index 498ac266a9aa0..d1d35f4a720c6 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_init_route.schema.yaml +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_init_route.schema.yaml @@ -16,6 +16,8 @@ paths: post: x-labels: [ess, serverless] x-internal: true + x-codegen-enabled: true + operationId: InitRiskEngine summary: Initialize the Risk Engine description: Initializes the Risk Engine by creating the necessary indices and mappings, removing old transforms, and starting the new risk engine responses: @@ -24,7 +26,12 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/RiskEngineInitResponse' + type: object + required: + - result + properties: + result: + $ref: '#/components/schemas/InitRiskEngineResult' '400': description: Task manager is unavailable content: @@ -36,11 +43,11 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/RiskEngineInitErrorResponse' + $ref: '#/components/schemas/InitRiskEngineErrorResponse' components: schemas: - RiskEngineInitResult: + InitRiskEngineResult: type: object required: - risk_engine_enabled @@ -62,15 +69,7 @@ components: items: type: string - RiskEngineInitResponse: - type: object - required: - - result - properties: - result: - $ref: '#/components/schemas/RiskEngineInitResult' - - RiskEngineInitErrorResponse: + InitRiskEngineErrorResponse: type: object required: - message diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_settings_route.gen.ts b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_settings_route.gen.ts index c8d10bd87d75e..e01edb31397a6 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_settings_route.gen.ts +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_settings_route.gen.ts @@ -18,7 +18,7 @@ import { z } from 'zod'; import { DateRange } from '../common/common.gen'; -export type RiskEngineSettingsResponse = z.infer; -export const RiskEngineSettingsResponse = z.object({ +export type ReadRiskEngineSettingsResponse = z.infer; +export const ReadRiskEngineSettingsResponse = z.object({ range: DateRange.optional(), }); diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_settings_route.schema.yaml b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_settings_route.schema.yaml index 3622a9ff7c62b..a5cc6d6b44008 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_settings_route.schema.yaml +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_settings_route.schema.yaml @@ -16,7 +16,8 @@ paths: get: x-labels: [ess, serverless] x-internal: true - operationId: RiskEngineSettingsGet + x-codegen-enabled: true + operationId: ReadRiskEngineSettings summary: Get the settings of the Risk Engine responses: '200': @@ -24,12 +25,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/RiskEngineSettingsResponse' - -components: - schemas: - RiskEngineSettingsResponse: - type: object - properties: - range: - $ref: '../common/common.schema.yaml#/components/schemas/DateRange' + type: object + properties: + range: + $ref: '../common/common.schema.yaml#/components/schemas/DateRange' diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_status_route.gen.ts b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_status_route.gen.ts index 6a6e15d9c71a3..0d3fd0b9f0dd4 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_status_route.gen.ts +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_status_route.gen.ts @@ -30,3 +30,6 @@ export const RiskEngineStatusResponse = z.object({ */ is_max_amount_of_risk_engines_reached: z.boolean(), }); + +export type GetRiskEngineStatusResponse = z.infer; +export const GetRiskEngineStatusResponse = RiskEngineStatusResponse; diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_status_route.schema.yaml b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_status_route.schema.yaml index 3f1cc33e94288..57f46b99f3a77 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_status_route.schema.yaml +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_status_route.schema.yaml @@ -16,6 +16,8 @@ paths: get: x-labels: [ess, serverless] x-internal: true + x-codegen-enabled: true + operationId: GetRiskEngineStatus summary: Get the status of the Risk Engine description: Returns the status of both the legacy transform-based risk engine, as well as the new risk engine responses: diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/entity_calculation_route.gen.ts b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/entity_calculation_route.gen.ts index c9b6c8cc47aa3..ebefbd772ed96 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/entity_calculation_route.gen.ts +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/entity_calculation_route.gen.ts @@ -41,3 +41,29 @@ export const RiskScoresEntityCalculationResponse = z.object({ success: z.boolean(), score: EntityRiskScoreRecord.optional(), }); + +export type DeprecatedTriggerRiskScoreCalculationRequestBody = z.infer< + typeof DeprecatedTriggerRiskScoreCalculationRequestBody +>; +export const DeprecatedTriggerRiskScoreCalculationRequestBody = RiskScoresEntityCalculationRequest; +export type DeprecatedTriggerRiskScoreCalculationRequestBodyInput = z.input< + typeof DeprecatedTriggerRiskScoreCalculationRequestBody +>; + +export type DeprecatedTriggerRiskScoreCalculationResponse = z.infer< + typeof DeprecatedTriggerRiskScoreCalculationResponse +>; +export const DeprecatedTriggerRiskScoreCalculationResponse = RiskScoresEntityCalculationResponse; + +export type TriggerRiskScoreCalculationRequestBody = z.infer< + typeof TriggerRiskScoreCalculationRequestBody +>; +export const TriggerRiskScoreCalculationRequestBody = RiskScoresEntityCalculationRequest; +export type TriggerRiskScoreCalculationRequestBodyInput = z.input< + typeof TriggerRiskScoreCalculationRequestBody +>; + +export type TriggerRiskScoreCalculationResponse = z.infer< + typeof TriggerRiskScoreCalculationResponse +>; +export const TriggerRiskScoreCalculationResponse = RiskScoresEntityCalculationResponse; diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/entity_calculation_route.schema.yaml b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/entity_calculation_route.schema.yaml index bb94305254885..69be93f7ceb49 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/entity_calculation_route.schema.yaml +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/entity_calculation_route.schema.yaml @@ -19,8 +19,11 @@ paths: post: x-labels: [ess, serverless] x-internal: true + x-codegen-enabled: true + operationId: DeprecatedTriggerRiskScoreCalculation summary: Deprecated Trigger calculation of Risk Scores for an entity. Moved to /internal/risk_score/calculation/entity description: Calculates and persists Risk Scores for an entity, returning the calculated risk score. + deprecated: true requestBody: description: The entity type and identifier content: @@ -41,6 +44,8 @@ paths: /internal/risk_score/calculation/entity: post: x-labels: [ess, serverless] + x-codegen-enabled: true + operationId: TriggerRiskScoreCalculation summary: Trigger calculation of Risk Scores for an entity description: Calculates and persists Risk Scores for an entity, returning the calculated risk score. requestBody: diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/preview_route.gen.ts b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/preview_route.gen.ts index fe0b90e5a2e7a..13515d239c81c 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/preview_route.gen.ts +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/preview_route.gen.ts @@ -83,3 +83,10 @@ export const RiskScoresPreviewResponse = z.object({ user: z.array(EntityRiskScoreRecord).optional(), }), }); + +export type PreviewRiskScoreRequestBody = z.infer; +export const PreviewRiskScoreRequestBody = RiskScoresPreviewRequest; +export type PreviewRiskScoreRequestBodyInput = z.input; + +export type PreviewRiskScoreResponse = z.infer; +export const PreviewRiskScoreResponse = RiskScoresPreviewResponse; diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/preview_route.schema.yaml b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/preview_route.schema.yaml index a2ce9bcafd697..424ca98436768 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/preview_route.schema.yaml +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/preview_route.schema.yaml @@ -16,6 +16,8 @@ paths: post: x-labels: [ess, serverless] x-internal: true + x-codegen-enabled: true + operationId: PreviewRiskScore summary: Preview the calculation of Risk Scores description: Calculates and returns a list of Risk Scores, sorted by identifier_type and risk score. requestBody: diff --git a/x-pack/plugins/security_solution/docs/openapi/ess/security_solution_detections_api_2023_10_31.bundled.schema.yaml b/x-pack/plugins/security_solution/docs/openapi/ess/security_solution_detections_api_2023_10_31.bundled.schema.yaml index 6cb21c69c0492..4fd2ec1aed3b6 100644 --- a/x-pack/plugins/security_solution/docs/openapi/ess/security_solution_detections_api_2023_10_31.bundled.schema.yaml +++ b/x-pack/plugins/security_solution/docs/openapi/ess/security_solution_detections_api_2023_10_31.bundled.schema.yaml @@ -91,6 +91,7 @@ paths: application/json: schema: $ref: '#/components/schemas/SiemErrorResponse' + description: Not found '500': content: application/json: @@ -131,6 +132,7 @@ paths: application/json: schema: $ref: '#/components/schemas/SiemErrorResponse' + description: Not found '500': content: application/json: diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/api.ts b/x-pack/plugins/security_solution/public/entity_analytics/api/api.ts index aa3b432533027..500c327d86b0c 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/api/api.ts +++ b/x-pack/plugins/security_solution/public/entity_analytics/api/api.ts @@ -6,10 +6,11 @@ */ import { useMemo } from 'react'; -import type { RiskEngineDisableResponse } from '../../../common/api/entity_analytics/risk_engine/engine_disable_route.gen'; +import type { UploadAssetCriticalityRecordsResponse } from '../../../common/api/entity_analytics/asset_criticality/upload_asset_criticality_csv.gen'; +import type { DisableRiskEngineResponse } from '../../../common/api/entity_analytics/risk_engine/engine_disable_route.gen'; import type { RiskEngineStatusResponse } from '../../../common/api/entity_analytics/risk_engine/engine_status_route.gen'; -import type { RiskEngineInitResponse } from '../../../common/api/entity_analytics/risk_engine/engine_init_route.gen'; -import type { RiskEngineEnableResponse } from '../../../common/api/entity_analytics/risk_engine/engine_enable_route.gen'; +import type { InitRiskEngineResponse } from '../../../common/api/entity_analytics/risk_engine/engine_init_route.gen'; +import type { EnableRiskEngineResponse } from '../../../common/api/entity_analytics/risk_engine/engine_enable_route.gen'; import type { RiskScoresPreviewRequest, RiskScoresPreviewResponse, @@ -18,7 +19,6 @@ import type { RiskScoresEntityCalculationRequest, RiskScoresEntityCalculationResponse, } from '../../../common/api/entity_analytics/risk_engine/entity_calculation_route.gen'; -import type { AssetCriticalityBulkUploadResponse } from '../../../common/entity_analytics/asset_criticality/types'; import type { AssetCriticalityRecord, EntityAnalyticsPrivileges, @@ -39,9 +39,9 @@ import { RISK_SCORE_ENTITY_CALCULATION_URL, API_VERSIONS, } from '../../../common/constants'; -import type { RiskEngineSettingsResponse } from '../../../common/api/entity_analytics/risk_engine'; import type { SnakeToCamelCase } from '../common/utils'; import { useKibana } from '../../common/lib/kibana/kibana_react'; +import type { ReadRiskEngineSettingsResponse } from '../../../common/api/entity_analytics/risk_engine'; export interface DeleteAssetCriticalityResponse { deleted: true; @@ -81,7 +81,7 @@ export const useEntityAnalyticsRoutes = () => { * Init risk score engine */ const initRiskEngine = () => - http.fetch(RISK_ENGINE_INIT_URL, { + http.fetch(RISK_ENGINE_INIT_URL, { version: '1', method: 'POST', }); @@ -90,7 +90,7 @@ export const useEntityAnalyticsRoutes = () => { * Enable risk score engine */ const enableRiskEngine = () => - http.fetch(RISK_ENGINE_ENABLE_URL, { + http.fetch(RISK_ENGINE_ENABLE_URL, { version: '1', method: 'POST', }); @@ -99,7 +99,7 @@ export const useEntityAnalyticsRoutes = () => { * Disable risk score engine */ const disableRiskEngine = () => - http.fetch(RISK_ENGINE_DISABLE_URL, { + http.fetch(RISK_ENGINE_DISABLE_URL, { version: '1', method: 'POST', }); @@ -181,12 +181,12 @@ export const useEntityAnalyticsRoutes = () => { const uploadAssetCriticalityFile = async ( fileContent: string, fileName: string - ): Promise => { + ): Promise => { const file = new File([new Blob([fileContent])], fileName, { type: 'text/csv' }); const body = new FormData(); body.append('file', file); - return http.fetch( + return http.fetch( ASSET_CRITICALITY_PUBLIC_CSV_UPLOAD_URL, { version: API_VERSIONS.public.v1, @@ -224,7 +224,7 @@ export const useEntityAnalyticsRoutes = () => { * Fetches risk engine settings */ const fetchRiskEngineSettings = () => - http.fetch(RISK_ENGINE_SETTINGS_URL, { + http.fetch(RISK_ENGINE_SETTINGS_URL, { version: '1', method: 'GET', }); diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_disable_risk_engine_mutation.ts b/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_disable_risk_engine_mutation.ts index e19cf94fc379f..fb8a0bbb12972 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_disable_risk_engine_mutation.ts +++ b/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_disable_risk_engine_mutation.ts @@ -9,7 +9,7 @@ import { useMutation } from '@tanstack/react-query'; import type { TaskManagerUnavailableResponse } from '../../../../common/api/entity_analytics/common'; import type { RiskEngineDisableErrorResponse, - RiskEngineDisableResponse, + DisableRiskEngineResponse, } from '../../../../common/api/entity_analytics/risk_engine/engine_disable_route.gen'; import { useEntityAnalyticsRoutes } from '../api'; import { useInvalidateRiskEngineStatusQuery } from './use_risk_engine_status'; @@ -21,7 +21,7 @@ export const useDisableRiskEngineMutation = (options?: UseMutationOptions<{}>) = const { disableRiskEngine } = useEntityAnalyticsRoutes(); return useMutation< - RiskEngineDisableResponse, + DisableRiskEngineResponse, { body: RiskEngineDisableErrorResponse | TaskManagerUnavailableResponse } >(() => disableRiskEngine(), { ...options, diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_enable_risk_engine_mutation.ts b/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_enable_risk_engine_mutation.ts index 658c4a5cdb185..cd5083d13892e 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_enable_risk_engine_mutation.ts +++ b/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_enable_risk_engine_mutation.ts @@ -8,8 +8,8 @@ import type { UseMutationOptions } from '@tanstack/react-query'; import { useMutation } from '@tanstack/react-query'; import type { TaskManagerUnavailableResponse } from '../../../../common/api/entity_analytics/common'; import type { - RiskEngineEnableErrorResponse, - RiskEngineEnableResponse, + EnableRiskEngineErrorResponse, + EnableRiskEngineResponse, } from '../../../../common/api/entity_analytics/risk_engine/engine_enable_route.gen'; import { useEntityAnalyticsRoutes } from '../api'; import { useInvalidateRiskEngineStatusQuery } from './use_risk_engine_status'; @@ -19,8 +19,8 @@ export const useEnableRiskEngineMutation = (options?: UseMutationOptions<{}>) => const invalidateRiskEngineStatusQuery = useInvalidateRiskEngineStatusQuery(); const { enableRiskEngine } = useEntityAnalyticsRoutes(); return useMutation< - RiskEngineEnableResponse, - { body: RiskEngineEnableErrorResponse | TaskManagerUnavailableResponse } + EnableRiskEngineResponse, + { body: EnableRiskEngineErrorResponse | TaskManagerUnavailableResponse } >(enableRiskEngine, { ...options, mutationKey: ENABLE_RISK_ENGINE_MUTATION_KEY, diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_init_risk_engine_mutation.ts b/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_init_risk_engine_mutation.ts index 67d94257e9165..d774853c7d026 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_init_risk_engine_mutation.ts +++ b/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_init_risk_engine_mutation.ts @@ -6,11 +6,11 @@ */ import type { UseMutationOptions } from '@tanstack/react-query'; import { useMutation } from '@tanstack/react-query'; -import type { TaskManagerUnavailableResponse } from '../../../../common/api/entity_analytics/common'; import type { - RiskEngineInitErrorResponse, - RiskEngineInitResponse, + InitRiskEngineErrorResponse, + InitRiskEngineResponse, } from '../../../../common/api/entity_analytics/risk_engine/engine_init_route.gen'; +import type { TaskManagerUnavailableResponse } from '../../../../common/api/entity_analytics/common'; import { useEntityAnalyticsRoutes } from '../api'; import { useInvalidateRiskEngineStatusQuery } from './use_risk_engine_status'; @@ -21,8 +21,8 @@ export const useInitRiskEngineMutation = (options?: UseMutationOptions<{}>) => { const { initRiskEngine } = useEntityAnalyticsRoutes(); return useMutation< - RiskEngineInitResponse, - { body: RiskEngineInitErrorResponse | TaskManagerUnavailableResponse } + InitRiskEngineResponse, + { body: InitRiskEngineErrorResponse | TaskManagerUnavailableResponse } >(() => initRiskEngine(), { ...options, mutationKey: INIT_RISK_ENGINE_STATUS_KEY, diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/result_step.tsx b/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/result_step.tsx index 1652c85eace1f..c3be648103d7f 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/result_step.tsx +++ b/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/components/result_step.tsx @@ -18,11 +18,11 @@ import React from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; import { css } from '@emotion/react'; -import type { AssetCriticalityBulkUploadResponse } from '../../../../../common/entity_analytics/asset_criticality/types'; +import type { BulkUpsertAssetCriticalityRecordsResponse } from '../../../../../common/entity_analytics/asset_criticality/types'; import { buildAnnotationsFromError } from '../helpers'; export const AssetCriticalityResultStep: React.FC<{ - result?: AssetCriticalityBulkUploadResponse; + result?: BulkUpsertAssetCriticalityRecordsResponse; validLinesAsText: string; errorMessage?: string; onReturn: () => void; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/reducer.test.ts b/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/reducer.test.ts index 60b6191a777d6..3fa2eb89e5d65 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/reducer.test.ts +++ b/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/reducer.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { AssetCriticalityBulkUploadResponse } from '../../../../common/api/entity_analytics'; +import type { UploadAssetCriticalityRecordsResponse } from '../../../../common/api/entity_analytics'; import type { ReducerAction, ReducerState, ValidationStepState } from './reducer'; import { reducer } from './reducer'; import { FileUploaderSteps } from './types'; @@ -43,7 +43,7 @@ describe('reducer', () => { }); it('should handle "fileUploaded" action with response', () => { - const response: AssetCriticalityBulkUploadResponse = { + const response: UploadAssetCriticalityRecordsResponse = { errors: [], stats: { total: 10, diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/reducer.ts b/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/reducer.ts index e7f233015434f..eb0153d261871 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/reducer.ts +++ b/x-pack/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/reducer.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { AssetCriticalityBulkUploadResponse } from '../../../../common/entity_analytics/asset_criticality/types'; +import type { UploadAssetCriticalityRecordsResponse } from '../../../../common/api/entity_analytics'; import { FileUploaderSteps } from './types'; import type { ValidatedFile } from './types'; import { isFilePickerStep, isValidationStep } from './helpers'; @@ -26,7 +26,7 @@ export interface ValidationStepState { export interface ResultStepState { step: FileUploaderSteps.RESULT; - fileUploadResponse?: AssetCriticalityBulkUploadResponse; + fileUploadResponse?: UploadAssetCriticalityRecordsResponse; fileUploadError?: string; validLinesAsText: string; } @@ -46,7 +46,7 @@ export type ReducerAction = | { type: 'uploadingFile' } | { type: 'fileUploaded'; - payload: { response?: AssetCriticalityBulkUploadResponse; errorMessage?: string }; + payload: { response?: UploadAssetCriticalityRecordsResponse; errorMessage?: string }; }; export const INITIAL_STATE: FilePickerState = { diff --git a/x-pack/plugins/security_solution/scripts/openapi/generate.js b/x-pack/plugins/security_solution/scripts/openapi/generate.js index 38eb0fe06f95a..adfe11192ae49 100644 --- a/x-pack/plugins/security_solution/scripts/openapi/generate.js +++ b/x-pack/plugins/security_solution/scripts/openapi/generate.js @@ -18,7 +18,6 @@ const SECURITY_SOLUTION_ROOT = resolve(__dirname, '../..'); rootDir: SECURITY_SOLUTION_ROOT, sourceGlob: './common/**/*.schema.yaml', templateName: 'zod_operation_schema', - skipLinting: true, }); await generate({ diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.ts index ac22303c09af6..4770d051f2e99 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.ts @@ -11,7 +11,7 @@ import { mappingFromFieldMap } from '@kbn/alerting-plugin/common'; import type { AuditLogger } from '@kbn/security-plugin-types-server'; import { fromKueryExpression, toElasticsearchQuery } from '@kbn/es-query'; import type { - AssetCriticalityBulkUploadResponse, + BulkUpsertAssetCriticalityRecordsResponse, AssetCriticalityUpsert, } from '../../../../common/entity_analytics/asset_criticality/types'; import type { AssetCriticalityRecord } from '../../../../common/api/entity_analytics'; @@ -211,9 +211,9 @@ export class AssetCriticalityDataClient { recordsStream, flushBytes, retries, - }: BulkUpsertFromStreamOptions): Promise => { - const errors: AssetCriticalityBulkUploadResponse['errors'] = []; - const stats: AssetCriticalityBulkUploadResponse['stats'] = { + }: BulkUpsertFromStreamOptions): Promise => { + const errors: BulkUpsertAssetCriticalityRecordsResponse['errors'] = []; + const stats: BulkUpsertAssetCriticalityRecordsResponse['stats'] = { successful: 0, failed: 0, total: 0, diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/bulk_upload.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/bulk_upload.ts index e1eb6872d3a33..822c8a644d9b3 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/bulk_upload.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/bulk_upload.ts @@ -9,8 +9,8 @@ import { buildSiemResponse } from '@kbn/lists-plugin/server/routes/utils'; import { transformError } from '@kbn/securitysolution-es-utils'; import { Readable } from 'node:stream'; import { buildRouteValidationWithZod } from '@kbn/zod-helpers'; -import type { AssetCriticalityBulkUploadResponse } from '../../../../../common/api/entity_analytics'; -import { AssetCriticalityBulkUploadRequest } from '../../../../../common/api/entity_analytics'; +import type { BulkUpsertAssetCriticalityRecordsResponse } from '../../../../../common/api/entity_analytics'; +import { BulkUpsertAssetCriticalityRecordsRequestBody } from '../../../../../common/api/entity_analytics'; import type { ConfigType } from '../../../../config'; import { ASSET_CRITICALITY_PUBLIC_BULK_UPLOAD_URL, @@ -42,7 +42,7 @@ export const assetCriticalityPublicBulkUploadRoute = ( version: API_VERSIONS.public.v1, validate: { request: { - body: buildRouteValidationWithZod(AssetCriticalityBulkUploadRequest), + body: buildRouteValidationWithZod(BulkUpsertAssetCriticalityRecordsRequestBody), }, }, }, @@ -90,7 +90,7 @@ export const assetCriticalityPublicBulkUploadRoute = ( () => `Asset criticality Bulk upload completed in ${tookMs}ms ${JSON.stringify(stats)}` ); - const resBody: AssetCriticalityBulkUploadResponse = { errors, stats }; + const resBody: BulkUpsertAssetCriticalityRecordsResponse = { errors, stats }; return response.ok({ body: resBody }); } catch (e) { diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/delete.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/delete.ts index c7a0f07400cc8..b39013359eed4 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/delete.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/delete.ts @@ -8,6 +8,10 @@ import type { IKibanaResponse, KibanaResponseFactory, Logger } from '@kbn/core/s import { buildSiemResponse } from '@kbn/lists-plugin/server/routes/utils'; import { transformError } from '@kbn/securitysolution-es-utils'; import { buildRouteValidationWithZod } from '@kbn/zod-helpers'; +import { + DeleteAssetCriticalityRecordRequestQuery, + InternalDeleteAssetCriticalityRecordRequestQuery, +} from '../../../../../common/api/entity_analytics/asset_criticality/delete_asset_criticality.gen'; import type { SecuritySolutionRequestHandlerContext } from '../../../../types'; import { ASSET_CRITICALITY_PUBLIC_URL, @@ -16,7 +20,6 @@ import { ENABLE_ASSET_CRITICALITY_SETTING, API_VERSIONS, } from '../../../../../common/constants'; -import { DeleteAssetCriticalityRecord } from '../../../../../common/api/entity_analytics/asset_criticality'; import { checkAndInitAssetCriticalityResources } from '../check_and_init_asset_criticality_resources'; import { assertAdvancedSettingsEnabled } from '../../utils/assert_advanced_setting_enabled'; import type { EntityAnalyticsRoutesDeps } from '../../types'; @@ -26,7 +29,7 @@ import { AUDIT_CATEGORY, AUDIT_OUTCOME, AUDIT_TYPE } from '../../audit'; type DeleteHandler = ( context: SecuritySolutionRequestHandlerContext, request: { - query: DeleteAssetCriticalityRecord; + query: DeleteAssetCriticalityRecordRequestQuery; }, response: KibanaResponseFactory ) => Promise; @@ -88,7 +91,7 @@ export const assetCriticalityInternalDeleteRoute = ( version: API_VERSIONS.internal.v1, validate: { request: { - query: buildRouteValidationWithZod(DeleteAssetCriticalityRecord), + query: buildRouteValidationWithZod(InternalDeleteAssetCriticalityRecordRequestQuery), }, }, }, @@ -113,7 +116,7 @@ export const assetCriticalityPublicDeleteRoute = ( version: API_VERSIONS.public.v1, validate: { request: { - query: buildRouteValidationWithZod(DeleteAssetCriticalityRecord), + query: buildRouteValidationWithZod(DeleteAssetCriticalityRecordRequestQuery), }, }, }, diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/get.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/get.ts index 07d0cb3098dbc..e1ab013a373b6 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/get.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/get.ts @@ -8,6 +8,7 @@ import type { IKibanaResponse, KibanaResponseFactory, Logger } from '@kbn/core/s import { buildSiemResponse } from '@kbn/lists-plugin/server/routes/utils'; import { transformError } from '@kbn/securitysolution-es-utils'; import { buildRouteValidationWithZod } from '@kbn/zod-helpers'; +import { GetAssetCriticalityRecordRequestQuery } from '../../../../../common/api/entity_analytics/asset_criticality/get_asset_criticality.gen'; import type { SecuritySolutionRequestHandlerContext } from '../../../../types'; import { ASSET_CRITICALITY_INTERNAL_URL, @@ -17,7 +18,6 @@ import { API_VERSIONS, } from '../../../../../common/constants'; import { checkAndInitAssetCriticalityResources } from '../check_and_init_asset_criticality_resources'; -import { AssetCriticalityRecordIdParts } from '../../../../../common/api/entity_analytics/asset_criticality'; import { assertAdvancedSettingsEnabled } from '../../utils/assert_advanced_setting_enabled'; import type { EntityAnalyticsRoutesDeps } from '../../types'; import { AssetCriticalityAuditActions } from '../audit'; @@ -25,7 +25,7 @@ import { AUDIT_CATEGORY, AUDIT_OUTCOME, AUDIT_TYPE } from '../../audit'; type GetHandler = ( context: SecuritySolutionRequestHandlerContext, request: { - query: AssetCriticalityRecordIdParts; + query: GetAssetCriticalityRecordRequestQuery; }, response: KibanaResponseFactory ) => Promise; @@ -86,7 +86,7 @@ export const assetCriticalityInternalGetRoute = ( version: API_VERSIONS.internal.v1, validate: { request: { - query: buildRouteValidationWithZod(AssetCriticalityRecordIdParts), + query: buildRouteValidationWithZod(GetAssetCriticalityRecordRequestQuery), }, }, }, @@ -111,7 +111,7 @@ export const assetCriticalityPublicGetRoute = ( version: API_VERSIONS.public.v1, validate: { request: { - query: buildRouteValidationWithZod(AssetCriticalityRecordIdParts), + query: buildRouteValidationWithZod(GetAssetCriticalityRecordRequestQuery), }, }, }, diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/list.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/list.ts index 66db32f2bdb17..711426e4df510 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/list.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/list.ts @@ -15,8 +15,8 @@ import { API_VERSIONS, } from '../../../../../common/constants'; import { checkAndInitAssetCriticalityResources } from '../check_and_init_asset_criticality_resources'; -import type { AssetCriticalityListResponse } from '../../../../../common/api/entity_analytics/asset_criticality'; -import { ListAssetCriticalityQueryParams } from '../../../../../common/api/entity_analytics/asset_criticality'; +import type { FindAssetCriticalityRecordsResponse } from '../../../../../common/api/entity_analytics/asset_criticality'; +import { FindAssetCriticalityRecordsRequestQuery } from '../../../../../common/api/entity_analytics/asset_criticality'; import { assertAdvancedSettingsEnabled } from '../../utils/assert_advanced_setting_enabled'; import type { EntityAnalyticsRoutesDeps } from '../../types'; import { AssetCriticalityAuditActions } from '../audit'; @@ -39,7 +39,7 @@ export const assetCriticalityPublicListRoute = ( version: API_VERSIONS.public.v1, validate: { request: { - query: buildRouteValidationWithZod(ListAssetCriticalityQueryParams), + query: buildRouteValidationWithZod(FindAssetCriticalityRecordsRequestQuery), }, }, }, @@ -81,7 +81,7 @@ export const assetCriticalityPublicListRoute = ( }, }); - const body: AssetCriticalityListResponse = { + const body: FindAssetCriticalityRecordsResponse = { records, total, page, diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/status.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/status.ts index 2afa73ed5a059..9d77817a20d98 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/status.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/status.ts @@ -7,7 +7,7 @@ import type { Logger } from '@kbn/core/server'; import { buildSiemResponse } from '@kbn/lists-plugin/server/routes/utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import type { AssetCriticalityStatusResponse } from '../../../../../common/api/entity_analytics/asset_criticality'; +import type { GetAssetCriticalityStatusResponse } from '../../../../../common/api/entity_analytics'; import { ASSET_CRITICALITY_INTERNAL_STATUS_URL, APP_ID, @@ -55,7 +55,7 @@ export const assetCriticalityInternalStatusRoute = ( }, }); - const body: AssetCriticalityStatusResponse = { + const body: GetAssetCriticalityStatusResponse = { asset_criticality_resources_installed: result.isAssetCriticalityResourcesInstalled, }; return response.ok({ diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upload_csv.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upload_csv.ts index 28c8333c5f596..7e284bfe042a0 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upload_csv.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upload_csv.ts @@ -10,7 +10,7 @@ import { schema } from '@kbn/config-schema'; import Papa from 'papaparse'; import { transformError } from '@kbn/securitysolution-es-utils'; import type internal from 'stream'; -import type { AssetCriticalityBulkUploadResponse } from '../../../../../common/api/entity_analytics'; +import type { UploadAssetCriticalityRecordsResponse } from '../../../../../common/api/entity_analytics/asset_criticality/upload_asset_criticality_csv.gen'; import { CRITICALITY_CSV_MAX_SIZE_BYTES_WITH_TOLERANCE } from '../../../../../common/entity_analytics/asset_criticality'; import type { ConfigType } from '../../../../config'; import type { HapiReadableStream, SecuritySolutionRequestHandlerContext } from '../../../../types'; @@ -90,7 +90,7 @@ const handler: ( ); // type assignment here to ensure that the response body stays in sync with the API schema - const resBody: AssetCriticalityBulkUploadResponse = { errors, stats }; + const resBody: UploadAssetCriticalityRecordsResponse = { errors, stats }; const [eventType, event] = createAssetCriticalityProcessedFileEvent({ startTime: start, diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upsert.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upsert.ts index cb3c36f450e43..20ad8173af666 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upsert.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upsert.ts @@ -8,6 +8,10 @@ import type { IKibanaResponse, KibanaResponseFactory, Logger } from '@kbn/core/s import { buildSiemResponse } from '@kbn/lists-plugin/server/routes/utils'; import { transformError } from '@kbn/securitysolution-es-utils'; import { buildRouteValidationWithZod } from '@kbn/zod-helpers'; +import { + CreateAssetCriticalityRecordRequestBody, + InternalCreateAssetCriticalityRecordRequestBody, +} from '../../../../../common/api/entity_analytics/asset_criticality/create_asset_criticality.gen'; import type { SecuritySolutionRequestHandlerContext } from '../../../../types'; import { ASSET_CRITICALITY_PUBLIC_URL, @@ -17,7 +21,6 @@ import { API_VERSIONS, } from '../../../../../common/constants'; import { checkAndInitAssetCriticalityResources } from '../check_and_init_asset_criticality_resources'; -import { CreateSingleAssetCriticalityRequest } from '../../../../../common/api/entity_analytics'; import type { EntityAnalyticsRoutesDeps } from '../../types'; import { AssetCriticalityAuditActions } from '../audit'; import { AUDIT_CATEGORY, AUDIT_OUTCOME, AUDIT_TYPE } from '../../audit'; @@ -26,7 +29,7 @@ import { assertAdvancedSettingsEnabled } from '../../utils/assert_advanced_setti type UpsertHandler = ( context: SecuritySolutionRequestHandlerContext, request: { - body: CreateSingleAssetCriticalityRequest; + body: CreateAssetCriticalityRecordRequestBody; }, response: KibanaResponseFactory ) => Promise; @@ -93,7 +96,7 @@ export const assetCriticalityInternalUpsertRoute = ( version: API_VERSIONS.internal.v1, validate: { request: { - body: buildRouteValidationWithZod(CreateSingleAssetCriticalityRequest), + body: buildRouteValidationWithZod(InternalCreateAssetCriticalityRecordRequestBody), }, }, }, @@ -118,7 +121,7 @@ export const assetCriticalityPublicUpsertRoute = ( version: API_VERSIONS.public.v1, validate: { request: { - body: buildRouteValidationWithZod(CreateSingleAssetCriticalityRequest), + body: buildRouteValidationWithZod(CreateAssetCriticalityRecordRequestBody), }, }, }, diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/disable.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/disable.ts index f1f0348a69e33..3501d1869d5ed 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/disable.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/disable.ts @@ -7,7 +7,7 @@ import { buildSiemResponse } from '@kbn/lists-plugin/server/routes/utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import type { RiskEngineDisableResponse } from '../../../../../common/api/entity_analytics/risk_engine/engine_disable_route.gen'; +import type { DisableRiskEngineResponse } from '../../../../../common/api/entity_analytics/risk_engine/engine_disable_route.gen'; import { RISK_ENGINE_DISABLE_URL, APP_ID } from '../../../../../common/constants'; import { TASK_MANAGER_UNAVAILABLE_ERROR } from './translations'; import { withRiskEnginePrivilegeCheck } from '../risk_engine_privileges'; @@ -71,7 +71,7 @@ export const riskEngineDisableRoute = ( try { await riskEngineClient.disableRiskEngine({ taskManager }); - const body: RiskEngineDisableResponse = { success: true }; + const body: DisableRiskEngineResponse = { success: true }; return response.ok({ body }); } catch (e) { const error = transformError(e); diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/enable.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/enable.ts index a4eed8701d1e1..9397af65675da 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/enable.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/enable.ts @@ -7,7 +7,7 @@ import { buildSiemResponse } from '@kbn/lists-plugin/server/routes/utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import type { RiskEngineEnableResponse } from '../../../../../common/api/entity_analytics/risk_engine/engine_enable_route.gen'; +import type { EnableRiskEngineResponse } from '../../../../../common/api/entity_analytics/risk_engine/engine_enable_route.gen'; import { RISK_ENGINE_ENABLE_URL, APP_ID } from '../../../../../common/constants'; import { TASK_MANAGER_UNAVAILABLE_ERROR } from './translations'; import { withRiskEnginePrivilegeCheck } from '../risk_engine_privileges'; @@ -69,7 +69,7 @@ export const riskEngineEnableRoute = ( try { await riskEngineClient.enableRiskEngine({ taskManager }); - const body: RiskEngineEnableResponse = { success: true }; + const body: EnableRiskEngineResponse = { success: true }; return response.ok({ body }); } catch (e) { const error = transformError(e); diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/init.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/init.ts index 8360f3652a7f3..9e50e0b98ccd8 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/init.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/init.ts @@ -8,8 +8,8 @@ import { buildSiemResponse } from '@kbn/lists-plugin/server/routes/utils'; import { transformError } from '@kbn/securitysolution-es-utils'; import type { - RiskEngineInitResponse, - RiskEngineInitResult, + InitRiskEngineResponse, + InitRiskEngineResult, } from '../../../../../common/api/entity_analytics/risk_engine/engine_init_route.gen'; import { RISK_ENGINE_INIT_URL, APP_ID } from '../../../../../common/constants'; import { TASK_MANAGER_UNAVAILABLE_ERROR } from './translations'; @@ -64,7 +64,7 @@ export const riskEngineInitRoute = ( riskScoreDataClient, }); - const result: RiskEngineInitResult = { + const result: InitRiskEngineResult = { risk_engine_enabled: initResult.riskEngineEnabled, risk_engine_resources_installed: initResult.riskEngineResourcesInstalled, risk_engine_configuration_created: initResult.riskEngineConfigurationCreated, @@ -72,7 +72,7 @@ export const riskEngineInitRoute = ( errors: initResult.errors, }; - const initResponse: RiskEngineInitResponse = { + const initResponse: InitRiskEngineResponse = { result, }; diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/settings.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/settings.ts index 032114f7871b6..1d39fbaf18420 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/settings.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/settings.ts @@ -7,7 +7,7 @@ import { buildSiemResponse } from '@kbn/lists-plugin/server/routes/utils'; import { transformError } from '@kbn/securitysolution-es-utils'; -import type { RiskEngineSettingsResponse } from '../../../../../common/api/entity_analytics/risk_engine'; +import type { ReadRiskEngineSettingsResponse } from '../../../../../common/api/entity_analytics/risk_engine'; import { RISK_ENGINE_SETTINGS_URL, APP_ID } from '../../../../../common/constants'; import { AUDIT_CATEGORY, AUDIT_OUTCOME, AUDIT_TYPE } from '../../audit'; import type { EntityAnalyticsRoutesDeps } from '../../types'; @@ -43,7 +43,7 @@ export const riskEngineSettingsRoute = (router: EntityAnalyticsRoutesDeps['route if (!result) { throw new Error('Unable to get risk engine configuration'); } - const body: RiskEngineSettingsResponse = { + const body: ReadRiskEngineSettingsResponse = { range: result.range, }; return response.ok({ diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/event_based/events.ts b/x-pack/plugins/security_solution/server/lib/telemetry/event_based/events.ts index 97a4d44fcd594..8eb46b2046c10 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/event_based/events.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/event_based/events.ts @@ -5,7 +5,7 @@ * 2.0. */ import type { EventTypeOpts } from '@kbn/core/server'; -import type { AssetCriticalityBulkUploadResponse } from '../../../../common/api/entity_analytics'; +import type { BulkUpsertAssetCriticalityRecordsResponse } from '../../../../common/api/entity_analytics'; export const RISK_SCORE_EXECUTION_SUCCESS_EVENT: EventTypeOpts<{ scoresWritten: number; @@ -88,7 +88,7 @@ interface AssetCriticalitySystemProcessedAssignmentFileEvent { endTime: string; tookMs: number; }; - result?: AssetCriticalityBulkUploadResponse['stats']; + result?: BulkUpsertAssetCriticalityRecordsResponse['stats']; status: 'success' | 'partial_success' | 'fail'; } @@ -124,7 +124,7 @@ export const ASSET_CRITICALITY_SYSTEM_PROCESSED_ASSIGNMENT_FILE_EVENT: EventType }; interface CreateAssetCriticalityProcessedFileEvent { - result?: AssetCriticalityBulkUploadResponse['stats']; + result?: BulkUpsertAssetCriticalityRecordsResponse['stats']; startTime: Date; endTime: Date; } @@ -154,7 +154,7 @@ export const createAssetCriticalityProcessedFileEvent = ({ ]; }; -const getUploadStatus = (stats?: AssetCriticalityBulkUploadResponse['stats']) => { +const getUploadStatus = (stats?: BulkUpsertAssetCriticalityRecordsResponse['stats']) => { if (!stats) { return 'fail'; } diff --git a/x-pack/test/api_integration/services/security_solution_api.gen.ts b/x-pack/test/api_integration/services/security_solution_api.gen.ts index f5089b489a617..91ae460bbb563 100644 --- a/x-pack/test/api_integration/services/security_solution_api.gen.ts +++ b/x-pack/test/api_integration/services/security_solution_api.gen.ts @@ -26,13 +26,17 @@ import { BulkDeleteRulesRequestBodyInput } from '@kbn/security-solution-plugin/c import { BulkDeleteRulesPostRequestBodyInput } from '@kbn/security-solution-plugin/common/api/detection_engine/rule_management/bulk_crud/bulk_delete_rules/bulk_delete_rules_route.gen'; import { BulkPatchRulesRequestBodyInput } from '@kbn/security-solution-plugin/common/api/detection_engine/rule_management/bulk_crud/bulk_patch_rules/bulk_patch_rules_route.gen'; import { BulkUpdateRulesRequestBodyInput } from '@kbn/security-solution-plugin/common/api/detection_engine/rule_management/bulk_crud/bulk_update_rules/bulk_update_rules_route.gen'; +import { BulkUpsertAssetCriticalityRecordsRequestBodyInput } from '@kbn/security-solution-plugin/common/api/entity_analytics/asset_criticality/bulk_upload_asset_criticality.gen'; import { CreateAlertsMigrationRequestBodyInput } from '@kbn/security-solution-plugin/common/api/detection_engine/signals_migration/create_signals_migration/create_signals_migration.gen'; +import { CreateAssetCriticalityRecordRequestBodyInput } from '@kbn/security-solution-plugin/common/api/entity_analytics/asset_criticality/create_asset_criticality.gen'; import { CreateRuleRequestBodyInput } from '@kbn/security-solution-plugin/common/api/detection_engine/rule_management/crud/create_rule/create_rule_route.gen'; import { CreateUpdateProtectionUpdatesNoteRequestParamsInput, CreateUpdateProtectionUpdatesNoteRequestBodyInput, } from '@kbn/security-solution-plugin/common/api/endpoint/protection_updates_note/protection_updates_note.gen'; +import { DeleteAssetCriticalityRecordRequestQueryInput } from '@kbn/security-solution-plugin/common/api/entity_analytics/asset_criticality/delete_asset_criticality.gen'; import { DeleteRuleRequestQueryInput } from '@kbn/security-solution-plugin/common/api/detection_engine/rule_management/crud/delete_rule/delete_rule_route.gen'; +import { DeprecatedTriggerRiskScoreCalculationRequestBodyInput } from '@kbn/security-solution-plugin/common/api/entity_analytics/risk_engine/entity_calculation_route.gen'; import { EndpointIsolateRedirectRequestBodyInput } from '@kbn/security-solution-plugin/common/api/endpoint/actions/isolate_route.gen'; import { EndpointUnisolateRedirectRequestBodyInput } from '@kbn/security-solution-plugin/common/api/endpoint/actions/unisolate_route.gen'; import { @@ -40,9 +44,11 @@ import { ExportRulesRequestBodyInput, } from '@kbn/security-solution-plugin/common/api/detection_engine/rule_management/export_rules/export_rules_route.gen'; import { FinalizeAlertsMigrationRequestBodyInput } from '@kbn/security-solution-plugin/common/api/detection_engine/signals_migration/finalize_signals_migration/finalize_signals_migration.gen'; +import { FindAssetCriticalityRecordsRequestQueryInput } from '@kbn/security-solution-plugin/common/api/entity_analytics/asset_criticality/list_asset_criticality.gen'; import { FindRulesRequestQueryInput } from '@kbn/security-solution-plugin/common/api/detection_engine/rule_management/find_rules/find_rules_route.gen'; import { GetAgentPolicySummaryRequestQueryInput } from '@kbn/security-solution-plugin/common/api/endpoint/policy/policy.gen'; import { GetAlertsMigrationStatusRequestQueryInput } from '@kbn/security-solution-plugin/common/api/detection_engine/signals_migration/get_signals_migration_status/get_signals_migration_status.gen'; +import { GetAssetCriticalityRecordRequestQueryInput } from '@kbn/security-solution-plugin/common/api/entity_analytics/asset_criticality/get_asset_criticality.gen'; import { GetEndpointSuggestionsRequestParamsInput, GetEndpointSuggestionsRequestBodyInput, @@ -58,18 +64,22 @@ import { GetRuleExecutionResultsRequestParamsInput, } from '@kbn/security-solution-plugin/common/api/detection_engine/rule_monitoring/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.gen'; import { ImportRulesRequestQueryInput } from '@kbn/security-solution-plugin/common/api/detection_engine/rule_management/import_rules/import_rules_route.gen'; +import { InternalCreateAssetCriticalityRecordRequestBodyInput } from '@kbn/security-solution-plugin/common/api/entity_analytics/asset_criticality/create_asset_criticality.gen'; +import { InternalDeleteAssetCriticalityRecordRequestQueryInput } from '@kbn/security-solution-plugin/common/api/entity_analytics/asset_criticality/delete_asset_criticality.gen'; import { ManageAlertTagsRequestBodyInput } from '@kbn/security-solution-plugin/common/api/detection_engine/alert_tags/set_alert_tags/set_alert_tags.gen'; import { PatchRuleRequestBodyInput } from '@kbn/security-solution-plugin/common/api/detection_engine/rule_management/crud/patch_rule/patch_rule_route.gen'; import { PerformBulkActionRequestQueryInput, PerformBulkActionRequestBodyInput, } from '@kbn/security-solution-plugin/common/api/detection_engine/rule_management/bulk_actions/bulk_actions_route.gen'; +import { PreviewRiskScoreRequestBodyInput } from '@kbn/security-solution-plugin/common/api/entity_analytics/risk_engine/preview_route.gen'; import { ReadRuleRequestQueryInput } from '@kbn/security-solution-plugin/common/api/detection_engine/rule_management/crud/read_rule/read_rule_route.gen'; import { RulePreviewRequestBodyInput } from '@kbn/security-solution-plugin/common/api/detection_engine/rule_preview/rule_preview.gen'; import { SearchAlertsRequestBodyInput } from '@kbn/security-solution-plugin/common/api/detection_engine/signals/query_signals/query_signals_route.gen'; import { SetAlertAssigneesRequestBodyInput } from '@kbn/security-solution-plugin/common/api/detection_engine/alert_assignees/set_alert_assignees_route.gen'; import { SetAlertsStatusRequestBodyInput } from '@kbn/security-solution-plugin/common/api/detection_engine/signals/set_signal_status/set_signals_status_route.gen'; import { SuggestUserProfilesRequestQueryInput } from '@kbn/security-solution-plugin/common/api/detection_engine/users/suggest_user_profiles_route.gen'; +import { TriggerRiskScoreCalculationRequestBodyInput } from '@kbn/security-solution-plugin/common/api/entity_analytics/risk_engine/entity_calculation_route.gen'; import { UpdateRuleRequestBodyInput } from '@kbn/security-solution-plugin/common/api/detection_engine/rule_management/crud/update_rule/update_rule_route.gen'; import { FtrProviderContext } from '../ftr_provider_context'; @@ -153,6 +163,14 @@ after 30 days. It also deletes other artifacts specific to the migration impleme .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .send(props.body as object); }, + bulkUpsertAssetCriticalityRecords(props: BulkUpsertAssetCriticalityRecordsProps) { + return supertest + .post('/api/asset_criticality/bulk') + .set('kbn-xsrf', 'true') + .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') + .send(props.body as object); + }, createAlertsIndex() { return supertest .post('/api/detection_engine/index') @@ -173,6 +191,14 @@ Migrations are initiated per index. While the process is neither destructive nor .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .send(props.body as object); }, + createAssetCriticalityRecord(props: CreateAssetCriticalityRecordProps) { + return supertest + .post('/api/asset_criticality') + .set('kbn-xsrf', 'true') + .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') + .send(props.body as object); + }, /** * Create a new detection rule. */ @@ -201,6 +227,14 @@ Migrations are initiated per index. While the process is neither destructive nor .set(ELASTIC_HTTP_VERSION_HEADER, '2023-10-31') .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana'); }, + deleteAssetCriticalityRecord(props: DeleteAssetCriticalityRecordProps) { + return supertest + .delete('/api/asset_criticality') + .set('kbn-xsrf', 'true') + .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') + .query(props.query); + }, /** * Delete a detection rule using the `rule_id` or `id` field. */ @@ -212,6 +246,31 @@ Migrations are initiated per index. While the process is neither destructive nor .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .query(props.query); }, + /** + * Calculates and persists Risk Scores for an entity, returning the calculated risk score. + */ + deprecatedTriggerRiskScoreCalculation(props: DeprecatedTriggerRiskScoreCalculationProps) { + return supertest + .post('/api/risk_scores/calculation/entity') + .set('kbn-xsrf', 'true') + .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') + .send(props.body as object); + }, + disableRiskEngine() { + return supertest + .post('/internal/risk_score/engine/disable') + .set('kbn-xsrf', 'true') + .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana'); + }, + enableRiskEngine() { + return supertest + .post('/internal/risk_score/engine/enable') + .set('kbn-xsrf', 'true') + .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana'); + }, endpointIsolateRedirect(props: EndpointIsolateRedirectProps) { return supertest .post('/api/endpoint/isolate') @@ -259,6 +318,14 @@ finalize it. .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .send(props.body as object); }, + findAssetCriticalityRecords(props: FindAssetCriticalityRecordsProps) { + return supertest + .post('/api/asset_criticality/list') + .set('kbn-xsrf', 'true') + .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') + .query(props.query); + }, /** * Retrieve a paginated list of detection rules. By default, the first page is returned, with 20 results per page. */ @@ -296,6 +363,21 @@ finalize it. .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .query(props.query); }, + getAssetCriticalityRecord(props: GetAssetCriticalityRecordProps) { + return supertest + .get('/api/asset_criticality') + .set('kbn-xsrf', 'true') + .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') + .query(props.query); + }, + getAssetCriticalityStatus() { + return supertest + .get('/internal/asset_criticality/status') + .set('kbn-xsrf', 'true') + .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana'); + }, getEndpointSuggestions(props: GetEndpointSuggestionsProps) { return supertest .post(replaceParams('/api/endpoint/suggestions/{suggestion_type}', props.params)) @@ -345,6 +427,16 @@ detection engine rules. .set(ELASTIC_HTTP_VERSION_HEADER, '2023-10-31') .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana'); }, + /** + * Returns the status of both the legacy transform-based risk engine, as well as the new risk engine + */ + getRiskEngineStatus() { + return supertest + .get('/internal/risk_score/engine/status') + .set('kbn-xsrf', 'true') + .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana'); + }, getRuleExecutionEvents(props: GetRuleExecutionEventsProps) { return supertest .put( @@ -379,6 +471,16 @@ detection engine rules. .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .query(props.query); }, + /** + * Initializes the Risk Engine by creating the necessary indices and mappings, removing old transforms, and starting the new risk engine + */ + initRiskEngine() { + return supertest + .post('/internal/risk_score/engine/init') + .set('kbn-xsrf', 'true') + .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana'); + }, /** * Install and update all Elastic prebuilt detection rules and Timelines. */ @@ -389,6 +491,29 @@ detection engine rules. .set(ELASTIC_HTTP_VERSION_HEADER, '2023-10-31') .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana'); }, + internalCreateAssetCriticalityRecord(props: InternalCreateAssetCriticalityRecordProps) { + return supertest + .post('/internal/asset_criticality') + .set('kbn-xsrf', 'true') + .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') + .send(props.body as object); + }, + internalDeleteAssetCriticalityRecord(props: InternalDeleteAssetCriticalityRecordProps) { + return supertest + .delete('/internal/asset_criticality') + .set('kbn-xsrf', 'true') + .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') + .query(props.query); + }, + internalUploadAssetCriticalityRecords() { + return supertest + .post('/internal/asset_criticality/upload_csv') + .set('kbn-xsrf', 'true') + .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana'); + }, /** * And tags to detection alerts, and remove them from alerts. > info @@ -426,6 +551,24 @@ detection engine rules. .send(props.body as object) .query(props.query); }, + /** + * Calculates and returns a list of Risk Scores, sorted by identifier_type and risk score. + */ + previewRiskScore(props: PreviewRiskScoreProps) { + return supertest + .post('/internal/risk_score/preview') + .set('kbn-xsrf', 'true') + .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') + .send(props.body as object); + }, + readRiskEngineSettings() { + return supertest + .get('/internal/risk_score/engine/settings') + .set('kbn-xsrf', 'true') + .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana'); + }, /** * Retrieve a detection rule using the `rule_id` or `id` field. */ @@ -502,6 +645,17 @@ detection engine rules. .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .query(props.query); }, + /** + * Calculates and persists Risk Scores for an entity, returning the calculated risk score. + */ + triggerRiskScoreCalculation(props: TriggerRiskScoreCalculationProps) { + return supertest + .post('/internal/risk_score/calculation/entity') + .set('kbn-xsrf', 'true') + .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') + .send(props.body as object); + }, /** * Update a detection rule using the `rule_id` or `id` field. The original rule is replaced, and all unspecified fields are deleted. > info @@ -516,6 +670,13 @@ detection engine rules. .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .send(props.body as object); }, + uploadAssetCriticalityRecords() { + return supertest + .post('/api/asset_criticality/upload_csv') + .set('kbn-xsrf', 'true') + .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana'); + }, }; } @@ -537,9 +698,15 @@ export interface BulkPatchRulesProps { export interface BulkUpdateRulesProps { body: BulkUpdateRulesRequestBodyInput; } +export interface BulkUpsertAssetCriticalityRecordsProps { + body: BulkUpsertAssetCriticalityRecordsRequestBodyInput; +} export interface CreateAlertsMigrationProps { body: CreateAlertsMigrationRequestBodyInput; } +export interface CreateAssetCriticalityRecordProps { + body: CreateAssetCriticalityRecordRequestBodyInput; +} export interface CreateRuleProps { body: CreateRuleRequestBodyInput; } @@ -547,9 +714,15 @@ export interface CreateUpdateProtectionUpdatesNoteProps { params: CreateUpdateProtectionUpdatesNoteRequestParamsInput; body: CreateUpdateProtectionUpdatesNoteRequestBodyInput; } +export interface DeleteAssetCriticalityRecordProps { + query: DeleteAssetCriticalityRecordRequestQueryInput; +} export interface DeleteRuleProps { query: DeleteRuleRequestQueryInput; } +export interface DeprecatedTriggerRiskScoreCalculationProps { + body: DeprecatedTriggerRiskScoreCalculationRequestBodyInput; +} export interface EndpointIsolateRedirectProps { body: EndpointIsolateRedirectRequestBodyInput; } @@ -563,6 +736,9 @@ export interface ExportRulesProps { export interface FinalizeAlertsMigrationProps { body: FinalizeAlertsMigrationRequestBodyInput; } +export interface FindAssetCriticalityRecordsProps { + query: FindAssetCriticalityRecordsRequestQueryInput; +} export interface FindRulesProps { query: FindRulesRequestQueryInput; } @@ -572,6 +748,9 @@ export interface GetAgentPolicySummaryProps { export interface GetAlertsMigrationStatusProps { query: GetAlertsMigrationStatusRequestQueryInput; } +export interface GetAssetCriticalityRecordProps { + query: GetAssetCriticalityRecordRequestQueryInput; +} export interface GetEndpointSuggestionsProps { params: GetEndpointSuggestionsRequestParamsInput; body: GetEndpointSuggestionsRequestBodyInput; @@ -593,6 +772,12 @@ export interface GetRuleExecutionResultsProps { export interface ImportRulesProps { query: ImportRulesRequestQueryInput; } +export interface InternalCreateAssetCriticalityRecordProps { + body: InternalCreateAssetCriticalityRecordRequestBodyInput; +} +export interface InternalDeleteAssetCriticalityRecordProps { + query: InternalDeleteAssetCriticalityRecordRequestQueryInput; +} export interface ManageAlertTagsProps { body: ManageAlertTagsRequestBodyInput; } @@ -603,6 +788,9 @@ export interface PerformBulkActionProps { query: PerformBulkActionRequestQueryInput; body: PerformBulkActionRequestBodyInput; } +export interface PreviewRiskScoreProps { + body: PreviewRiskScoreRequestBodyInput; +} export interface ReadRuleProps { query: ReadRuleRequestQueryInput; } @@ -621,6 +809,9 @@ export interface SetAlertsStatusProps { export interface SuggestUserProfilesProps { query: SuggestUserProfilesRequestQueryInput; } +export interface TriggerRiskScoreCalculationProps { + body: TriggerRiskScoreCalculationRequestBodyInput; +} export interface UpdateRuleProps { body: UpdateRuleRequestBodyInput; } diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/asset_criticality.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/asset_criticality.ts index 9ae70f540f897..11343e077eeaf 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/asset_criticality.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/asset_criticality.ts @@ -23,7 +23,7 @@ import { import type { AssetCriticalityRecord, CreateAssetCriticalityRecord, - ListAssetCriticalityQueryParams, + FindAssetCriticalityRecordsRequestQuery, } from '@kbn/security-solution-plugin/common/api/entity_analytics'; import type { Client } from '@elastic/elasticsearch'; import type { ToolingLog } from '@kbn/tooling-log'; @@ -187,7 +187,7 @@ export const assetCriticalityRouteHelpersFactory = ( .expect(expectStatusCode); }, list: async ( - opts: ListAssetCriticalityQueryParams = {}, + opts: FindAssetCriticalityRecordsRequestQuery = {}, { expectStatusCode }: { expectStatusCode: number } = { expectStatusCode: 200 } ) => { const qs = querystring.stringify(opts);