diff --git a/.eslintrc.js b/.eslintrc.js index df107348cfafc..902643dbe5066 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1314,7 +1314,7 @@ module.exports = { { // typescript for front and back end files: [ - 'x-pack/plugins/{alerting,stack_alerts,stack_connectors,actions,task_manager,event_log}/**/*.{ts,tsx}', + 'x-pack/plugins/{alerting,stack_alerts,actions,task_manager,event_log}/**/*.{ts,tsx}', ], rules: { '@typescript-eslint/no-explicit-any': 'error', @@ -1322,7 +1322,7 @@ module.exports = { }, { // typescript only for back end - files: ['x-pack/plugins/triggers_actions_ui/server/**/*.ts'], + files: ['x-pack/plugins/{stack_connectors,triggers_actions_ui}/server/**/*.ts'], rules: { '@typescript-eslint/no-explicit-any': 'error', }, diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 63c5c8047c6b4..d0c6e476d6d44 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -331,7 +331,9 @@ x-pack/examples/files_example @elastic/kibana-app-services /x-pack/plugins/event_log/ @elastic/response-ops /x-pack/plugins/task_manager/ @elastic/response-ops /x-pack/plugins/stack_connectors/ @elastic/response-ops +/x-pack/plugins/stack_connectors/public/connector_types/stack/ @elastic/response-ops-execution /x-pack/plugins/stack_connectors/server/connector_types/stack/ @elastic/response-ops-execution +/x-pack/plugins/stack_connectors/public/connector_types/cases/ @elastic/response-ops-cases /x-pack/plugins/stack_connectors/server/connector_types/cases/ @elastic/response-ops-cases /x-pack/test/alerting_api_integration/ @elastic/response-ops /x-pack/test/plugin_api_integration/test_suites/task_manager/ @elastic/response-ops diff --git a/package.json b/package.json index 02511a00b56c3..6c0913394e246 100644 --- a/package.json +++ b/package.json @@ -1177,7 +1177,7 @@ "@types/nock": "^10.0.3", "@types/node": "16.11.41", "@types/node-fetch": "^2.6.0", - "@types/node-forge": "^1.0.4", + "@types/node-forge": "^1.3.0", "@types/nodemailer": "^6.4.0", "@types/normalize-path": "^3.0.0", "@types/object-hash": "^1.3.0", diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml index c8daaf258deb6..440ff3ce2b12c 100644 --- a/packages/kbn-optimizer/limits.yml +++ b/packages/kbn-optimizer/limits.yml @@ -108,6 +108,7 @@ pageLoadAssetSize: snapshotRestore: 79032 spaces: 57868 stackAlerts: 29684 + stackConnectors: 36314 synthetics: 40958 telemetry: 51957 telemetryManagementSection: 38586 diff --git a/packages/kbn-securitysolution-io-ts-types/src/time_duration/index.test.ts b/packages/kbn-securitysolution-io-ts-types/src/time_duration/index.test.ts index 8af5f04bf16e6..872affa9989a7 100644 --- a/packages/kbn-securitysolution-io-ts-types/src/time_duration/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/time_duration/index.test.ts @@ -11,7 +11,7 @@ import { left } from 'fp-ts/lib/Either'; import { TimeDuration } from '.'; import { foldLeftRight, getPaths } from '@kbn/securitysolution-io-ts-utils'; -describe('time_unit', () => { +describe('TimeDuration', () => { test('it should validate a correctly formed TimeDuration with time unit of seconds', () => { const payload = '1s'; const decoded = TimeDuration.decode(payload); @@ -39,6 +39,17 @@ describe('time_unit', () => { expect(message.schema).toEqual(payload); }); + test('it should NOT validate a TimeDuration of 0 length', () => { + const payload = '0s'; + const decoded = TimeDuration.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([ + 'Invalid value "0s" supplied to "TimeDuration"', + ]); + expect(message.schema).toEqual({}); + }); + test('it should NOT validate a negative TimeDuration', () => { const payload = '-10s'; const decoded = TimeDuration.decode(payload); @@ -50,6 +61,17 @@ describe('time_unit', () => { expect(message.schema).toEqual({}); }); + test('it should NOT validate a decimal TimeDuration', () => { + const payload = '1.5s'; + const decoded = TimeDuration.decode(payload); + const message = pipe(decoded, foldLeftRight); + + expect(getPaths(left(message.errors))).toEqual([ + 'Invalid value "1.5s" supplied to "TimeDuration"', + ]); + expect(message.schema).toEqual({}); + }); + test('it should NOT validate a TimeDuration with some other time unit', () => { const payload = '10000000w'; const decoded = TimeDuration.decode(payload); diff --git a/packages/kbn-securitysolution-io-ts-types/src/time_duration/index.ts b/packages/kbn-securitysolution-io-ts-types/src/time_duration/index.ts index c486e1d171689..5549979ac68de 100644 --- a/packages/kbn-securitysolution-io-ts-types/src/time_duration/index.ts +++ b/packages/kbn-securitysolution-io-ts-types/src/time_duration/index.ts @@ -21,8 +21,12 @@ export const TimeDuration = new t.Type( if (typeof input === 'string' && input.trim() !== '') { try { const inputLength = input.length; - const time = parseInt(input.trim().substring(0, inputLength - 1), 10); const unit = input.trim().at(-1); + const time = parseFloat(input.trim().substring(0, inputLength - 1)); + + if (!Number.isInteger(time)) { + return t.failure(input, context); + } if ( time >= 1 && Number.isSafeInteger(time) && diff --git a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts index fd4452ccb46af..db46da11f5f57 100644 --- a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts +++ b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts @@ -360,7 +360,7 @@ export function registerIndexRoutes({ pipelineName, modelId, sourceField, - destinationField || modelId, + destinationField, client.asCurrentUser ); } catch (error) { diff --git a/x-pack/plugins/enterprise_search/server/utils/create_ml_inference_pipeline.test.ts b/x-pack/plugins/enterprise_search/server/utils/create_ml_inference_pipeline.test.ts index c34bbae2f97f1..d3aa24560594d 100644 --- a/x-pack/plugins/enterprise_search/server/utils/create_ml_inference_pipeline.test.ts +++ b/x-pack/plugins/enterprise_search/server/utils/create_ml_inference_pipeline.test.ts @@ -16,6 +16,16 @@ import { getPrefixedInferencePipelineProcessorName, } from './ml_inference_pipeline_utils'; +const mockClient = { + ingest: { + getPipeline: jest.fn(), + putPipeline: jest.fn(), + }, + ml: { + getTrainedModels: jest.fn(), + }, +}; + describe('createMlInferencePipeline util function', () => { const pipelineName = 'my-pipeline'; const modelId = 'my-model-id'; @@ -23,16 +33,6 @@ describe('createMlInferencePipeline util function', () => { const destinationField = 'my-dest-field'; const inferencePipelineGeneratedName = getPrefixedInferencePipelineProcessorName(pipelineName); - const mockClient = { - ingest: { - getPipeline: jest.fn(), - putPipeline: jest.fn(), - }, - ml: { - getTrainedModels: jest.fn(), - }, - }; - mockClient.ml.getTrainedModels.mockImplementation(() => Promise.resolve({ trained_model_configs: [ @@ -86,6 +86,32 @@ describe('createMlInferencePipeline util function', () => { ); }); + it('should default the destination field to the pipeline name', async () => { + mockClient.ingest.getPipeline.mockImplementation(() => Promise.reject({ statusCode: 404 })); // Pipeline does not exist + mockClient.ingest.putPipeline.mockImplementation(() => Promise.resolve({ acknowledged: true })); + + await createMlInferencePipeline( + pipelineName, + modelId, + sourceField, + undefined, // Omitted destination field + mockClient as unknown as ElasticsearchClient + ); + + // Verify the object passed to pipeline creation contains the default target field name + expect(mockClient.ingest.putPipeline).toHaveBeenCalledWith( + expect.objectContaining({ + processors: expect.arrayContaining([ + expect.objectContaining({ + inference: expect.objectContaining({ + target_field: `ml.inference.${pipelineName}`, + }), + }), + ]), + }) + ); + }); + it('should throw an error without creating the pipeline if it already exists', () => { mockClient.ingest.getPipeline.mockImplementation(() => Promise.resolve({ @@ -111,13 +137,6 @@ describe('addSubPipelineToIndexSpecificMlPipeline util function', () => { const parentPipelineId = getInferencePipelineNameFromIndexName(indexName); const pipelineName = 'ml-inference-my-pipeline'; - const mockClient = { - ingest: { - getPipeline: jest.fn(), - putPipeline: jest.fn(), - }, - }; - beforeEach(() => { jest.clearAllMocks(); }); diff --git a/x-pack/plugins/enterprise_search/server/utils/create_ml_inference_pipeline.ts b/x-pack/plugins/enterprise_search/server/utils/create_ml_inference_pipeline.ts index ebe69f98118d1..dfcd8d4884972 100644 --- a/x-pack/plugins/enterprise_search/server/utils/create_ml_inference_pipeline.ts +++ b/x-pack/plugins/enterprise_search/server/utils/create_ml_inference_pipeline.ts @@ -15,6 +15,7 @@ import { formatMlPipelineBody } from '../lib/pipelines/create_pipeline_definitio import { getInferencePipelineNameFromIndexName, getPrefixedInferencePipelineProcessorName, + formatPipelineName, } from './ml_inference_pipeline_utils'; /** @@ -41,14 +42,14 @@ export const createAndReferenceMlInferencePipeline = async ( pipelineName: string, modelId: string, sourceField: string, - destinationField: string, + destinationField: string | null | undefined, esClient: ElasticsearchClient ): Promise => { const createPipelineResult = await createMlInferencePipeline( pipelineName, modelId, sourceField, - destinationField || modelId, + destinationField, esClient ); @@ -76,7 +77,7 @@ export const createMlInferencePipeline = async ( pipelineName: string, modelId: string, sourceField: string, - destinationField: string, + destinationField: string | null | undefined, esClient: ElasticsearchClient ): Promise => { const inferencePipelineGeneratedName = getPrefixedInferencePipelineProcessorName(pipelineName); @@ -99,7 +100,7 @@ export const createMlInferencePipeline = async ( inferencePipelineGeneratedName, modelId, sourceField, - destinationField, + destinationField || formatPipelineName(pipelineName), esClient ); diff --git a/x-pack/plugins/enterprise_search/server/utils/ml_inference_pipeline_utils.ts b/x-pack/plugins/enterprise_search/server/utils/ml_inference_pipeline_utils.ts index e059f5b9090c0..6547034f25403 100644 --- a/x-pack/plugins/enterprise_search/server/utils/ml_inference_pipeline_utils.ts +++ b/x-pack/plugins/enterprise_search/server/utils/ml_inference_pipeline_utils.ts @@ -13,7 +13,7 @@ export const getPrefixedInferencePipelineProcessorName = (pipelineName: string) ? formatPipelineName(pipelineName) : `ml-inference-${formatPipelineName(pipelineName)}`; -const formatPipelineName = (rawName: string) => +export const formatPipelineName = (rawName: string) => rawName .trim() .replace(/\s+/g, '_') // Convert whitespaces to underscores diff --git a/x-pack/plugins/fleet/dev_docs/fleet_ui_extensions.md b/x-pack/plugins/fleet/dev_docs/fleet_ui_extensions.md index 9dcb7112f7ef0..46788ecac5da0 100644 --- a/x-pack/plugins/fleet/dev_docs/fleet_ui_extensions.md +++ b/x-pack/plugins/fleet/dev_docs/fleet_ui_extensions.md @@ -33,6 +33,12 @@ export class Plugin { component: LazyEndpointPolicyCreateExtension, }); + registerExtension({ + package: 'endpoint', + view: 'package-policy-create-multi-step', + component: LazyEndpointPolicyCreateMultiStepExtension, + }); + registerExtension({ package: 'endpoint', view: 'package-detail-custom', diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/multi_page_layout/components/page_steps/add_integration.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/multi_page_layout/components/page_steps/add_integration.tsx index bce4d71b04259..c5ccd2916e465 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/multi_page_layout/components/page_steps/add_integration.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/multi_page_layout/components/page_steps/add_integration.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { useCallback, useState, useEffect } from 'react'; +import React, { useCallback, useState, useEffect, useMemo } from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; import { EuiSpacer, EuiButtonEmpty, EuiFlexItem, EuiFlexGroup } from '@elastic/eui'; import { safeLoad } from 'js-yaml'; @@ -19,9 +19,9 @@ import { isVerificationError } from '../../../../../../../../services'; import type { MultiPageStepLayoutProps } from '../../types'; import type { PackagePolicyFormState } from '../../../types'; import type { NewPackagePolicy } from '../../../../../../types'; -import { sendCreatePackagePolicy, useStartServices } from '../../../../../../hooks'; +import { sendCreatePackagePolicy, useStartServices, useUIExtension } from '../../../../../../hooks'; import type { RequestError } from '../../../../../../hooks'; -import { Error } from '../../../../../../components'; +import { Error, ExtensionWrapper } from '../../../../../../components'; import { sendGeneratePackagePolicy } from '../../hooks'; import { CreatePackagePolicyBottomBar, StandaloneModeWarningCallout } from '..'; import type { PackagePolicyValidationResults } from '../../../services'; @@ -212,6 +212,55 @@ export const AddIntegrationPageStep: React.FC = (props getBasePolicy(); }, []); // eslint-disable-line react-hooks/exhaustive-deps + const extensionView = useUIExtension(packageInfo.name ?? '', 'package-policy-create-multi-step'); + const addIntegrationExtensionView = useMemo(() => { + return ( + extensionView && ( + + + + ) + ); + }, [packagePolicy, extensionView]); + + const content = useMemo(() => { + if (packageInfo.name !== 'endpoint') { + return ( + <> + + + {validationResults && ( + + + + )} + + ); + } + }, [ + formState, + integrationInfo?.name, + packageInfo, + packagePolicy, + updatePackagePolicy, + validationResults, + ]); + if (!agentPolicy) { return ( = (props return ( <> {isManaged ? null : } - - - {validationResults && ( - - - - )} + {content} + {addIntegrationExtensionView} setIsManaged(true)} diff --git a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/utils/get_install_route_options.test.ts b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/utils/get_install_route_options.test.ts index 8d556434f8828..e085b9034235b 100644 --- a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/utils/get_install_route_options.test.ts +++ b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/utils/get_install_route_options.test.ts @@ -131,7 +131,7 @@ describe('getInstallPkgRouteOptions', () => { expect(getInstallPkgRouteOptions(opts)).toEqual(['fleet', expectedOptions]); }); - it('should not navigate to steps app for endpoint', () => { + it('should navigate to steps app for endpoint', () => { const opts = { currentPath: 'currentPath', integration: 'myintegration', @@ -144,7 +144,7 @@ describe('getInstallPkgRouteOptions', () => { const expectedRedirectURl = '/detail/endpoint-1.0.0/policies?integration=myintegration'; const expectedOptions = { - path: '/integrations/endpoint-1.0.0/add-integration/myintegration', + path: '/integrations/endpoint-1.0.0/add-integration/myintegration?useMultiPageLayout', state: { onCancelUrl: 'currentPath', onCancelNavigateTo: [ diff --git a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/utils/get_install_route_options.ts b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/utils/get_install_route_options.ts index c4e6d7ffc4a84..6a8612a44f42f 100644 --- a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/utils/get_install_route_options.ts +++ b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/utils/get_install_route_options.ts @@ -13,7 +13,6 @@ const EXCLUDED_PACKAGES = [ 'apm', 'cloud_security_posture', 'dga', - 'endpoint', 'fleet_server', 'kubernetes', 'osquery_manager', diff --git a/x-pack/plugins/fleet/public/index.ts b/x-pack/plugins/fleet/public/index.ts index a55937999c4d6..823d46becb4ff 100644 --- a/x-pack/plugins/fleet/public/index.ts +++ b/x-pack/plugins/fleet/public/index.ts @@ -35,6 +35,9 @@ export type { PackagePolicyCreateExtension, PackagePolicyCreateExtensionComponent, PackagePolicyCreateExtensionComponentProps, + PackagePolicyCreateMultiStepExtension, + PackagePolicyCreateMultiStepExtensionComponent, + PackagePolicyCreateMultiStepExtensionComponentProps, PackagePolicyEditExtension, PackagePolicyEditExtensionComponent, PackagePolicyEditExtensionComponentProps, diff --git a/x-pack/plugins/fleet/public/types/ui_extensions.ts b/x-pack/plugins/fleet/public/types/ui_extensions.ts index c3a9f05fc7d9f..24f9fef730613 100644 --- a/x-pack/plugins/fleet/public/types/ui_extensions.ts +++ b/x-pack/plugins/fleet/public/types/ui_extensions.ts @@ -132,6 +132,25 @@ export interface PackagePolicyCreateExtension { Component: LazyExoticComponent; } +/** + * UI Component Extension is used on the pages displaying the ability to Create a multi step + * Integration Policy + */ +export type PackagePolicyCreateMultiStepExtensionComponent = + ComponentType; + +export interface PackagePolicyCreateMultiStepExtensionComponentProps { + /** The integration policy being created */ + newPolicy: NewPackagePolicy; +} + +/** Extension point registration contract for Integration Policy Create views in multi-step onboarding */ +export interface PackagePolicyCreateMultiStepExtension { + package: string; + view: 'package-policy-create-multi-step'; + Component: LazyExoticComponent; +} + /** * UI Component Extension is used to display a Custom tab (and view) under a given Integration */ @@ -178,4 +197,5 @@ export type UIExtensionPoint = | PackagePolicyCreateExtension | PackageAssetsExtension | PackageGenericErrorsListExtension - | AgentEnrollmentFlyoutFinalStepExtension; + | AgentEnrollmentFlyoutFinalStepExtension + | PackagePolicyCreateMultiStepExtension; diff --git a/x-pack/plugins/fleet/server/services/package_policy.test.ts b/x-pack/plugins/fleet/server/services/package_policy.test.ts index 9bbeb8fd67232..10a076d734f89 100644 --- a/x-pack/plugins/fleet/server/services/package_policy.test.ts +++ b/x-pack/plugins/fleet/server/services/package_policy.test.ts @@ -666,6 +666,158 @@ describe('Package policy service', () => { ).rejects.toThrow('Saved object [abc/123] conflict'); }); + it('should fail to update if the name already exists on another policy', async () => { + const savedObjectsClient = savedObjectsClientMock.create(); + savedObjectsClient.find.mockResolvedValue({ + total: 1, + per_page: 1, + page: 1, + saved_objects: [ + { + id: 'existing-package-policy', + type: 'ingest-package-policies', + score: 1, + references: [], + version: '1.0.0', + attributes: { + name: 'endpoint-1', + description: '', + namespace: 'default', + enabled: true, + policy_id: 'policy-id-1', + package: { + name: 'endpoint', + title: 'Elastic Endpoint', + version: '0.9.0', + }, + inputs: [], + }, + }, + ], + }); + savedObjectsClient.get.mockResolvedValue({ + id: 'the-package-policy-id', + type: 'abcd', + references: [], + version: 'test', + attributes: {}, + }); + savedObjectsClient.update.mockImplementation( + async ( + type: string, + id: string, + attrs: any + ): Promise> => { + savedObjectsClient.get.mockResolvedValue({ + id: 'the-package-policy-id', + type, + references: [], + version: 'test', + attributes: attrs, + }); + return attrs; + } + ); + const elasticsearchClient = elasticsearchServiceMock.createClusterClient().asInternalUser; + await expect( + packagePolicyService.update( + savedObjectsClient, + elasticsearchClient, + 'the-package-policy-id', + { + name: 'endpoint-1', + description: '', + namespace: 'default', + enabled: true, + policy_id: '93c46720-c217-11ea-9906-b5b8a21b268e', + package: { + name: 'endpoint', + title: 'Elastic Endpoint', + version: '0.9.0', + }, + inputs: [], + } + ) + ).rejects.toThrow( + 'An integration policy with the name endpoint-1 already exists. Please rename it or choose a different name.' + ); + }); + + it('should not fail to update if skipUniqueNameVerification when the name already exists on another policy', async () => { + const savedObjectsClient = savedObjectsClientMock.create(); + savedObjectsClient.find.mockResolvedValue({ + total: 1, + per_page: 1, + page: 1, + saved_objects: [ + { + id: 'existing-package-policy', + type: 'ingest-package-policies', + score: 1, + references: [], + version: '1.0.0', + attributes: { + name: 'endpoint-1', + description: '', + namespace: 'default', + enabled: true, + policy_id: 'policy-id-1', + package: { + name: 'endpoint', + title: 'Elastic Endpoint', + version: '0.9.0', + }, + inputs: [], + }, + }, + ], + }); + savedObjectsClient.get.mockResolvedValue({ + id: 'the-package-policy-id', + type: 'abcd', + references: [], + version: 'test', + attributes: {}, + }); + savedObjectsClient.update.mockImplementation( + async ( + type: string, + id: string, + attrs: any + ): Promise> => { + savedObjectsClient.get.mockResolvedValue({ + id: 'the-package-policy-id', + type, + references: [], + version: 'test', + attributes: attrs, + }); + return attrs; + } + ); + const elasticsearchClient = elasticsearchServiceMock.createClusterClient().asInternalUser; + const result = await packagePolicyService.update( + savedObjectsClient, + elasticsearchClient, + 'the-package-policy-id', + { + name: 'endpoint-1', + description: '', + namespace: 'default', + enabled: true, + policy_id: '93c46720-c217-11ea-9906-b5b8a21b268e', + package: { + name: 'endpoint', + title: 'Elastic Endpoint', + version: '0.9.0', + }, + inputs: [], + }, + { skipUniqueNameVerification: true } + ); + expect(result.name).toEqual('endpoint-1'); + }); + it('should throw if the user try to update input vars that are frozen', async () => { const savedObjectsClient = savedObjectsClientMock.create(); const mockPackagePolicy = createPackagePolicyMock(); diff --git a/x-pack/plugins/fleet/server/services/package_policy.ts b/x-pack/plugins/fleet/server/services/package_policy.ts index 7f294ca89d65f..f52316dd4452b 100644 --- a/x-pack/plugins/fleet/server/services/package_policy.ts +++ b/x-pack/plugins/fleet/server/services/package_policy.ts @@ -469,7 +469,7 @@ class PackagePolicyClientImpl implements PackagePolicyClient { esClient: ElasticsearchClient, id: string, packagePolicyUpdate: UpdatePackagePolicy, - options?: { user?: AuthenticatedUser; force?: boolean }, + options?: { user?: AuthenticatedUser; force?: boolean; skipUniqueNameVerification?: boolean }, currentVersion?: string ): Promise { const packagePolicy = { ...packagePolicyUpdate, name: packagePolicyUpdate.name.trim() }; @@ -479,22 +479,22 @@ class PackagePolicyClientImpl implements PackagePolicyClient { if (packagePolicyUpdate.is_managed && !options?.force) { throw new PackagePolicyRestrictionRelatedError(`Cannot update package policy ${id}`); } - if (!oldPackagePolicy) { throw new Error('Package policy not found'); } - // Check that the name does not exist already but exclude the current package policy - const existingPoliciesWithName = await this.list(soClient, { - perPage: SO_SEARCH_LIMIT, - kuery: `${PACKAGE_POLICY_SAVED_OBJECT_TYPE}.name:"${packagePolicy.name}"`, - }); - const filtered = (existingPoliciesWithName?.items || []).filter((p) => p.id !== id); - - if (filtered.length > 0) { - throw new FleetError( - `An integration policy with the name ${packagePolicy.name} already exists. Please rename it or choose a different name.` - ); + if (!options?.skipUniqueNameVerification) { + // Check that the name does not exist already but exclude the current package policy + const existingPoliciesWithName = await this.list(soClient, { + perPage: SO_SEARCH_LIMIT, + kuery: `${PACKAGE_POLICY_SAVED_OBJECT_TYPE}.name:"${packagePolicy.name}"`, + }); + const filtered = (existingPoliciesWithName?.items || []).filter((p) => p.id !== id); + if (filtered.length > 0) { + throw new FleetError( + `An integration policy with the name ${packagePolicy.name} already exists. Please rename it or choose a different name.` + ); + } } let inputs = restOfPackagePolicy.inputs.map((input) => @@ -929,12 +929,17 @@ class PackagePolicyClientImpl implements PackagePolicyClient { ); updatePackagePolicy.elasticsearch = packageInfo.elasticsearch; + const updateOptions = { + skipUniqueNameVerification: true, + ...options, + }; + await this.update( soClient, esClient, id, updatePackagePolicy, - options, + updateOptions, packagePolicy.package!.version ); diff --git a/x-pack/plugins/fleet/server/services/package_policy_service.ts b/x-pack/plugins/fleet/server/services/package_policy_service.ts index 4dd36a8c4fdf4..0a16a01c3dc4c 100644 --- a/x-pack/plugins/fleet/server/services/package_policy_service.ts +++ b/x-pack/plugins/fleet/server/services/package_policy_service.ts @@ -97,7 +97,7 @@ export interface PackagePolicyClient { esClient: ElasticsearchClient, id: string, packagePolicyUpdate: UpdatePackagePolicy, - options?: { user?: AuthenticatedUser; force?: boolean }, + options?: { user?: AuthenticatedUser; force?: boolean; skipUniqueNameVerification?: boolean }, currentVersion?: string ): Promise; diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/hosts_table.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/components/hosts_table.tsx index 9975de8db7375..57b3ab0e683ac 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/components/hosts_table.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/hosts_table.tsx @@ -64,7 +64,7 @@ const getLensHostsTable = ( dataType: 'string', operationType: 'terms', scale: 'ordinal', - sourceField: 'host.os.name', + sourceField: 'host.os.type', isBucketed: true, params: { size: 10000, diff --git a/x-pack/plugins/security_solution/cypress/e2e/detection_rules/bulk_edit_rules.cy.ts b/x-pack/plugins/security_solution/cypress/e2e/detection_rules/bulk_edit_rules.cy.ts index 3cdb5920101d1..745c542bf247c 100644 --- a/x-pack/plugins/security_solution/cypress/e2e/detection_rules/bulk_edit_rules.cy.ts +++ b/x-pack/plugins/security_solution/cypress/e2e/detection_rules/bulk_edit_rules.cy.ts @@ -71,6 +71,7 @@ import { setScheduleIntervalTimeUnit, assertRuleScheduleValues, assertUpdateScheduleWarningExists, + assertDefaultValuesAreAppliedToScheduleFields, } from '../../tasks/rules_bulk_edit'; import { hasIndexPatterns, getDetails } from '../../tasks/rule_details'; @@ -493,6 +494,18 @@ describe('Detection rules, bulk edit', () => { }); describe('Schedule', () => { + it('Default values are applied to bulk edit schedule fields', () => { + selectNumberOfRules(expectedNumberOfCustomRulesToBeEdited); + clickUpdateScheduleMenuItem(); + + assertUpdateScheduleWarningExists(expectedNumberOfCustomRulesToBeEdited); + + assertDefaultValuesAreAppliedToScheduleFields({ + interval: 5, + lookback: 1, + }); + }); + it('Updates schedule for custom rules', () => { selectNumberOfRules(expectedNumberOfCustomRulesToBeEdited); clickUpdateScheduleMenuItem(); diff --git a/x-pack/plugins/security_solution/cypress/screens/rules_bulk_edit.ts b/x-pack/plugins/security_solution/cypress/screens/rules_bulk_edit.ts index 341633380a3fa..34e4f9515b27f 100644 --- a/x-pack/plugins/security_solution/cypress/screens/rules_bulk_edit.ts +++ b/x-pack/plugins/security_solution/cypress/screens/rules_bulk_edit.ts @@ -56,4 +56,6 @@ export const UPDATE_SCHEDULE_INTERVAL_INPUT = export const UPDATE_SCHEDULE_LOOKBACK_INPUT = '[data-test-subj="bulkEditRulesScheduleLookbackSelector"]'; +export const UPDATE_SCHEDULE_TIME_INTERVAL = '[data-test-subj="interval"]'; + export const UPDATE_SCHEDULE_TIME_UNIT_SELECT = '[data-test-subj="timeType"]'; diff --git a/x-pack/plugins/security_solution/cypress/tasks/rules_bulk_edit.ts b/x-pack/plugins/security_solution/cypress/tasks/rules_bulk_edit.ts index c3f9336e19fc7..5b3ae403f4a0b 100644 --- a/x-pack/plugins/security_solution/cypress/tasks/rules_bulk_edit.ts +++ b/x-pack/plugins/security_solution/cypress/tasks/rules_bulk_edit.ts @@ -193,6 +193,19 @@ export const typeScheduleLookback = (lookback: string) => { .blur(); }; +interface ScheduleFormFields { + interval: number; + lookback: number; +} + +export const assertDefaultValuesAreAppliedToScheduleFields = ({ + interval, + lookback, +}: ScheduleFormFields) => { + cy.get(UPDATE_SCHEDULE_INTERVAL_INPUT).find('input').should('have.value', interval); + cy.get(UPDATE_SCHEDULE_LOOKBACK_INPUT).find('input').should('have.value', lookback); +}; + type TimeUnit = 'Seconds' | 'Minutes' | 'Hours'; export const setScheduleIntervalTimeUnit = (timeUnit: TimeUnit) => { cy.get(UPDATE_SCHEDULE_INTERVAL_INPUT).within(() => { @@ -209,17 +222,15 @@ export const setScheduleLookbackTimeUnit = (timeUnit: TimeUnit) => { export const assertUpdateScheduleWarningExists = (expectedNumberOfNotMLRules: number) => { cy.get(RULES_BULK_EDIT_SCHEDULES_WARNING).should( 'have.text', - `You're about to apply changes to ${expectedNumberOfNotMLRules} selected rules. The changes you made will be overwritten to the existing Rule schedules and additional look-back time (if any).` + `You're about to apply changes to ${expectedNumberOfNotMLRules} selected rules. The changes you make will overwrite the existing rule schedules and additional look-back time (if any).` ); }; - -export const assertRuleScheduleValues = ({ - interval, - lookback, -}: { +interface RuleSchedule { interval: string; lookback: string; -}) => { +} + +export const assertRuleScheduleValues = ({ interval, lookback }: RuleSchedule) => { cy.get(SCHEDULE_DETAILS).within(() => { cy.get('dd').eq(0).should('contain.text', interval); cy.get('dd').eq(1).should('contain.text', lookback); diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/step_schedule_rule/index.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/step_schedule_rule/index.tsx index c42e5e4b45976..04ad3a490c89a 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/step_schedule_rule/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/step_schedule_rule/index.tsx @@ -95,6 +95,7 @@ const StepScheduleRuleComponent: FC = ({ idAria: 'detectionEngineStepScheduleRuleInterval', isDisabled: isLoading, dataTestSubj: 'detectionEngineStepScheduleRuleInterval', + minimumValue: 1, }} /> ( ), diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_multi_step_extension.tsx b/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_multi_step_extension.tsx new file mode 100644 index 0000000000000..747d0990b8fc0 --- /dev/null +++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_policy_create_multi_step_extension.tsx @@ -0,0 +1,18 @@ +/* + * 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 React, { memo } from 'react'; +import type { PackagePolicyCreateMultiStepExtensionComponentProps } from '@kbn/fleet-plugin/public'; + +/** + * TBD: A component to be displayed in multi step onboarding process. + */ +export const EndpointPolicyCreateMultiStepExtension = + memo(({ newPolicy }) => { + return <>; + }); +EndpointPolicyCreateMultiStepExtension.displayName = 'EndpointPolicyCreateMultiStepExtension'; diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_policy_create_multi_step_extension.tsx b/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_policy_create_multi_step_extension.tsx new file mode 100644 index 0000000000000..b989c07fef45b --- /dev/null +++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/lazy_endpoint_policy_create_multi_step_extension.tsx @@ -0,0 +1,19 @@ +/* + * 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 { lazy } from 'react'; +import type { PackagePolicyCreateMultiStepExtensionComponent } from '@kbn/fleet-plugin/public'; + +export const LazyEndpointPolicyCreateMultiStepExtension = + lazy(async () => { + const { EndpointPolicyCreateMultiStepExtension } = await import( + './endpoint_policy_create_multi_step_extension' + ); + return { + default: EndpointPolicyCreateMultiStepExtension, + }; + }); diff --git a/x-pack/plugins/security_solution/public/plugin.tsx b/x-pack/plugins/security_solution/public/plugin.tsx index 7affdd066742f..6ab6fcd6e628c 100644 --- a/x-pack/plugins/security_solution/public/plugin.tsx +++ b/x-pack/plugins/security_solution/public/plugin.tsx @@ -60,6 +60,7 @@ import { ExperimentalFeaturesService } from './common/experimental_features_serv import { getLazyEndpointPolicyEditExtension } from './management/pages/policy/view/ingest_manager_integration/lazy_endpoint_policy_edit_extension'; import { LazyEndpointPolicyCreateExtension } from './management/pages/policy/view/ingest_manager_integration/lazy_endpoint_policy_create_extension'; +import { LazyEndpointPolicyCreateMultiStepExtension } from './management/pages/policy/view/ingest_manager_integration/lazy_endpoint_policy_create_multi_step_extension'; import { getLazyEndpointPackageCustomExtension } from './management/pages/policy/view/ingest_manager_integration/lazy_endpoint_package_custom_extension'; import { getLazyEndpointPolicyResponseExtension } from './management/pages/policy/view/ingest_manager_integration/lazy_endpoint_policy_response_extension'; import { getLazyEndpointGenericErrorsListExtension } from './management/pages/policy/view/ingest_manager_integration/lazy_endpoint_generic_errors_list'; @@ -246,6 +247,12 @@ export class Plugin implements IPlugin { }); describe('schedule', () => { - test('should set timeline', () => { + test('should set schedule', () => { const INTERVAL_IN_MINUTES = 5; const LOOKBACK_IN_MINUTES = 1; const FROM_IN_SECONDS = (INTERVAL_IN_MINUTES + LOOKBACK_IN_MINUTES) * 60; @@ -367,8 +367,8 @@ describe('ruleParamsModifier', () => { }, ]); - // @ts-expect-error - expect(editedRuleParams.interval).toBeUndefined(); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + expect((editedRuleParams as any).interval).toBeUndefined(); expect(editedRuleParams.meta).toStrictEqual({ from: '1m', }); diff --git a/x-pack/plugins/stack_connectors/jest.config.js b/x-pack/plugins/stack_connectors/jest.config.js index 9a343089b9475..6bfda7da5ca5e 100644 --- a/x-pack/plugins/stack_connectors/jest.config.js +++ b/x-pack/plugins/stack_connectors/jest.config.js @@ -12,6 +12,6 @@ module.exports = { coverageDirectory: '/target/kibana-coverage/jest/x-pack/plugins/stack_connectors', coverageReporters: ['text', 'html'], collectCoverageFrom: [ - '/x-pack/plugins/stack_connectors/{common,server}/**/*.{js,ts,tsx}', + '/x-pack/plugins/stack_connectors/{common,public,server}/**/*.{js,ts,tsx}', ], }; diff --git a/x-pack/plugins/stack_connectors/kibana.json b/x-pack/plugins/stack_connectors/kibana.json index a2fc97ad9547e..fc55b723e5c55 100644 --- a/x-pack/plugins/stack_connectors/kibana.json +++ b/x-pack/plugins/stack_connectors/kibana.json @@ -8,6 +8,6 @@ "version": "8.0.0", "kibanaVersion": "kibana", "configPath": ["xpack", "stack_connectors"], - "requiredPlugins": ["actions"], - "ui": false + "requiredPlugins": ["actions", "esUiShared", "triggersActionsUi"], + "ui": true } diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/action_variables.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/action_variables.ts similarity index 100% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/action_variables.ts rename to x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/action_variables.ts diff --git a/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/index.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/index.ts new file mode 100644 index 0000000000000..88107a4f6d517 --- /dev/null +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/index.ts @@ -0,0 +1,8 @@ +/* + * 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. + */ + +export { getConnectorType as getCasesWebhookConnectorType } from './webhook'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/steps/auth.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/steps/auth.tsx similarity index 98% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/steps/auth.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/steps/auth.tsx index b356fb716d06f..85e0f5e9e31b5 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/steps/auth.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/steps/auth.tsx @@ -23,7 +23,7 @@ import { } from '@kbn/es-ui-shared-plugin/static/forms/hook_form_lib'; import { Field, TextField } from '@kbn/es-ui-shared-plugin/static/forms/components'; import { fieldValidators } from '@kbn/es-ui-shared-plugin/static/forms/helpers'; -import { PasswordField } from '../../../password_field'; +import { PasswordField } from '@kbn/triggers-actions-ui-plugin/public'; import * as i18n from '../translations'; const { emptyField } = fieldValidators; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/steps/create.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/steps/create.tsx similarity index 98% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/steps/create.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/steps/create.tsx index c754a89ed89fe..ffa72576feb69 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/steps/create.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/steps/create.tsx @@ -10,8 +10,8 @@ import { EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiText } from '@elastic/eui'; import { FIELD_TYPES, UseField } from '@kbn/es-ui-shared-plugin/static/forms/hook_form_lib'; import { Field } from '@kbn/es-ui-shared-plugin/static/forms/components'; import { fieldValidators } from '@kbn/es-ui-shared-plugin/static/forms/helpers'; +import { JsonFieldWrapper } from '@kbn/triggers-actions-ui-plugin/public'; import { containsTitleAndDesc } from '../validator'; -import { JsonFieldWrapper } from '../../../json_field_wrapper'; import { casesVars } from '../action_variables'; import { HTTP_VERBS } from '../webhook_connectors'; import * as i18n from '../translations'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/steps/get.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/steps/get.tsx similarity index 97% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/steps/get.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/steps/get.tsx index 3f0cf52dcfcb2..e8f233408a4c9 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/steps/get.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/steps/get.tsx @@ -10,7 +10,7 @@ import { EuiFlexGroup, EuiFlexItem, EuiText } from '@elastic/eui'; import { UseField } from '@kbn/es-ui-shared-plugin/static/forms/hook_form_lib'; import { Field } from '@kbn/es-ui-shared-plugin/static/forms/components'; import { fieldValidators } from '@kbn/es-ui-shared-plugin/static/forms/helpers'; -import { MustacheTextFieldWrapper } from '../../../mustache_text_field_wrapper'; +import { MustacheTextFieldWrapper } from '@kbn/triggers-actions-ui-plugin/public'; import { containsExternalId, containsExternalIdOrTitle } from '../validator'; import { urlVars, urlVarsExt } from '../action_variables'; import * as i18n from '../translations'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/steps/index.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/steps/index.ts similarity index 100% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/steps/index.ts rename to x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/steps/index.ts diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/steps/update.styles.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/steps/update.styles.ts similarity index 100% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/steps/update.styles.ts rename to x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/steps/update.styles.ts diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/steps/update.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/steps/update.tsx similarity index 97% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/steps/update.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/steps/update.tsx index e8305e7439778..a140ecbc6a221 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/steps/update.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/steps/update.tsx @@ -10,10 +10,9 @@ import { fieldValidators } from '@kbn/es-ui-shared-plugin/static/forms/helpers'; import { EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiText } from '@elastic/eui'; import { FIELD_TYPES, UseField } from '@kbn/es-ui-shared-plugin/static/forms/hook_form_lib'; import { Field } from '@kbn/es-ui-shared-plugin/static/forms/components'; +import { JsonFieldWrapper, MustacheTextFieldWrapper } from '@kbn/triggers-actions-ui-plugin/public'; import { containsCommentsOrEmpty, containsTitleAndDesc, isUrlButCanBeEmpty } from '../validator'; -import { MustacheTextFieldWrapper } from '../../../mustache_text_field_wrapper'; import { casesVars, commentVars, urlVars } from '../action_variables'; -import { JsonFieldWrapper } from '../../../json_field_wrapper'; import { HTTP_VERBS } from '../webhook_connectors'; import { styles } from './update.styles'; import * as i18n from '../translations'; diff --git a/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/translations.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/translations.ts new file mode 100644 index 0000000000000..1ef221566352d --- /dev/null +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/translations.ts @@ -0,0 +1,477 @@ +/* + * 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 { i18n } from '@kbn/i18n'; + +export const CREATE_URL_REQUIRED = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.error.requiredCreateUrlText', + { + defaultMessage: 'Create case URL is required.', + } +); +export const CREATE_INCIDENT_REQUIRED = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.error.requiredCreateIncidentText', + { + defaultMessage: 'Create case object is required and must be valid JSON.', + } +); + +export const CREATE_METHOD_REQUIRED = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.error.requiredCreateMethodText', + { + defaultMessage: 'Create case method is required.', + } +); + +export const CREATE_RESPONSE_KEY_REQUIRED = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.error.requiredCreateIncidentResponseKeyText', + { + defaultMessage: 'Create case response case id key is required.', + } +); + +export const UPDATE_URL_REQUIRED = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.error.requiredUpdateUrlText', + { + defaultMessage: 'Update case URL is required.', + } +); +export const UPDATE_INCIDENT_REQUIRED = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.error.requiredUpdateIncidentText', + { + defaultMessage: 'Update case object is required and must be valid JSON.', + } +); + +export const UPDATE_METHOD_REQUIRED = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.error.requiredUpdateMethodText', + { + defaultMessage: 'Update case method is required.', + } +); + +export const CREATE_COMMENT_URL_REQUIRED = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.error.requiredCreateCommentUrlText', + { + defaultMessage: 'Create comment URL must be URL format.', + } +); +export const CREATE_COMMENT_MESSAGE = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.error.requiredCreateCommentIncidentText', + { + defaultMessage: 'Create comment object must be valid JSON.', + } +); + +export const CREATE_COMMENT_METHOD_REQUIRED = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.error.requiredCreateCommentMethodText', + { + defaultMessage: 'Create comment method is required.', + } +); + +export const GET_INCIDENT_URL_REQUIRED = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.error.requiredGetIncidentUrlText', + { + defaultMessage: 'Get case URL is required.', + } +); +export const GET_RESPONSE_EXTERNAL_TITLE_KEY_REQUIRED = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.error.requiredGetIncidentResponseExternalTitleKeyText', + { + defaultMessage: 'Get case response external case title key is re quired.', + } +); +export const GET_RESPONSE_EXTERNAL_CREATED_KEY_REQUIRED = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.error.requiredGetIncidentResponseCreatedKeyText', + { + defaultMessage: 'Get case response created date key is required.', + } +); +export const GET_RESPONSE_EXTERNAL_UPDATED_KEY_REQUIRED = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.error.requiredGetIncidentResponseUpdatedKeyText', + { + defaultMessage: 'Get case response updated date key is required.', + } +); +export const GET_INCIDENT_VIEW_URL_REQUIRED = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.error.requiredGetIncidentViewUrlKeyText', + { + defaultMessage: 'View case URL is required.', + } +); + +export const MISSING_VARIABLES = (variables: string[]) => + i18n.translate('xpack.stackConnectors.components.casesWebhook.error.missingVariables', { + defaultMessage: + 'Missing required {variableCount, plural, one {variable} other {variables}}: {variables}', + values: { variableCount: variables.length, variables: variables.join(', ') }, + }); + +export const USERNAME_REQUIRED = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.error.requiredAuthUserNameText', + { + defaultMessage: 'Username is required.', + } +); + +export const SUMMARY_REQUIRED = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.error.requiredWebhookSummaryText', + { + defaultMessage: 'Title is required.', + } +); + +export const KEY_LABEL = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.keyTextFieldLabel', + { + defaultMessage: 'Key', + } +); + +export const VALUE_LABEL = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.valueTextFieldLabel', + { + defaultMessage: 'Value', + } +); + +export const ADD_BUTTON = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.addHeaderButton', + { + defaultMessage: 'Add', + } +); + +export const DELETE_BUTTON = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.deleteHeaderButton', + { + defaultMessage: 'Delete', + description: 'Delete HTTP header', + } +); + +export const CREATE_INCIDENT_METHOD = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.createIncidentMethodTextFieldLabel', + { + defaultMessage: 'Create Case Method', + } +); + +export const CREATE_INCIDENT_URL = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.createIncidentUrlTextFieldLabel', + { + defaultMessage: 'Create Case URL', + } +); + +export const CREATE_INCIDENT_JSON = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.createIncidentJsonTextFieldLabel', + { + defaultMessage: 'Create Case Object', + } +); + +export const CREATE_INCIDENT_JSON_HELP = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.createIncidentJsonHelpText', + { + defaultMessage: + 'JSON object to create case. Use the variable selector to add Cases data to the payload.', + } +); + +export const JSON = i18n.translate('xpack.stackConnectors.components.casesWebhook.jsonFieldLabel', { + defaultMessage: 'JSON', +}); +export const CODE_EDITOR = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.jsonCodeEditorAriaLabel', + { + defaultMessage: 'Code editor', + } +); + +export const CREATE_INCIDENT_RESPONSE_KEY = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.createIncidentResponseKeyTextFieldLabel', + { + defaultMessage: 'Create Case Response Case Key', + } +); + +export const CREATE_INCIDENT_RESPONSE_KEY_HELP = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.createIncidentResponseKeyHelpText', + { + defaultMessage: 'JSON key in create case response that contains the external case id', + } +); + +export const ADD_CASES_VARIABLE = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.addVariable', + { + defaultMessage: 'Add variable', + } +); + +export const GET_INCIDENT_URL = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.getIncidentUrlTextFieldLabel', + { + defaultMessage: 'Get Case URL', + } +); +export const GET_INCIDENT_URL_HELP = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.getIncidentUrlHelp', + { + defaultMessage: + 'API URL to GET case details JSON from external system. Use the variable selector to add external system id to the url.', + } +); + +export const GET_INCIDENT_TITLE_KEY = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.getIncidentResponseExternalTitleKeyTextFieldLabel', + { + defaultMessage: 'Get Case Response External Title Key', + } +); +export const GET_INCIDENT_TITLE_KEY_HELP = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.getIncidentResponseExternalTitleKeyHelp', + { + defaultMessage: 'JSON key in get case response that contains the external case title', + } +); + +export const EXTERNAL_INCIDENT_VIEW_URL = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.viewIncidentUrlTextFieldLabel', + { + defaultMessage: 'External Case View URL', + } +); +export const EXTERNAL_INCIDENT_VIEW_URL_HELP = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.viewIncidentUrlHelp', + { + defaultMessage: + 'URL to view case in external system. Use the variable selector to add external system id or external system title to the url.', + } +); + +export const UPDATE_INCIDENT_METHOD = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.updateIncidentMethodTextFieldLabel', + { + defaultMessage: 'Update Case Method', + } +); + +export const UPDATE_INCIDENT_URL = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.updateIncidentUrlTextFieldLabel', + { + defaultMessage: 'Update Case URL', + } +); +export const UPDATE_INCIDENT_URL_HELP = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.updateIncidentUrlHelp', + { + defaultMessage: 'API URL to update case.', + } +); + +export const UPDATE_INCIDENT_JSON = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.updateIncidentJsonTextFieldLabel', + { + defaultMessage: 'Update Case Object', + } +); +export const UPDATE_INCIDENT_JSON_HELP = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.updateIncidentJsonHelpl', + { + defaultMessage: + 'JSON object to update case. Use the variable selector to add Cases data to the payload.', + } +); + +export const CREATE_COMMENT_METHOD = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.createCommentMethodTextFieldLabel', + { + defaultMessage: 'Create Comment Method', + } +); +export const CREATE_COMMENT_URL = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.createCommentUrlTextFieldLabel', + { + defaultMessage: 'Create Comment URL', + } +); + +export const CREATE_COMMENT_URL_HELP = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.createCommentUrlHelp', + { + defaultMessage: 'API URL to add comment to case.', + } +); + +export const CREATE_COMMENT_JSON = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.createCommentJsonTextFieldLabel', + { + defaultMessage: 'Create Comment Object', + } +); +export const CREATE_COMMENT_JSON_HELP = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.createCommentJsonHelp', + { + defaultMessage: + 'JSON object to create a comment. Use the variable selector to add Cases data to the payload.', + } +); + +export const HAS_AUTH = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.hasAuthSwitchLabel', + { + defaultMessage: 'Require authentication for this webhook', + } +); + +export const USERNAME = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.userTextFieldLabel', + { + defaultMessage: 'Username', + } +); + +export const PASSWORD = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.passwordTextFieldLabel', + { + defaultMessage: 'Password', + } +); + +export const HEADERS_SWITCH = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.viewHeadersSwitch', + { + defaultMessage: 'Add HTTP header', + } +); + +export const HEADERS_TITLE = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.httpHeadersTitle', + { + defaultMessage: 'Headers in use', + } +); + +export const AUTH_TITLE = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.authenticationLabel', + { + defaultMessage: 'Authentication', + } +); + +export const STEP_1 = i18n.translate('xpack.stackConnectors.components.casesWebhook.step1', { + defaultMessage: 'Set up connector', +}); + +export const STEP_2 = i18n.translate('xpack.stackConnectors.components.casesWebhook.step2', { + defaultMessage: 'Create case', +}); + +export const STEP_2_DESCRIPTION = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.step2Description', + { + defaultMessage: + 'Set fields to create the case in the external system. Check your service’s API documentation to understand what fields are required', + } +); + +export const STEP_3 = i18n.translate('xpack.stackConnectors.components.casesWebhook.step3', { + defaultMessage: 'Get case information', +}); + +export const STEP_3_DESCRIPTION = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.step3Description', + { + defaultMessage: + 'Set fields to add comments to the case in external system. For some systems, this may be the same method as creating updates in cases. Check your service’s API documentation to understand what fields are required.', + } +); + +export const STEP_4 = i18n.translate('xpack.stackConnectors.components.casesWebhook.step4', { + defaultMessage: 'Comments and updates', +}); + +export const STEP_4A = i18n.translate('xpack.stackConnectors.components.casesWebhook.step4a', { + defaultMessage: 'Create update in case', +}); + +export const STEP_4A_DESCRIPTION = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.step4aDescription', + { + defaultMessage: + 'Set fields to create updates to the case in external system. For some systems, this may be the same method as adding comments to cases.', + } +); + +export const STEP_4B = i18n.translate('xpack.stackConnectors.components.casesWebhook.step4b', { + defaultMessage: 'Add comment in case', +}); + +export const STEP_4B_DESCRIPTION = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.step4bDescription', + { + defaultMessage: + 'Set fields to add comments to the case in external system. For some systems, this may be the same method as creating updates in cases.', + } +); + +export const NEXT = i18n.translate('xpack.stackConnectors.components.casesWebhook.next', { + defaultMessage: 'Next', +}); + +export const PREVIOUS = i18n.translate('xpack.stackConnectors.components.casesWebhook.previous', { + defaultMessage: 'Previous', +}); + +export const CASE_TITLE_DESC = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.caseTitleDesc', + { + defaultMessage: 'Kibana case title', + } +); + +export const CASE_DESCRIPTION_DESC = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.caseDescriptionDesc', + { + defaultMessage: 'Kibana case description', + } +); + +export const CASE_TAGS_DESC = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.caseTagsDesc', + { + defaultMessage: 'Kibana case tags', + } +); + +export const CASE_COMMENT_DESC = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.caseCommentDesc', + { + defaultMessage: 'Kibana case comment', + } +); + +export const EXTERNAL_ID_DESC = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.externalIdDesc', + { + defaultMessage: 'External system id', + } +); + +export const EXTERNAL_TITLE_DESC = i18n.translate( + 'xpack.stackConnectors.components.casesWebhook.externalTitleDesc', + { + defaultMessage: 'External system title', + } +); + +export const DOC_LINK = i18n.translate('xpack.stackConnectors.components.casesWebhook.docLink', { + defaultMessage: 'Configuring Webhook - Case Management connector.', +}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/types.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/types.ts similarity index 82% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/types.ts rename to x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/types.ts index 36e072cc8db44..68f560dd59415 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/types.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/types.ts @@ -5,12 +5,12 @@ * 2.0. */ +import { UserConfiguredActionConnector } from '@kbn/triggers-actions-ui-plugin/public/types'; import type { CasesWebhookPublicConfigurationType, CasesWebhookSecretConfigurationType, ExecutorSubActionPushParams, -} from '@kbn/stack-connectors-plugin/server/connector_types/cases/cases_webhook/types'; -import { UserConfiguredActionConnector } from '../../../../types'; +} from '../../../../server/connector_types/cases/cases_webhook/types'; export interface CasesWebhookActionParams { subAction: string; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/validator.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/validator.ts similarity index 98% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/validator.ts rename to x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/validator.ts index 7f34f76807e55..d3d7f6dc8e612 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/validator.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/validator.ts @@ -11,9 +11,9 @@ import { ValidationFunc, } from '@kbn/es-ui-shared-plugin/static/forms/hook_form_lib'; import { containsChars, isUrl } from '@kbn/es-ui-shared-plugin/static/validators/string'; +import { templateActionVariable } from '@kbn/triggers-actions-ui-plugin/public'; import * as i18n from './translations'; import { casesVars, commentVars, urlVars, urlVarsExt } from './action_variables'; -import { templateActionVariable } from '../../../lib'; const errorCode: ERROR_CODE = 'ERR_FIELD_MISSING'; diff --git a/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/webhook.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/webhook.test.tsx new file mode 100644 index 0000000000000..14e767915515a --- /dev/null +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/webhook.test.tsx @@ -0,0 +1,54 @@ +/* + * 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 { TypeRegistry } from '@kbn/triggers-actions-ui-plugin/public/application/type_registry'; +import { registerConnectorTypes } from '../..'; +import type { ActionTypeModel as ConnectorTypeModel } from '@kbn/triggers-actions-ui-plugin/public/types'; +import { registrationServicesMock } from '../../../mocks'; + +const CONNECTOR_TYPE_ID = '.cases-webhook'; +let connectorTypeModel: ConnectorTypeModel; + +beforeAll(() => { + const connectorTypeRegistry = new TypeRegistry(); + registerConnectorTypes({ connectorTypeRegistry, services: registrationServicesMock }); + const getResult = connectorTypeRegistry.get(CONNECTOR_TYPE_ID); + if (getResult !== null) { + connectorTypeModel = getResult; + } +}); + +describe('connectorTypeRegistry.get() works', () => { + test('connector type static data is as expected', () => { + expect(connectorTypeModel.id).toEqual(CONNECTOR_TYPE_ID); + expect(connectorTypeModel.iconClass).toEqual('logoWebhook'); + }); +}); + +describe('webhook action params validation', () => { + test('action params validation succeeds when action params is valid', async () => { + const actionParams = { + subActionParams: { incident: { title: 'some title {{test}}' }, comments: [] }, + }; + + expect(await connectorTypeModel.validateParams(actionParams)).toEqual({ + errors: { 'subActionParams.incident.title': [] }, + }); + }); + + test('params validation fails when body is not valid', async () => { + const actionParams = { + subActionParams: { incident: { title: '' }, comments: [] }, + }; + + expect(await connectorTypeModel.validateParams(actionParams)).toEqual({ + errors: { + 'subActionParams.incident.title': ['Title is required.'], + }, + }); + }); +}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/webhook.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/webhook.tsx similarity index 80% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/webhook.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/webhook.tsx index 5ac8d915e26d9..6e86df15c09c7 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/webhook.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/webhook.tsx @@ -7,10 +7,13 @@ import { lazy } from 'react'; import { i18n } from '@kbn/i18n'; -import { ActionTypeModel, GenericValidationResult } from '../../../../types'; +import type { + ActionTypeModel as ConnectorTypeModel, + GenericValidationResult, +} from '@kbn/triggers-actions-ui-plugin/public'; import { CasesWebhookActionParams, CasesWebhookConfig, CasesWebhookSecrets } from './types'; -export function getActionType(): ActionTypeModel< +export function getConnectorType(): ConnectorTypeModel< CasesWebhookConfig, CasesWebhookSecrets, CasesWebhookActionParams @@ -19,14 +22,14 @@ export function getActionType(): ActionTypeModel< id: '.cases-webhook', iconClass: 'logoWebhook', selectMessage: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.selectMessageText', + 'xpack.stackConnectors.components.casesWebhook.selectMessageText', { defaultMessage: 'Send a request to a Case Management web service.', } ), isExperimental: true, actionTypeTitle: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.actionTypeTitle', + 'xpack.stackConnectors.components.casesWebhookxpack.stackConnectors.components.casesWebhook.connectorTypeTitle', { defaultMessage: 'Webhook - Case Management data', } diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/webhook_connectors.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/webhook_connectors.test.tsx similarity index 98% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/webhook_connectors.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/webhook_connectors.test.tsx index ba0cf756530e7..fbe24f5e5d863 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/webhook_connectors.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/webhook_connectors.test.tsx @@ -7,15 +7,15 @@ import React from 'react'; import CasesWebhookActionConnectorFields from './webhook_connectors'; -import { ConnectorFormTestProvider, waitForComponentToUpdate } from '../test_utils'; +import { ConnectorFormTestProvider, waitForComponentToUpdate } from '../../lib/test_utils'; import { act, render } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; -import { MockCodeEditor } from '../../../code_editor.mock'; +import { MockCodeEditor } from '@kbn/triggers-actions-ui-plugin/public/application/code_editor.mock'; import * as i18n from './translations'; -const kibanaReactPath = '../../../../../../../../src/plugins/kibana_react/public'; +const kibanaReactPath = '../../../../../../../src/plugins/kibana_react/public'; -jest.mock('../../../../common/lib/kibana', () => { - const originalModule = jest.requireActual('../../../../common/lib/kibana'); +jest.mock('@kbn/triggers-actions-ui-plugin/public', () => { + const originalModule = jest.requireActual('@kbn/triggers-actions-ui-plugin/public'); return { ...originalModule, useKibana: () => ({ diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/webhook_connectors.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/webhook_connectors.tsx similarity index 97% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/webhook_connectors.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/webhook_connectors.tsx index 29983935cf7f1..73e424901469a 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/webhook_connectors.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/webhook_connectors.tsx @@ -17,8 +17,8 @@ import { EuiStepsHorizontal, EuiStepStatus, } from '@elastic/eui'; -import { useKibana } from '../../../../common/lib/kibana'; -import { ActionConnectorFieldsProps } from '../../../../types'; +import type { ActionConnectorFieldsProps } from '@kbn/triggers-actions-ui-plugin/public'; +import { useKibana } from '@kbn/triggers-actions-ui-plugin/public'; import * as i18n from './translations'; import { AuthStep, CreateStep, GetStep, UpdateStep } from './steps'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/webhook_params.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/webhook_params.test.tsx similarity index 93% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/webhook_params.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/webhook_params.test.tsx index 91adb9616c4ab..f931fd1eeddad 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/webhook_params.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/webhook_params.test.tsx @@ -8,10 +8,10 @@ import React from 'react'; import { mountWithIntl } from '@kbn/test-jest-helpers'; import WebhookParamsFields from './webhook_params'; -import { MockCodeEditor } from '../../../code_editor.mock'; +import { MockCodeEditor } from '@kbn/triggers-actions-ui-plugin/public/application/code_editor.mock'; import { CasesWebhookActionConnector } from './types'; -const kibanaReactPath = '../../../../../../../../src/plugins/kibana_react/public'; +const kibanaReactPath = '../../../../../../../src/plugins/kibana_react/public'; jest.mock(kibanaReactPath, () => { const original = jest.requireActual(kibanaReactPath); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/webhook_params.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/webhook_params.tsx similarity index 84% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/webhook_params.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/webhook_params.tsx index 2d1f8b03bd08f..dab3f8cc95832 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/webhook_params.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/cases_webhook/webhook_params.tsx @@ -8,20 +8,22 @@ import React, { useCallback, useEffect, useMemo } from 'react'; import { i18n } from '@kbn/i18n'; import { EuiCallOut, EuiComboBox, EuiFormRow, EuiSpacer } from '@elastic/eui'; -import { ActionParamsProps } from '../../../../types'; +import type { ActionParamsProps } from '@kbn/triggers-actions-ui-plugin/public'; +import { + TextAreaWithMessageVariables, + TextFieldWithMessageVariables, +} from '@kbn/triggers-actions-ui-plugin/public'; import { CasesWebhookActionConnector, CasesWebhookActionParams } from './types'; -import { TextAreaWithMessageVariables } from '../../text_area_with_message_variables'; -import { TextFieldWithMessageVariables } from '../../text_field_with_message_variables'; const CREATE_COMMENT_WARNING_TITLE = i18n.translate( - 'xpack.triggersActionsUI.components.textAreaWithMessageVariable.createCommentWarningTitle', + 'xpack.stackConnectors.components.casesWebhook.createCommentWarningTitle', { defaultMessage: 'Unable to share case comments', } ); const CREATE_COMMENT_WARNING_DESC = i18n.translate( - 'xpack.triggersActionsUI.components.textAreaWithMessageVariable.createCommentWarningDesc', + 'xpack.stackConnectors.components.casesWebhook.createCommentWarningDesc', { defaultMessage: 'Configure the Create Comment URL and Create Comment Objects fields for the connector to share comments externally.', @@ -108,12 +110,9 @@ const WebhookParamsFields: React.FunctionComponent 0 && incident.title !== undefined } - label={i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhook.titleFieldLabel', - { - defaultMessage: 'Summary (required)', - } - )} + label={i18n.translate('xpack.stackConnectors.components.casesWebhook.titleFieldLabel', { + defaultMessage: 'Summary (required)', + })} > 0 ? comments[0].comment : undefined} label={i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhook.commentsTextAreaFieldLabel', + 'xpack.stackConnectors.components.casesWebhook.commentsTextAreaFieldLabel', { defaultMessage: 'Additional comments', } diff --git a/x-pack/plugins/stack_connectors/public/connector_types/cases/index.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/index.ts new file mode 100644 index 0000000000000..22f32cf636036 --- /dev/null +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/index.ts @@ -0,0 +1,17 @@ +/* + * 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. + */ + +export { getCasesWebhookConnectorType } from './cases_webhook'; +export { getJiraConnectorType } from './jira'; +export { getResilientConnectorType } from './resilient'; +export { + getServiceNowITSMConnectorType, + getServiceNowSIRConnectorType, + getServiceNowITOMConnectorType, +} from './servicenow'; +export { getSwimlaneConnectorType } from './swimlane'; +export { getXmattersConnectorType } from './xmatters'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/api.test.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/jira/api.test.ts similarity index 100% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/api.test.ts rename to x-pack/plugins/stack_connectors/public/connector_types/cases/jira/api.test.ts diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/api.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/jira/api.ts similarity index 91% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/api.ts rename to x-pack/plugins/stack_connectors/public/connector_types/cases/jira/api.ts index f213bbc7bda40..e6db358b7988d 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/api.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/jira/api.ts @@ -6,9 +6,11 @@ */ import { HttpSetup } from '@kbn/core/public'; -import { ActionTypeExecutorResult } from '@kbn/actions-plugin/common'; -import { BASE_ACTION_API_PATH } from '../../../constants'; -import { ConnectorExecutorResult, rewriteResponseToCamelCase } from '../rewrite_response_body'; +import { ActionTypeExecutorResult, BASE_ACTION_API_PATH } from '@kbn/actions-plugin/common'; +import { + ConnectorExecutorResult, + rewriteResponseToCamelCase, +} from '../../lib/rewrite_response_body'; import { Fields, Issue, IssueTypes } from './types'; export async function getIssueTypes({ diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/index.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/jira/index.ts similarity index 80% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/index.ts rename to x-pack/plugins/stack_connectors/public/connector_types/cases/jira/index.ts index a597a5ea6df4d..184109b17cc92 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/index.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/jira/index.ts @@ -5,4 +5,4 @@ * 2.0. */ -export { getActionType as getWebhookActionType } from './webhook'; +export { getConnectorType as getJiraConnectorType } from './jira'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/jira.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/jira/jira.test.tsx similarity index 57% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/jira.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/jira/jira.test.tsx index 07aa45cfe1925..2f8299ea010da 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/jira.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/jira/jira.test.tsx @@ -5,26 +5,26 @@ * 2.0. */ -import { TypeRegistry } from '../../../type_registry'; -import { registerBuiltInActionTypes } from '..'; -import { ActionTypeModel } from '../../../../types'; -import { registrationServicesMock } from '../../../../mocks'; +import { TypeRegistry } from '@kbn/triggers-actions-ui-plugin/public/application/type_registry'; +import { registerConnectorTypes } from '../..'; +import type { ActionTypeModel as ConnectorTypeModel } from '@kbn/triggers-actions-ui-plugin/public/types'; +import { registrationServicesMock } from '../../../mocks'; -const ACTION_TYPE_ID = '.jira'; -let actionTypeModel: ActionTypeModel; +const CONNECTOR_TYPE_ID = '.jira'; +let connectorTypeModel: ConnectorTypeModel; beforeAll(() => { - const actionTypeRegistry = new TypeRegistry(); - registerBuiltInActionTypes({ actionTypeRegistry, services: registrationServicesMock }); - const getResult = actionTypeRegistry.get(ACTION_TYPE_ID); + const connectorTypeRegistry = new TypeRegistry(); + registerConnectorTypes({ connectorTypeRegistry, services: registrationServicesMock }); + const getResult = connectorTypeRegistry.get(CONNECTOR_TYPE_ID); if (getResult !== null) { - actionTypeModel = getResult; + connectorTypeModel = getResult; } }); -describe('actionTypeRegistry.get() works', () => { - test('action type static data is as expected', () => { - expect(actionTypeModel.id).toEqual(ACTION_TYPE_ID); +describe('connectorTypeRegistry.get() works', () => { + test('connector type static data is as expected', () => { + expect(connectorTypeModel.id).toEqual(CONNECTOR_TYPE_ID); }); }); @@ -34,7 +34,7 @@ describe('jira action params validation', () => { subActionParams: { incident: { summary: 'some title {{test}}' }, comments: [] }, }; - expect(await actionTypeModel.validateParams(actionParams)).toEqual({ + expect(await connectorTypeModel.validateParams(actionParams)).toEqual({ errors: { 'subActionParams.incident.summary': [], 'subActionParams.incident.labels': [] }, }); }); @@ -44,7 +44,7 @@ describe('jira action params validation', () => { subActionParams: { incident: { summary: '' }, comments: [] }, }; - expect(await actionTypeModel.validateParams(actionParams)).toEqual({ + expect(await connectorTypeModel.validateParams(actionParams)).toEqual({ errors: { 'subActionParams.incident.summary': ['Summary is required.'], 'subActionParams.incident.labels': [], @@ -60,7 +60,7 @@ describe('jira action params validation', () => { }, }; - expect(await actionTypeModel.validateParams(actionParams)).toEqual({ + expect(await connectorTypeModel.validateParams(actionParams)).toEqual({ errors: { 'subActionParams.incident.summary': [], 'subActionParams.incident.labels': ['Labels cannot contain spaces.'], diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/jira.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/jira/jira.tsx similarity index 80% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/jira.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/jira/jira.tsx index 627429a39b5b3..92a98a3270cc3 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/jira.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/jira/jira.tsx @@ -7,24 +7,24 @@ import { lazy } from 'react'; import { i18n } from '@kbn/i18n'; -import { GenericValidationResult, ActionTypeModel } from '../../../../types'; +import type { + GenericValidationResult, + ActionTypeModel as ConnectorTypeModel, +} from '@kbn/triggers-actions-ui-plugin/public'; import { JiraConfig, JiraSecrets, JiraActionParams } from './types'; -export const JIRA_DESC = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.jira.selectMessageText', - { - defaultMessage: 'Create an incident in Jira.', - } -); +export const JIRA_DESC = i18n.translate('xpack.stackConnectors.components.jira.selectMessageText', { + defaultMessage: 'Create an incident in Jira.', +}); export const JIRA_TITLE = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.jira.actionTypeTitle', + 'xpack.stackConnectors.components.jira.connectorTypeTitle', { defaultMessage: 'Jira', } ); -export function getActionType(): ActionTypeModel { +export function getConnectorType(): ConnectorTypeModel { return { id: '.jira', iconClass: lazy(() => import('./logo')), diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/jira_connectors.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/jira/jira_connectors.test.tsx similarity index 96% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/jira_connectors.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/jira/jira_connectors.test.tsx index 3afb0d16f8cbd..17166ae5c05c3 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/jira_connectors.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/jira/jira_connectors.test.tsx @@ -8,11 +8,11 @@ import React from 'react'; import { mountWithIntl } from '@kbn/test-jest-helpers'; import JiraConnectorFields from './jira_connectors'; -import { ConnectorFormTestProvider } from '../test_utils'; +import { ConnectorFormTestProvider } from '../../lib/test_utils'; import { act, render } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; -jest.mock('../../../../common/lib/kibana'); +jest.mock('@kbn/triggers-actions-ui-plugin/public/common/lib/kibana'); describe('JiraActionConnectorFields renders', () => { test('Jira connector fields are rendered', () => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/jira_connectors.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/jira/jira_connectors.tsx similarity index 86% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/jira_connectors.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/jira/jira_connectors.tsx index 5d056281cd38a..781b605696590 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/jira_connectors.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/jira/jira_connectors.tsx @@ -6,15 +6,13 @@ */ import React from 'react'; - -import { ActionConnectorFieldsProps } from '../../../../types'; - -import * as i18n from './translations'; -import { +import type { + ActionConnectorFieldsProps, ConfigFieldSchema, - SimpleConnectorForm, SecretsFieldSchema, -} from '../../simple_connector_form'; +} from '@kbn/triggers-actions-ui-plugin/public'; +import { SimpleConnectorForm } from '@kbn/triggers-actions-ui-plugin/public'; +import * as i18n from './translations'; const configFormSchema: ConfigFieldSchema[] = [ { id: 'apiUrl', label: i18n.API_URL_LABEL, isUrlField: true }, diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/jira_params.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/jira/jira_params.test.tsx similarity index 99% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/jira_params.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/jira/jira_params.test.tsx index 8a478c84b509e..3865da8ead3a7 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/jira_params.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/jira/jira_params.test.tsx @@ -11,11 +11,11 @@ import { useGetIssueTypes } from './use_get_issue_types'; import { useGetFieldsByIssueType } from './use_get_fields_by_issue_type'; import { useGetIssues } from './use_get_issues'; import { useGetSingleIssue } from './use_get_single_issue'; -import { ActionConnector } from '../../../../types'; +import { ActionConnector } from '@kbn/triggers-actions-ui-plugin/public/types'; import { act, fireEvent, render, waitFor, within } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; -jest.mock('../../../../common/lib/kibana'); +jest.mock('@kbn/triggers-actions-ui-plugin/public/common/lib/kibana'); jest.mock('./use_get_issue_types'); jest.mock('./use_get_fields_by_issue_type'); jest.mock('./use_get_issues'); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/jira_params.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/jira/jira_params.tsx similarity index 90% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/jira_params.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/jira/jira_params.tsx index 5228fbcaf119f..f4aa607f7cf34 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/jira_params.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/jira/jira_params.tsx @@ -18,15 +18,16 @@ import { EuiFlexItem, EuiSpacer, } from '@elastic/eui'; - -import { ActionParamsProps } from '../../../../types'; -import { TextAreaWithMessageVariables } from '../../text_area_with_message_variables'; -import { TextFieldWithMessageVariables } from '../../text_field_with_message_variables'; +import type { ActionParamsProps } from '@kbn/triggers-actions-ui-plugin/public'; +import { + TextAreaWithMessageVariables, + TextFieldWithMessageVariables, + useKibana, +} from '@kbn/triggers-actions-ui-plugin/public'; import { JiraActionParams } from './types'; import { useGetIssueTypes } from './use_get_issue_types'; import { useGetFieldsByIssueType } from './use_get_fields_by_issue_type'; import { SearchIssues } from './search_issues'; -import { useKibana } from '../../../../common/lib/kibana'; const JiraParamsFields: React.FunctionComponent> = ({ actionConnector, @@ -198,12 +199,9 @@ const JiraParamsFields: React.FunctionComponent 0 && incident.summary !== undefined } - label={i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.jira.summaryFieldLabel', - { - defaultMessage: 'Summary (required)', - } - )} + label={i18n.translate('xpack.stackConnectors.components.jira.summaryFieldLabel', { + defaultMessage: 'Summary (required)', + })} > 0 ? comments[0].comment : undefined} label={i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.jira.commentsTextAreaFieldLabel', + 'xpack.stackConnectors.components.jira.commentsTextAreaFieldLabel', { defaultMessage: 'Additional comments', } diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/logo.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/jira/logo.tsx similarity index 99% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/logo.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/jira/logo.tsx index f42b571408502..945dc955e4b20 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/logo.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/jira/logo.tsx @@ -6,7 +6,7 @@ */ import React from 'react'; -import { LogoProps } from '../types'; +import { LogoProps } from '../../types'; const Logo = (props: LogoProps) => ( - i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.jira.unableToGetIssueMessage', - { - defaultMessage: 'Unable to get issue with id {id}', - values: { id }, - } - ); + i18n.translate('xpack.stackConnectors.components.jira.unableToGetIssueMessage', { + defaultMessage: 'Unable to get issue with id {id}', + values: { id }, + }); export const SEARCH_ISSUES_COMBO_BOX_ARIA_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.jira.searchIssuesComboBoxAriaLabel', + 'xpack.stackConnectors.components.jira.searchIssuesComboBoxAriaLabel', { defaultMessage: 'Type to search', } ); export const SEARCH_ISSUES_PLACEHOLDER = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.jira.searchIssuesComboBoxPlaceholder', + 'xpack.stackConnectors.components.jira.searchIssuesComboBoxPlaceholder', { defaultMessage: 'Type to search', } ); export const SEARCH_ISSUES_LOADING = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.jira.searchIssuesLoading', + 'xpack.stackConnectors.components.jira.searchIssuesLoading', { defaultMessage: 'Loading...', } ); export const LABELS_WHITE_SPACES = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.jira.labelsSpacesErrorMessage', + 'xpack.stackConnectors.components.jira.labelsSpacesErrorMessage', { defaultMessage: 'Labels cannot contain spaces.', } diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/types.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/jira/types.ts similarity index 81% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/types.ts rename to x-pack/plugins/stack_connectors/public/connector_types/cases/jira/types.ts index 85e7be1626b0c..e5796f44591ca 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/types.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/jira/types.ts @@ -5,8 +5,8 @@ * 2.0. */ -import type { ExecutorSubActionPushParams } from '@kbn/stack-connectors-plugin/server/connector_types/cases/jira/types'; -import { UserConfiguredActionConnector } from '../../../../types'; +import { UserConfiguredActionConnector } from '@kbn/triggers-actions-ui-plugin/public/types'; +import type { ExecutorSubActionPushParams } from '../../../../server/connector_types/cases/jira/types'; export type JiraActionConnector = UserConfiguredActionConnector; export interface JiraActionParams { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/use_get_fields_by_issue_type.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/jira/use_get_fields_by_issue_type.tsx similarity index 96% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/use_get_fields_by_issue_type.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/jira/use_get_fields_by_issue_type.tsx index 4f0e1e143291c..11b8c7fee8294 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/use_get_fields_by_issue_type.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/jira/use_get_fields_by_issue_type.tsx @@ -7,7 +7,7 @@ import { useState, useEffect, useRef } from 'react'; import { HttpSetup, IToasts } from '@kbn/core/public'; -import { ActionConnector } from '../../../../types'; +import { ActionConnector } from '@kbn/triggers-actions-ui-plugin/public'; import { Fields } from './types'; import { getFieldsByIssueType } from './api'; import * as i18n from './translations'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/use_get_issue_types.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/jira/use_get_issue_types.tsx similarity index 96% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/use_get_issue_types.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/jira/use_get_issue_types.tsx index 97db74630258c..ed5a0e0a48191 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/use_get_issue_types.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/jira/use_get_issue_types.tsx @@ -8,7 +8,7 @@ import { useState, useEffect, useRef } from 'react'; import { HttpSetup, IToasts } from '@kbn/core/public'; -import { ActionConnector } from '../../../../types'; +import { ActionConnector } from '@kbn/triggers-actions-ui-plugin/public'; import { IssueTypes } from './types'; import { getIssueTypes } from './api'; import * as i18n from './translations'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/use_get_issues.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/jira/use_get_issues.tsx similarity index 96% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/use_get_issues.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/jira/use_get_issues.tsx index 0dea608b78ac9..04153fdd5e4fc 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/use_get_issues.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/jira/use_get_issues.tsx @@ -8,7 +8,7 @@ import { isEmpty, debounce } from 'lodash/fp'; import { useState, useEffect, useRef } from 'react'; import { HttpSetup, IToasts } from '@kbn/core/public'; -import { ActionConnector } from '../../../../types'; +import { ActionConnector } from '@kbn/triggers-actions-ui-plugin/public'; import { Issue } from './types'; import { getIssues } from './api'; import * as i18n from './translations'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/use_get_single_issue.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/jira/use_get_single_issue.tsx similarity index 96% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/use_get_single_issue.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/jira/use_get_single_issue.tsx index 3967ab25c889e..bacc57c971ad4 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/use_get_single_issue.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/jira/use_get_single_issue.tsx @@ -7,7 +7,7 @@ import { useState, useEffect, useRef } from 'react'; import { HttpSetup, IToasts } from '@kbn/core/public'; -import { ActionConnector } from '../../../../types'; +import { ActionConnector } from '@kbn/triggers-actions-ui-plugin/public'; import { Issue } from './types'; import { getIssue } from './api'; import * as i18n from './translations'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/api.test.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/api.test.ts similarity index 100% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/api.test.ts rename to x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/api.test.ts diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/api.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/api.ts similarity index 88% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/api.ts rename to x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/api.ts index b0378be04efd3..80341d45402e2 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/api.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/api.ts @@ -6,8 +6,11 @@ */ import { HttpSetup } from '@kbn/core/public'; -import { BASE_ACTION_API_PATH } from '../../../constants'; -import { ConnectorExecutorResult, rewriteResponseToCamelCase } from '../rewrite_response_body'; +import { BASE_ACTION_API_PATH } from '@kbn/actions-plugin/common'; +import { + ConnectorExecutorResult, + rewriteResponseToCamelCase, +} from '../../lib/rewrite_response_body'; export async function getIncidentTypes({ http, diff --git a/x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/index.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/index.ts new file mode 100644 index 0000000000000..0d6ca3e87e736 --- /dev/null +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/index.ts @@ -0,0 +1,8 @@ +/* + * 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. + */ + +export { getConnectorType as getResilientConnectorType } from './resilient'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/logo.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/logo.tsx similarity index 98% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/logo.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/logo.tsx index 7b64a1330d401..7437984034bd5 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/logo.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/logo.tsx @@ -6,7 +6,7 @@ */ import React from 'react'; -import { LogoProps } from '../types'; +import { LogoProps } from '../../types'; const Logo = (props: LogoProps) => ( { + const connectorTypeRegistry = new TypeRegistry(); + registerConnectorTypes({ connectorTypeRegistry, services: registrationServicesMock }); + const getResult = connectorTypeRegistry.get(CONNECTOR_TYPE_ID); + if (getResult !== null) { + connectorTypeModel = getResult; + } +}); + +describe('connectorTypeRegistry.get() works', () => { + test('connector type static data is as expected', () => { + expect(connectorTypeModel.id).toEqual(CONNECTOR_TYPE_ID); + }); +}); + +describe('resilient action params validation', () => { + test('action params validation succeeds when action params is valid', async () => { + const actionParams = { + subActionParams: { incident: { name: 'some title {{test}}' }, comments: [] }, + }; + + expect(await connectorTypeModel.validateParams(actionParams)).toEqual({ + errors: { 'subActionParams.incident.name': [] }, + }); + }); + + test('params validation fails when body is not valid', async () => { + const actionParams = { + subActionParams: { incident: { name: '' }, comments: [] }, + }; + + expect(await connectorTypeModel.validateParams(actionParams)).toEqual({ + errors: { + 'subActionParams.incident.name': ['Name is required.'], + }, + }); + }); +}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/resilient.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/resilient.tsx similarity index 77% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/resilient.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/resilient.tsx index 2297107e914cc..9ec583762b973 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/resilient.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/resilient.tsx @@ -7,24 +7,24 @@ import { lazy } from 'react'; import { i18n } from '@kbn/i18n'; -import { GenericValidationResult, ActionTypeModel } from '../../../../types'; +import type { + GenericValidationResult, + ActionTypeModel as ConnectorTypeModel, +} from '@kbn/triggers-actions-ui-plugin/public'; import { ResilientConfig, ResilientSecrets, ResilientActionParams } from './types'; -export const DESC = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.resilient.selectMessageText', - { - defaultMessage: 'Create an incident in IBM Resilient.', - } -); +export const DESC = i18n.translate('xpack.stackConnectors.components.resilient.selectMessageText', { + defaultMessage: 'Create an incident in IBM Resilient.', +}); export const TITLE = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.resilient.actionTypeTitle', + 'xpack.stackConnectors.components.resilient.connectorTypeTitle', { defaultMessage: 'Resilient', } ); -export function getActionType(): ActionTypeModel< +export function getConnectorType(): ConnectorTypeModel< ResilientConfig, ResilientSecrets, ResilientActionParams diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/resilient_connectors.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/resilient_connectors.test.tsx similarity index 96% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/resilient_connectors.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/resilient_connectors.test.tsx index 0fbe63b28b166..8364e614a0335 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/resilient_connectors.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/resilient_connectors.test.tsx @@ -8,11 +8,11 @@ import React from 'react'; import { mountWithIntl } from '@kbn/test-jest-helpers'; import ResilientConnectorFields from './resilient_connectors'; -import { ConnectorFormTestProvider } from '../test_utils'; +import { ConnectorFormTestProvider } from '../../lib/test_utils'; import { act, render } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; -jest.mock('../../../../common/lib/kibana'); +jest.mock('@kbn/triggers-actions-ui-plugin/public/common/lib/kibana'); describe('ResilientActionConnectorFields renders', () => { test('alerting Resilient connector fields are rendered', () => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/resilient_connectors.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/resilient_connectors.tsx similarity index 86% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/resilient_connectors.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/resilient_connectors.tsx index 6cc4d31f1b405..ddd219d4fc52b 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/resilient_connectors.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/resilient_connectors.tsx @@ -6,14 +6,13 @@ */ import React from 'react'; - -import { ActionConnectorFieldsProps } from '../../../../types'; -import * as i18n from './translations'; -import { +import type { + ActionConnectorFieldsProps, ConfigFieldSchema, SecretsFieldSchema, - SimpleConnectorForm, -} from '../../simple_connector_form'; +} from '@kbn/triggers-actions-ui-plugin/public'; +import { SimpleConnectorForm } from '@kbn/triggers-actions-ui-plugin/public'; +import * as i18n from './translations'; const configFormSchema: ConfigFieldSchema[] = [ { id: 'apiUrl', label: i18n.API_URL_LABEL, isUrlField: true }, diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/resilient_params.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/resilient_params.test.tsx similarity index 99% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/resilient_params.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/resilient_params.test.tsx index 09ae6fe002d41..c6417660720f7 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/resilient_params.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/resilient_params.test.tsx @@ -14,7 +14,7 @@ import { EuiComboBoxOptionOption } from '@elastic/eui'; jest.mock('./use_get_incident_types'); jest.mock('./use_get_severity'); -jest.mock('../../../../common/lib/kibana'); +jest.mock('@kbn/triggers-actions-ui-plugin/public/common/lib/kibana'); const useGetIncidentTypesMock = useGetIncidentTypes as jest.Mock; const useGetSeverityMock = useGetSeverity as jest.Mock; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/resilient_params.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/resilient_params.tsx similarity index 88% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/resilient_params.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/resilient_params.tsx index a50736b8c737b..04a0ba4f85ec4 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/resilient_params.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/resilient_params.tsx @@ -16,15 +16,16 @@ import { EuiSelectOption, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; - -import { ActionParamsProps } from '../../../../types'; +import type { ActionParamsProps } from '@kbn/triggers-actions-ui-plugin/public'; +import { + TextAreaWithMessageVariables, + TextFieldWithMessageVariables, + useKibana, +} from '@kbn/triggers-actions-ui-plugin/public'; import { ResilientActionParams } from './types'; -import { TextAreaWithMessageVariables } from '../../text_area_with_message_variables'; -import { TextFieldWithMessageVariables } from '../../text_field_with_message_variables'; import { useGetIncidentTypes } from './use_get_incident_types'; import { useGetSeverity } from './use_get_severity'; -import { useKibana } from '../../../../common/lib/kibana'; const ResilientParamsFields: React.FunctionComponent> = ({ actionConnector, @@ -169,7 +170,7 @@ const ResilientParamsFields: React.FunctionComponent @@ -188,10 +189,9 @@ const ResilientParamsFields: React.FunctionComponent 0 && incident.name !== undefined } - label={i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.resilient.nameFieldLabel', - { defaultMessage: 'Name (required)' } - )} + label={i18n.translate('xpack.stackConnectors.components.resilient.nameFieldLabel', { + defaultMessage: 'Name (required)', + })} > @@ -245,7 +244,7 @@ const ResilientParamsFields: React.FunctionComponent 0 ? comments[0].comment : undefined} label={i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.resilient.commentsTextAreaFieldLabel', + 'xpack.stackConnectors.components.resilient.commentsTextAreaFieldLabel', { defaultMessage: 'Additional comments' } )} /> diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/translations.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/translations.ts similarity index 55% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/translations.ts rename to x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/translations.ts index df4c15b0f322a..d049ba633e699 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/translations.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/translations.ts @@ -8,49 +8,46 @@ import { i18n } from '@kbn/i18n'; export const API_URL_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.resilient.apiUrlTextFieldLabel', + 'xpack.stackConnectors.components.resilient.apiUrlTextFieldLabel', { defaultMessage: 'URL', } ); -export const ORG_ID_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.resilient.orgId', - { - defaultMessage: 'Organization ID', - } -); +export const ORG_ID_LABEL = i18n.translate('xpack.stackConnectors.components.resilient.orgId', { + defaultMessage: 'Organization ID', +}); export const API_KEY_ID_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.resilient.apiKeyId', + 'xpack.stackConnectors.components.resilient.apiKeyId', { defaultMessage: 'API Key ID', } ); export const API_KEY_SECRET_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.resilient.apiKeySecret', + 'xpack.stackConnectors.components.resilient.apiKeySecret', { defaultMessage: 'API Key Secret', } ); export const NAME_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.resilient.requiredNameTextField', + 'xpack.stackConnectors.components.resilient.requiredNameTextField', { defaultMessage: 'Name is required.', } ); export const INCIDENT_TYPES_API_ERROR = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.resilient.unableToGetIncidentTypesMessage', + 'xpack.stackConnectors.components.resilient.unableToGetIncidentTypesMessage', { defaultMessage: 'Unable to get incident types', } ); export const SEVERITY_API_ERROR = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.resilient.unableToGetSeverityMessage', + 'xpack.stackConnectors.components.resilient.unableToGetSeverityMessage', { defaultMessage: 'Unable to get severity', } diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/types.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/types.ts similarity index 75% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/types.ts rename to x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/types.ts index 12c46d2900213..67006b967b5d6 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/types.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/types.ts @@ -5,8 +5,8 @@ * 2.0. */ -import type { ExecutorSubActionPushParams } from '@kbn/stack-connectors-plugin/server/connector_types/cases/resilient/types'; -import { UserConfiguredActionConnector } from '../../../../types'; +import { UserConfiguredActionConnector } from '@kbn/triggers-actions-ui-plugin/public/types'; +import type { ExecutorSubActionPushParams } from '../../../../server/connector_types/cases/resilient/types'; export type ResilientActionConnector = UserConfiguredActionConnector< ResilientConfig, diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/use_get_incident_types.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/use_get_incident_types.tsx similarity index 96% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/use_get_incident_types.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/use_get_incident_types.tsx index e398f1a8dd32c..577af149d77c0 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/use_get_incident_types.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/use_get_incident_types.tsx @@ -7,7 +7,7 @@ import { useState, useEffect, useRef } from 'react'; import { HttpSetup, ToastsApi } from '@kbn/core/public'; -import { ActionConnector } from '../../../../types'; +import { ActionConnector } from '@kbn/triggers-actions-ui-plugin/public'; import { getIncidentTypes } from './api'; import * as i18n from './translations'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/use_get_severity.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/use_get_severity.tsx similarity index 96% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/use_get_severity.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/use_get_severity.tsx index 79e3b27d0a081..7f93e908dbb9a 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/use_get_severity.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/resilient/use_get_severity.tsx @@ -7,7 +7,7 @@ import { useState, useEffect, useRef } from 'react'; import { HttpSetup, ToastsApi } from '@kbn/core/public'; -import { ActionConnector } from '../../../../types'; +import { ActionConnector } from '@kbn/triggers-actions-ui-plugin/public'; import { getSeverity } from './api'; import * as i18n from './translations'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/api.test.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/api.test.ts similarity index 100% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/api.test.ts rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/api.test.ts diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/api.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/api.ts similarity index 92% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/api.ts rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/api.ts index 95fac75cb9f5b..4cf46d57eb7f4 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/api.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/api.ts @@ -10,12 +10,15 @@ import { HttpSetup } from '@kbn/core/public'; import { ActionTypeExecutorResult, INTERNAL_BASE_ACTION_API_PATH, + BASE_ACTION_API_PATH, } from '@kbn/actions-plugin/common'; -import { snExternalServiceConfig } from '@kbn/stack-connectors-plugin/common/servicenow_config'; -import { BASE_ACTION_API_PATH } from '../../../constants'; +import { snExternalServiceConfig } from '../../../../common/servicenow_config'; import { API_INFO_ERROR } from './translations'; import { AppInfo, RESTApiError, ServiceNowActionConnector } from './types'; -import { ConnectorExecutorResult, rewriteResponseToCamelCase } from '../rewrite_response_body'; +import { + ConnectorExecutorResult, + rewriteResponseToCamelCase, +} from '../../lib/rewrite_response_body'; import { Choice } from './types'; export async function getChoices({ diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/application_required_callout.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/application_required_callout.test.tsx similarity index 100% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/application_required_callout.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/application_required_callout.test.tsx diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/application_required_callout.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/application_required_callout.tsx similarity index 81% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/application_required_callout.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/application_required_callout.tsx index 9aefd7a2259b2..2938685f1102c 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/application_required_callout.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/application_required_callout.tsx @@ -11,14 +11,14 @@ import { i18n } from '@kbn/i18n'; import { SNStoreButton } from './sn_store_button'; const content = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.applicationRequiredCallout.content', + 'xpack.stackConnectors.components.serviceNow.applicationRequiredCallout.content', { defaultMessage: 'Please go to the ServiceNow app store and install the application', } ); const ERROR_MESSAGE = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.applicationRequiredCallout.errorMessage', + 'xpack.stackConnectors.components.serviceNow.applicationRequiredCallout.errorMessage', { defaultMessage: 'Error message', } @@ -39,7 +39,7 @@ const ApplicationRequiredCalloutComponent: React.FC = ({ appId, message } data-test-subj="snApplicationCallout" color="danger" title={i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.applicationRequiredCallout', + 'xpack.stackConnectors.components.serviceNow.applicationRequiredCallout', { defaultMessage: 'Elastic ServiceNow App not installed', } diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/auth_types/credentials_auth.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/auth_types/credentials_auth.tsx similarity index 95% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/auth_types/credentials_auth.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/auth_types/credentials_auth.tsx index b996d8feac8e2..46b509e22d6fc 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/auth_types/credentials_auth.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/auth_types/credentials_auth.tsx @@ -9,7 +9,7 @@ import React, { memo } from 'react'; import { UseField } from '@kbn/es-ui-shared-plugin/static/forms/hook_form_lib'; import { fieldValidators } from '@kbn/es-ui-shared-plugin/static/forms/helpers'; import { TextField } from '@kbn/es-ui-shared-plugin/static/forms/components'; -import { PasswordField } from '../../../password_field'; +import { PasswordField } from '@kbn/triggers-actions-ui-plugin/public'; import * as i18n from '../translations'; interface Props { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/auth_types/index.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/auth_types/index.ts similarity index 100% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/auth_types/index.ts rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/auth_types/index.ts diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/auth_types/oauth.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/auth_types/oauth.tsx similarity index 98% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/auth_types/oauth.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/auth_types/oauth.tsx index 4c51641ea0bf1..febcb6c498307 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/auth_types/oauth.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/auth_types/oauth.tsx @@ -9,8 +9,8 @@ import React, { memo } from 'react'; import { UseField } from '@kbn/es-ui-shared-plugin/static/forms/hook_form_lib'; import { fieldValidators } from '@kbn/es-ui-shared-plugin/static/forms/helpers'; import { TextAreaField, TextField } from '@kbn/es-ui-shared-plugin/static/forms/components'; +import { PasswordField } from '@kbn/triggers-actions-ui-plugin/public'; import * as i18n from '../translations'; -import { PasswordField } from '../../../password_field'; interface Props { readOnly: boolean; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/credentials.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/credentials.test.tsx similarity index 95% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/credentials.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/credentials.test.tsx index d0b0b50b0ffc6..aab2ab0fb21c6 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/credentials.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/credentials.test.tsx @@ -9,9 +9,9 @@ import React from 'react'; import { fireEvent, render, screen } from '@testing-library/react'; import { Credentials } from './credentials'; import { __IntlProvider as IntlProvider } from '@kbn/i18n-react'; -import { ConnectorFormTestProvider } from '../test_utils'; +import { ConnectorFormTestProvider } from '../../lib/test_utils'; -jest.mock('../../../../common/lib/kibana'); +jest.mock('@kbn/triggers-actions-ui-plugin/public/common/lib/kibana'); describe('Credentials', () => { const connector = { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/credentials.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/credentials.tsx similarity index 100% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/credentials.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/credentials.tsx diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/credentials_api_url.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/credentials_api_url.tsx similarity index 92% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/credentials_api_url.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/credentials_api_url.tsx index 392b173080346..58130ee8d8a09 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/credentials_api_url.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/credentials_api_url.tsx @@ -12,7 +12,7 @@ import { UseField } from '@kbn/es-ui-shared-plugin/static/forms/hook_form_lib'; import { fieldValidators } from '@kbn/es-ui-shared-plugin/static/forms/helpers'; import { TextField } from '@kbn/es-ui-shared-plugin/static/forms/components'; -import { useKibana } from '../../../../common/lib/kibana'; +import { useKibana } from '@kbn/triggers-actions-ui-plugin/public'; import * as i18n from './translations'; interface Props { @@ -31,7 +31,7 @@ const CredentialsApiUrlComponent: React.FC = ({ isLoading, readOnly, path

= ({ onMigrate }) => { data-test-subj="snDeprecatedCallout" color="warning" title={i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.deprecatedCalloutTitle', + 'xpack.stackConnectors.components.serviceNow.deprecatedCalloutTitle', { defaultMessage: 'This connector type is deprecated', } @@ -40,13 +40,13 @@ const DeprecatedCalloutComponent: React.FC = ({ onMigrate }) => { > {i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.deprecatedCalloutCreate', + 'xpack.stackConnectors.components.serviceNow.deprecatedCalloutCreate', { defaultMessage: 'or create a new one.', } @@ -64,7 +64,7 @@ const DeprecatedCalloutComponent: React.FC = ({ onMigrate }) => { export const DeprecatedCallout = memo(DeprecatedCalloutComponent); const updateThisConnectorMessage = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.deprecatedCalloutMigrate', + 'xpack.stackConnectors.components.serviceNow.deprecatedCalloutMigrate', { defaultMessage: 'Update this connector,', } diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/helpers.test.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/helpers.test.ts similarity index 97% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/helpers.test.ts rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/helpers.test.ts index a02fca8f2dca4..7700014e58021 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/helpers.test.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/helpers.test.ts @@ -11,7 +11,7 @@ import { getConnectorDescriptiveTitle, getSelectedConnectorIcon, } from './helpers'; -import { ActionConnector } from '../../../../types'; +import { ActionConnector } from '@kbn/triggers-actions-ui-plugin/public/types'; const deprecatedConnector: ActionConnector = { secrets: {}, diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/helpers.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/helpers.ts similarity index 91% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/helpers.ts rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/helpers.ts index 3798a312083e1..def683edbdd33 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/helpers.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/helpers.ts @@ -7,9 +7,12 @@ import { lazy, ComponentType } from 'react'; import { EuiSelectOption } from '@elastic/eui'; +import { + ActionConnector, + deprecatedMessage, + IErrorObject, +} from '@kbn/triggers-actions-ui-plugin/public'; import { AppInfo, Choice, RESTApiError } from './types'; -import { ActionConnector, IErrorObject } from '../../../../types'; -import { deprecatedMessage } from '../../../../common/connectors_selection'; export const DEFAULT_CORRELATION_ID = '{{rule.id}}:{{alert.id}}'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/index.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/index.ts similarity index 73% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/index.ts rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/index.ts index c313fd5d0edd6..553cf2edde846 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/index.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/index.ts @@ -6,7 +6,7 @@ */ export { - getServiceNowITSMActionType, - getServiceNowSIRActionType, - getServiceNowITOMActionType, + getServiceNowITSMConnectorType, + getServiceNowSIRConnectorType, + getServiceNowITOMConnectorType, } from './servicenow'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/installation_callout.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/installation_callout.test.tsx similarity index 100% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/installation_callout.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/installation_callout.test.tsx diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/installation_callout.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/installation_callout.tsx similarity index 100% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/installation_callout.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/installation_callout.tsx diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/logo.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/logo.tsx similarity index 97% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/logo.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/logo.tsx index e2c5546e31a72..f97b07247569d 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/logo.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/logo.tsx @@ -6,7 +6,7 @@ */ import React from 'react'; -import { LogoProps } from '../types'; +import { LogoProps } from '../../types'; function Logo(props: LogoProps) { return ( diff --git a/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow.test.tsx new file mode 100644 index 0000000000000..9427623f0de8a --- /dev/null +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow.test.tsx @@ -0,0 +1,80 @@ +/* + * 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 { TypeRegistry } from '@kbn/triggers-actions-ui-plugin/public/application/type_registry'; +import { registerConnectorTypes } from '../..'; +import type { ActionTypeModel as ConnectorTypeModel } from '@kbn/triggers-actions-ui-plugin/public/types'; +import { registrationServicesMock } from '../../../mocks'; + +const SERVICENOW_ITSM_CONNECTOR_TYPE_ID = '.servicenow'; +const SERVICENOW_SIR_CONNECTOR_TYPE_ID = '.servicenow-sir'; +const SERVICENOW_ITOM_CONNECTOR_TYPE_ID = '.servicenow-itom'; +let connectorTypeRegistry: TypeRegistry; + +beforeAll(() => { + connectorTypeRegistry = new TypeRegistry(); + registerConnectorTypes({ connectorTypeRegistry, services: registrationServicesMock }); +}); + +describe('connectorTypeRegistry.get() works', () => { + [ + SERVICENOW_ITSM_CONNECTOR_TYPE_ID, + SERVICENOW_SIR_CONNECTOR_TYPE_ID, + SERVICENOW_ITOM_CONNECTOR_TYPE_ID, + ].forEach((id) => { + test(`${id}: connector type static data is as expected`, () => { + const connectorTypeModel = connectorTypeRegistry.get(id); + expect(connectorTypeModel.id).toEqual(id); + }); + }); +}); + +describe('servicenow action params validation', () => { + [SERVICENOW_ITSM_CONNECTOR_TYPE_ID, SERVICENOW_SIR_CONNECTOR_TYPE_ID].forEach((id) => { + test(`${id}: action params validation succeeds when action params is valid`, async () => { + const connectorTypeModel = connectorTypeRegistry.get(id); + const actionParams = { + subActionParams: { incident: { short_description: 'some title {{test}}' }, comments: [] }, + }; + + expect(await connectorTypeModel.validateParams(actionParams)).toEqual({ + errors: { ['subActionParams.incident.short_description']: [] }, + }); + }); + + test(`${id}: params validation fails when short_description is not valid`, async () => { + const connectorTypeModel = connectorTypeRegistry.get(id); + const actionParams = { + subActionParams: { incident: { short_description: '' }, comments: [] }, + }; + + expect(await connectorTypeModel.validateParams(actionParams)).toEqual({ + errors: { + ['subActionParams.incident.short_description']: ['Short description is required.'], + }, + }); + }); + }); + + test(`${SERVICENOW_ITOM_CONNECTOR_TYPE_ID}: action params validation succeeds when action params is valid`, async () => { + const connectorTypeModel = connectorTypeRegistry.get(SERVICENOW_ITOM_CONNECTOR_TYPE_ID); + const actionParams = { subActionParams: { severity: 'Critical' } }; + + expect(await connectorTypeModel.validateParams(actionParams)).toEqual({ + errors: { ['severity']: [] }, + }); + }); + + test(`${SERVICENOW_ITOM_CONNECTOR_TYPE_ID}: params validation fails when severity is not valid`, async () => { + const connectorTypeModel = connectorTypeRegistry.get(SERVICENOW_ITOM_CONNECTOR_TYPE_ID); + const actionParams = { subActionParams: { severity: null } }; + + expect(await connectorTypeModel.validateParams(actionParams)).toEqual({ + errors: { ['severity']: ['Severity is required.'] }, + }); + }); +}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow.tsx similarity index 84% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow.tsx index 85b2aea862848..932d244e852f8 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow.tsx @@ -7,7 +7,10 @@ import { lazy } from 'react'; import { i18n } from '@kbn/i18n'; -import { ActionTypeModel, GenericValidationResult } from '../../../../types'; +import type { + ActionTypeModel as ConnectorTypeModel, + GenericValidationResult, +} from '@kbn/triggers-actions-ui-plugin/public'; import { ServiceNowConfig, ServiceNowITOMActionParams, @@ -18,48 +21,48 @@ import { import { getConnectorDescriptiveTitle, getSelectedConnectorIcon } from './helpers'; export const SERVICENOW_ITOM_TITLE = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.serviceNowITOM.actionTypeTitle', + 'xpack.stackConnectors.components.serviceNowITOM.connectorTypeTitle', { defaultMessage: 'ServiceNow ITOM', } ); export const SERVICENOW_ITOM_DESC = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.serviceNowITOM.selectMessageText', + 'xpack.stackConnectors.components.serviceNowITOM.selectMessageText', { defaultMessage: 'Create an event in ServiceNow ITOM.', } ); export const SERVICENOW_ITSM_DESC = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.serviceNowITSM.selectMessageText', + 'xpack.stackConnectors.components.serviceNowITSM.selectMessageText', { defaultMessage: 'Create an incident in ServiceNow ITSM.', } ); export const SERVICENOW_SIR_DESC = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.serviceNowSIR.selectMessageText', + 'xpack.stackConnectors.components.serviceNowSIR.selectMessageText', { defaultMessage: 'Create an incident in ServiceNow SecOps.', } ); export const SERVICENOW_ITSM_TITLE = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.serviceNowITSM.actionTypeTitle', + 'xpack.stackConnectors.components.serviceNowITSM.connectorTypeTitle', { defaultMessage: 'ServiceNow ITSM', } ); export const SERVICENOW_SIR_TITLE = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.serviceNowSIR.actionTypeTitle', + 'xpack.stackConnectors.components.serviceNowSIR.connectorTypeTitle', { defaultMessage: 'ServiceNow SecOps', } ); -export function getServiceNowITSMActionType(): ActionTypeModel< +export function getServiceNowITSMConnectorType(): ConnectorTypeModel< ServiceNowConfig, ServiceNowSecrets, ServiceNowITSMActionParams @@ -97,7 +100,7 @@ export function getServiceNowITSMActionType(): ActionTypeModel< }; } -export function getServiceNowSIRActionType(): ActionTypeModel< +export function getServiceNowSIRConnectorType(): ConnectorTypeModel< ServiceNowConfig, ServiceNowSecrets, ServiceNowSIRActionParams @@ -135,7 +138,7 @@ export function getServiceNowSIRActionType(): ActionTypeModel< }; } -export function getServiceNowITOMActionType(): ActionTypeModel< +export function getServiceNowITOMConnectorType(): ConnectorTypeModel< ServiceNowConfig, ServiceNowSecrets, ServiceNowITOMActionParams diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_connectors.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_connectors.test.tsx similarity index 97% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_connectors.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_connectors.test.tsx index f3ec5594144ec..6bf81f5aeae74 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_connectors.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_connectors.test.tsx @@ -10,17 +10,17 @@ import { act, within } from '@testing-library/react'; import { mountWithIntl } from '@kbn/test-jest-helpers'; import { render, act as reactAct } from '@testing-library/react'; -import { ConnectorValidationFunc } from '../../../../types'; -import { useKibana } from '../../../../common/lib/kibana'; -import { updateActionConnector } from '../../../lib/action_connector_api'; +import { ConnectorValidationFunc } from '@kbn/triggers-actions-ui-plugin/public/types'; +import { useKibana } from '@kbn/triggers-actions-ui-plugin/public'; +import { updateActionConnector } from '@kbn/triggers-actions-ui-plugin/public/application/lib/action_connector_api'; import ServiceNowConnectorFields from './servicenow_connectors'; import { getAppInfo } from './api'; -import { ConnectorFormTestProvider } from '../test_utils'; +import { ConnectorFormTestProvider } from '../../lib/test_utils'; import { mount } from 'enzyme'; import userEvent from '@testing-library/user-event'; -jest.mock('../../../../common/lib/kibana'); -jest.mock('../../../lib/action_connector_api'); +jest.mock('@kbn/triggers-actions-ui-plugin/public/common/lib/kibana'); +jest.mock('@kbn/triggers-actions-ui-plugin/public/application/lib/action_connector_api'); jest.mock('./api'); const useKibanaMock = useKibana as jest.Mocked; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_connectors.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_connectors.tsx similarity index 92% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_connectors.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_connectors.tsx index d9e462ae552de..b9aeca98b6cde 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_connectors.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_connectors.tsx @@ -8,23 +8,24 @@ import React, { useCallback, useEffect, useState, useMemo } from 'react'; import { EuiSpacer } from '@elastic/eui'; -import { snExternalServiceConfig } from '@kbn/stack-connectors-plugin/common/servicenow_config'; import { useFormContext, useFormData } from '@kbn/es-ui-shared-plugin/static/forms/hook_form_lib'; - -import { ActionConnectorFieldsProps } from '../../../../types'; -import { useKibana } from '../../../../common/lib/kibana'; +import type { ActionConnectorFieldsProps } from '@kbn/triggers-actions-ui-plugin/public'; +import { + HiddenField, + updateActionConnector, + useKibana, +} from '@kbn/triggers-actions-ui-plugin/public'; +import type { ConnectorFormSchema } from '@kbn/triggers-actions-ui-plugin/public'; +import { snExternalServiceConfig } from '../../../../common/servicenow_config'; import { DeprecatedCallout } from './deprecated_callout'; import { useGetAppInfo } from './use_get_app_info'; import { ApplicationRequiredCallout } from './application_required_callout'; import { isRESTApiError } from './helpers'; import { InstallationCallout } from './installation_callout'; import { UpdateConnector, UpdateConnectorFormSchema } from './update_connector'; -import { updateActionConnector } from '../../../lib/action_connector_api'; import { Credentials } from './credentials'; import * as i18n from './translations'; import { ServiceNowActionConnector, ServiceNowConfig, ServiceNowSecrets } from './types'; -import { HiddenField } from '../../hidden_field'; -import { ConnectorFormSchema } from '../../../sections/action_connector_form/types'; // eslint-disable-next-line import/no-default-export export { ServiceNowConnectorFields as default }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_connectors_no_app.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_connectors_no_app.test.tsx similarity index 97% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_connectors_no_app.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_connectors_no_app.test.tsx index a0dda6edf76e0..e70005f8c7e1b 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_connectors_no_app.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_connectors_no_app.test.tsx @@ -8,7 +8,11 @@ import { act } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import React from 'react'; -import { AppMockRenderer, ConnectorFormTestProvider, createAppMockRenderer } from '../test_utils'; +import { + AppMockRenderer, + ConnectorFormTestProvider, + createAppMockRenderer, +} from '../../lib/test_utils'; import ServiceNowConnectorFieldsNoApp from './servicenow_connectors_no_app'; describe('ServiceNowActionConnectorFields renders', () => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_connectors_no_app.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_connectors_no_app.tsx similarity index 85% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_connectors_no_app.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_connectors_no_app.tsx index e4332f163151b..d1a2f3472acbb 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_connectors_no_app.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_connectors_no_app.tsx @@ -7,10 +7,9 @@ import React from 'react'; import { useFormData } from '@kbn/es-ui-shared-plugin/static/forms/hook_form_lib'; - -import { ActionConnectorFieldsProps } from '../../../../types'; +import type { ActionConnectorFieldsProps } from '@kbn/triggers-actions-ui-plugin/public'; +import { ConnectorFormSchema } from '@kbn/triggers-actions-ui-plugin/public'; import { Credentials } from './credentials'; -import { ConnectorFormSchema } from '../../../sections/action_connector_form/types'; import { ServiceNowConfig, ServiceNowSecrets } from './types'; const ServiceNowConnectorFieldsNoApp: React.FC = ({ diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_itom_params.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_itom_params.test.tsx similarity index 97% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_itom_params.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_itom_params.test.tsx index d17c77da1f820..60531c7a7104d 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_itom_params.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_itom_params.test.tsx @@ -8,12 +8,12 @@ import React from 'react'; import { mount } from 'enzyme'; -import { ActionConnector } from '../../../../types'; +import { ActionConnector } from '@kbn/triggers-actions-ui-plugin/public/types'; import { useChoices } from './use_choices'; import ServiceNowITOMParamsFields from './servicenow_itom_params'; jest.mock('./use_choices'); -jest.mock('../../../../common/lib/kibana'); +jest.mock('@kbn/triggers-actions-ui-plugin/public/common/lib/kibana'); const useChoicesMock = useChoices as jest.Mock; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_itom_params.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_itom_params.tsx similarity index 94% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_itom_params.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_itom_params.tsx index 8ad32fc0bc86b..caa2f40bac2c1 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_itom_params.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_itom_params.tsx @@ -7,10 +7,12 @@ import React, { useCallback, useEffect, useRef, useMemo } from 'react'; import { EuiFormRow, EuiSpacer, EuiTitle, EuiSelect } from '@elastic/eui'; -import { useKibana } from '../../../../common/lib/kibana'; -import { ActionParamsProps } from '../../../../types'; -import { TextAreaWithMessageVariables } from '../../text_area_with_message_variables'; -import { TextFieldWithMessageVariables } from '../../text_field_with_message_variables'; +import type { ActionParamsProps } from '@kbn/triggers-actions-ui-plugin/public'; +import { + TextAreaWithMessageVariables, + TextFieldWithMessageVariables, + useKibana, +} from '@kbn/triggers-actions-ui-plugin/public'; import * as i18n from './translations'; import { useChoices } from './use_choices'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_itsm_params.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_itsm_params.test.tsx similarity index 98% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_itsm_params.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_itsm_params.test.tsx index f8375a5aaeb6e..aa6cb6c71278d 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_itsm_params.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_itsm_params.test.tsx @@ -9,14 +9,14 @@ import React from 'react'; import { mountWithIntl } from '@kbn/test-jest-helpers'; import { act } from '@testing-library/react'; -import { ActionConnector } from '../../../../types'; +import { ActionConnector } from '@kbn/triggers-actions-ui-plugin/public/types'; import { useGetChoices } from './use_get_choices'; import ServiceNowITSMParamsFields from './servicenow_itsm_params'; import { Choice } from './types'; import { merge } from 'lodash'; jest.mock('./use_get_choices'); -jest.mock('../../../../common/lib/kibana'); +jest.mock('@kbn/triggers-actions-ui-plugin/public/common/lib/kibana'); const useGetChoicesMock = useGetChoices as jest.Mock; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_itsm_params.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_itsm_params.tsx similarity index 96% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_itsm_params.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_itsm_params.tsx index 3bae1c3b858d6..a585ee48864e8 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_itsm_params.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_itsm_params.tsx @@ -16,12 +16,13 @@ import { EuiLink, } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; - -import { useKibana } from '../../../../common/lib/kibana'; -import { ActionParamsProps } from '../../../../types'; +import type { ActionParamsProps } from '@kbn/triggers-actions-ui-plugin/public'; +import { + TextAreaWithMessageVariables, + TextFieldWithMessageVariables, + useKibana, +} from '@kbn/triggers-actions-ui-plugin/public'; import { ServiceNowITSMActionParams, Choice, Fields } from './types'; -import { TextAreaWithMessageVariables } from '../../text_area_with_message_variables'; -import { TextFieldWithMessageVariables } from '../../text_field_with_message_variables'; import { useGetChoices } from './use_get_choices'; import { choicesToEuiOptions, DEFAULT_CORRELATION_ID } from './helpers'; @@ -252,7 +253,7 @@ const ServiceNowParamsFields: React.FunctionComponent< helpText={ diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_selection_row.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_selection_row.tsx similarity index 81% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_selection_row.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_selection_row.tsx index 65068c6f56a07..f1fbb1a009ec7 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_selection_row.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_selection_row.tsx @@ -8,8 +8,8 @@ import { EuiIconTip } from '@elastic/eui'; import React from 'react'; import { i18n } from '@kbn/i18n'; -import { ActionConnector } from '../../../../types'; -import { connectorDeprecatedMessage } from '../../../../common/connectors_selection'; +import type { ActionConnector } from '@kbn/triggers-actions-ui-plugin/public'; +import { connectorDeprecatedMessage } from '@kbn/triggers-actions-ui-plugin/public'; // eslint-disable-next-line import/no-default-export export { ServiceNowSelectableRowIcon as default }; @@ -32,7 +32,7 @@ export function ServiceNowSelectableRowIcon({ } const deprecatedTooltipTitle = i18n.translate( - 'xpack.triggersActionsUI.sections.actionForm.deprecatedTooltipTitle', + 'xpack.stackConnectors.components.serviceNow.deprecatedTooltipTitle', { defaultMessage: 'Deprecated connector', } diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_sir_params.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_sir_params.test.tsx similarity index 98% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_sir_params.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_sir_params.test.tsx index 9f15cb07f92e1..8739938891625 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_sir_params.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_sir_params.test.tsx @@ -9,14 +9,14 @@ import React from 'react'; import { act } from '@testing-library/react'; import { mountWithIntl } from '@kbn/test-jest-helpers'; -import { ActionConnector } from '../../../../types'; +import { ActionConnector } from '@kbn/triggers-actions-ui-plugin/public/types'; import { useGetChoices } from './use_get_choices'; import ServiceNowSIRParamsFields from './servicenow_sir_params'; import { Choice } from './types'; import { merge } from 'lodash'; jest.mock('./use_get_choices'); -jest.mock('../../../../common/lib/kibana'); +jest.mock('@kbn/triggers-actions-ui-plugin/public/common/lib/kibana'); const useGetChoicesMock = useGetChoices as jest.Mock; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_sir_params.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_sir_params.tsx similarity index 95% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_sir_params.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_sir_params.tsx index a341dca3f255a..e58d635f9ef2d 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow_sir_params.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/servicenow_sir_params.tsx @@ -16,11 +16,12 @@ import { EuiLink, } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; - -import { useKibana } from '../../../../common/lib/kibana'; -import { ActionParamsProps } from '../../../../types'; -import { TextAreaWithMessageVariables } from '../../text_area_with_message_variables'; -import { TextFieldWithMessageVariables } from '../../text_field_with_message_variables'; +import type { ActionParamsProps } from '@kbn/triggers-actions-ui-plugin/public'; +import { + TextAreaWithMessageVariables, + TextFieldWithMessageVariables, + useKibana, +} from '@kbn/triggers-actions-ui-plugin/public'; import * as i18n from './translations'; import { useGetChoices } from './use_get_choices'; @@ -239,7 +240,7 @@ const ServiceNowSIRParamsFields: React.FunctionComponent< helpText={ diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/sn_store_button.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/sn_store_button.test.tsx similarity index 100% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/sn_store_button.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/sn_store_button.test.tsx diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/sn_store_button.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/sn_store_button.tsx similarity index 100% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/sn_store_button.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/sn_store_button.tsx diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/translations.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/translations.ts similarity index 50% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/translations.ts rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/translations.ts index 7c6fab2b18792..191fc001d7e80 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/translations.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/translations.ts @@ -8,146 +8,143 @@ import { i18n } from '@kbn/i18n'; export const API_URL_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.apiUrlTextFieldLabel', + 'xpack.stackConnectors.components.serviceNow.apiUrlTextFieldLabel', { defaultMessage: 'ServiceNow instance URL', } ); export const API_URL_INVALID = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.invalidApiUrlTextField', + 'xpack.stackConnectors.components.serviceNow.invalidApiUrlTextField', { defaultMessage: 'URL is invalid.', } ); export const AUTHENTICATION_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.authenticationLabel', + 'xpack.stackConnectors.components.serviceNow.authenticationLabel', { defaultMessage: 'Authentication', } ); export const USERNAME_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.usernameTextFieldLabel', + 'xpack.stackConnectors.components.serviceNow.usernameTextFieldLabel', { defaultMessage: 'Username', } ); export const USERNAME_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.requiredUsernameTextField', + 'xpack.stackConnectors.components.serviceNow.requiredUsernameTextField', { defaultMessage: 'Username is required.', } ); export const PASSWORD_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.passwordTextFieldLabel', + 'xpack.stackConnectors.components.serviceNow.passwordTextFieldLabel', { defaultMessage: 'Password', } ); export const TITLE_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.common.requiredShortDescTextField', + 'xpack.stackConnectors.components.serviceNow.requiredShortDescTextField', { defaultMessage: 'Short description is required.', } ); -export const INCIDENT = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.title', - { - defaultMessage: 'Incident', - } -); +export const INCIDENT = i18n.translate('xpack.stackConnectors.components.serviceNow.title', { + defaultMessage: 'Incident', +}); export const SECURITY_INCIDENT = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenowSIR.title', + 'xpack.stackConnectors.components.serviceNowSIR.title', { defaultMessage: 'Security Incident', } ); export const SHORT_DESCRIPTION_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.titleFieldLabel', + 'xpack.stackConnectors.components.serviceNow.titleFieldLabel', { defaultMessage: 'Short description (required)', } ); export const DESCRIPTION_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.descriptionTextAreaFieldLabel', + 'xpack.stackConnectors.components.serviceNow.descriptionTextAreaFieldLabel', { defaultMessage: 'Description', } ); export const COMMENTS_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.commentsTextAreaFieldLabel', + 'xpack.stackConnectors.components.serviceNow.commentsTextAreaFieldLabel', { defaultMessage: 'Additional comments', } ); export const CHOICES_API_ERROR = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.unableToGetChoicesMessage', + 'xpack.stackConnectors.components.serviceNow.unableToGetChoicesMessage', { defaultMessage: 'Unable to get choices', } ); export const CATEGORY_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.categoryTitle', + 'xpack.stackConnectors.components.serviceNow.categoryTitle', { defaultMessage: 'Category', } ); export const SUBCATEGORY_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.subcategoryTitle', + 'xpack.stackConnectors.components.serviceNow.subcategoryTitle', { defaultMessage: 'Subcategory', } ); export const URGENCY_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.urgencySelectFieldLabel', + 'xpack.stackConnectors.components.serviceNow.urgencySelectFieldLabel', { defaultMessage: 'Urgency', } ); export const SEVERITY_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.severitySelectFieldLabel', + 'xpack.stackConnectors.components.serviceNow.severitySelectFieldLabel', { defaultMessage: 'Severity', } ); export const IMPACT_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.impactSelectFieldLabel', + 'xpack.stackConnectors.components.serviceNow.impactSelectFieldLabel', { defaultMessage: 'Impact', } ); export const PRIORITY_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.prioritySelectFieldLabel', + 'xpack.stackConnectors.components.serviceNow.prioritySelectFieldLabel', { defaultMessage: 'Priority', } ); export const API_INFO_ERROR = (status: number) => - i18n.translate('xpack.triggersActionsUI.components.builtinActionTypes.servicenow.apiInfoError', { + i18n.translate('xpack.stackConnectors.components.serviceNow.apiInfoError', { values: { status }, defaultMessage: 'Received status: {status} when attempting to get application information', }); export const FETCH_ERROR = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.fetchErrorMsg', + 'xpack.stackConnectors.components.serviceNow.fetchErrorMsg', { defaultMessage: 'Failed to fetch. Check the URL or the CORS configuration of your ServiceNow instance.', @@ -155,7 +152,7 @@ export const FETCH_ERROR = i18n.translate( ); export const INSTALLATION_CALLOUT_TITLE = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.installationCalloutTitle', + 'xpack.stackConnectors.components.serviceNow.installationCalloutTitle', { defaultMessage: 'To use this connector, first install the Elastic app from the ServiceNow app store.', @@ -163,218 +160,206 @@ export const INSTALLATION_CALLOUT_TITLE = i18n.translate( ); export const UPDATE_SUCCESS_TOAST_TITLE = (connectorName: string) => - i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.updateSuccessToastTitle', - { - defaultMessage: '{connectorName} connector updated', - values: { - connectorName, - }, - } - ); + i18n.translate('xpack.stackConnectors.components.serviceNow.updateSuccessToastTitle', { + defaultMessage: '{connectorName} connector updated', + values: { + connectorName, + }, + }); export const UPDATE_SUCCESS_TOAST_TEXT = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.updateCalloutText', + 'xpack.stackConnectors.components.serviceNow.updateCalloutText', { defaultMessage: 'Connector has been updated.', } ); export const VISIT_SN_STORE = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.visitSNStore', + 'xpack.stackConnectors.components.serviceNow.visitSNStore', { defaultMessage: 'Visit ServiceNow app store', } ); export const SETUP_DEV_INSTANCE = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.setupDevInstance', + 'xpack.stackConnectors.components.serviceNow.setupDevInstance', { defaultMessage: 'setup a developer instance', } ); export const SN_INSTANCE_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.snInstanceLabel', + 'xpack.stackConnectors.components.serviceNow.snInstanceLabel', { defaultMessage: 'ServiceNow instance', } ); -export const UNKNOWN = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.unknown', - { - defaultMessage: 'UNKNOWN', - } -); +export const UNKNOWN = i18n.translate('xpack.stackConnectors.components.serviceNow.unknown', { + defaultMessage: 'UNKNOWN', +}); export const CORRELATION_ID = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.correlationID', + 'xpack.stackConnectors.components.serviceNow.correlationID', { defaultMessage: 'Correlation ID (optional)', } ); export const CORRELATION_DISPLAY = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.correlationDisplay', + 'xpack.stackConnectors.components.serviceNow.correlationDisplay', { defaultMessage: 'Correlation display (optional)', } ); -export const EVENT = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenowITOM.event', - { - defaultMessage: 'Event', - } -); +export const EVENT = i18n.translate('xpack.stackConnectors.components.serviceNowITOM.event', { + defaultMessage: 'Event', +}); /** * ITOM */ export const SOURCE = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.sourceTextAreaFieldLabel', + 'xpack.stackConnectors.components.serviceNow.sourceTextAreaFieldLabel', { defaultMessage: 'Source', } ); export const EVENT_CLASS = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.eventClassTextAreaFieldLabel', + 'xpack.stackConnectors.components.serviceNow.eventClassTextAreaFieldLabel', { defaultMessage: 'Source instance', } ); export const RESOURCE = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.resourceTextAreaFieldLabel', + 'xpack.stackConnectors.components.serviceNow.resourceTextAreaFieldLabel', { defaultMessage: 'Resource', } ); export const NODE = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.nodeTextAreaFieldLabel', + 'xpack.stackConnectors.components.serviceNow.nodeTextAreaFieldLabel', { defaultMessage: 'Node', } ); export const METRIC_NAME = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.metricNameTextAreaFieldLabel', + 'xpack.stackConnectors.components.serviceNow.metricNameTextAreaFieldLabel', { defaultMessage: 'Metric name', } ); export const TYPE = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.typeTextAreaFieldLabel', + 'xpack.stackConnectors.components.serviceNow.typeTextAreaFieldLabel', { defaultMessage: 'Type', } ); export const MESSAGE_KEY = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.messageKeyTextAreaFieldLabel', + 'xpack.stackConnectors.components.serviceNow.messageKeyTextAreaFieldLabel', { defaultMessage: 'Message key', } ); export const SEVERITY_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.requiredSeverityTextField', + 'xpack.stackConnectors.components.serviceNow.requiredSeverityTextField', { defaultMessage: 'Severity is required.', } ); export const SEVERITY_REQUIRED_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.severityRequiredSelectFieldLabel', + 'xpack.stackConnectors.components.serviceNow.severityRequiredSelectFieldLabel', { defaultMessage: 'Severity (required)', } ); export const CLIENTID_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.clientIdTextFieldLabel', + 'xpack.stackConnectors.components.serviceNow.clientIdTextFieldLabel', { defaultMessage: 'Client ID', } ); export const CLIENTSECRET_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.clientSecretTextFieldLabel', + 'xpack.stackConnectors.components.serviceNow.clientSecretTextFieldLabel', { defaultMessage: 'Client Secret', } ); export const KEY_ID_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.keyIdTextFieldLabel', + 'xpack.stackConnectors.components.serviceNow.keyIdTextFieldLabel', { defaultMessage: 'JWT Verifier Key ID', } ); export const USER_IDENTIFIER_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.userEmailTextFieldLabel', + 'xpack.stackConnectors.components.serviceNow.userEmailTextFieldLabel', { defaultMessage: 'User Identifier', } ); export const PRIVATE_KEY_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.privateKeyTextFieldLabel', + 'xpack.stackConnectors.components.serviceNow.privateKeyTextFieldLabel', { defaultMessage: 'Private Key', } ); export const PRIVATE_KEY_PASSWORD_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.privateKeyPassTextFieldLabel', + 'xpack.stackConnectors.components.serviceNow.privateKeyPassTextFieldLabel', { defaultMessage: 'Private Key Password', } ); export const PRIVATE_KEY_PASSWORD_HELPER_TEXT = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.privateKeyPassLabelHelpText', + 'xpack.stackConnectors.components.serviceNow.privateKeyPassLabelHelpText', { defaultMessage: 'This is only required if you have set a password on your private key', } ); export const CLIENTID_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.requiredClientIdTextField', + 'xpack.stackConnectors.components.serviceNow.requiredClientIdTextField', { defaultMessage: 'Client ID is required.', } ); export const PRIVATE_KEY_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.requiredPrivateKeyTextField', + 'xpack.stackConnectors.components.serviceNow.requiredPrivateKeyTextField', { defaultMessage: 'Private Key is required.', } ); export const KEYID_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.requiredKeyIdTextField', + 'xpack.stackConnectors.components.serviceNow.requiredKeyIdTextField', { defaultMessage: 'JWT Verifier Key ID is required.', } ); export const USER_IDENTIFIER_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.requiredUserIdentifierTextField', + 'xpack.stackConnectors.components.serviceNow.requiredUserIdentifierTextField', { defaultMessage: 'User Identifier is required.', } ); -export const IS_OAUTH = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.servicenow.useOAuth', - { - defaultMessage: 'Use OAuth authentication', - } -); +export const IS_OAUTH = i18n.translate('xpack.stackConnectors.components.serviceNow.useOAuth', { + defaultMessage: 'Use OAuth authentication', +}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/types.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/types.ts similarity index 92% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/types.ts rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/types.ts index e6fbcf6e81939..f10de69252f9d 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/types.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/types.ts @@ -5,12 +5,12 @@ * 2.0. */ +import { UserConfiguredActionConnector } from '@kbn/triggers-actions-ui-plugin/public/types'; import type { ExecutorSubActionPushParamsITSM, ExecutorSubActionPushParamsSIR, ExecutorSubActionAddEventParams, -} from '@kbn/stack-connectors-plugin/server/connector_types/cases/servicenow/types'; -import { UserConfiguredActionConnector } from '../../../../types'; +} from '../../../../server/connector_types/cases/servicenow/types'; export type ServiceNowActionConnector = UserConfiguredActionConnector< ServiceNowConfig, diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/update_connector.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/update_connector.test.tsx similarity index 99% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/update_connector.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/update_connector.test.tsx index 219ba68114852..9a6d7c26e25f0 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/update_connector.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/update_connector.test.tsx @@ -13,7 +13,7 @@ import { Props, UpdateConnector } from './update_connector'; import { act } from 'react-dom/test-utils'; import { render, act as reactAct } from '@testing-library/react'; -jest.mock('../../../../common/lib/kibana'); +jest.mock('@kbn/triggers-actions-ui-plugin/public/common/lib/kibana'); const mountUpdateConnector = (props: Partial = {}, isOAuth: boolean = false) => { return mountWithIntl( diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/update_connector.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/update_connector.tsx similarity index 86% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/update_connector.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/update_connector.tsx index 936e12a564b4a..84bfba31ca56b 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/update_connector.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/update_connector.tsx @@ -21,58 +21,55 @@ import { } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; -import { snExternalServiceConfig } from '@kbn/stack-connectors-plugin/common/servicenow_config'; import { useForm, Form } from '@kbn/es-ui-shared-plugin/static/forms/hook_form_lib'; +import { snExternalServiceConfig } from '../../../../common/servicenow_config'; import { CredentialsApiUrl } from './credentials_api_url'; import { CredentialsAuth, OAuth } from './auth_types'; import { SNStoreLink } from './sn_store_button'; import { ApplicationRequiredCallout } from './application_required_callout'; import { ServiceNowConfig, ServiceNowSecrets } from './types'; -const title = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.updateFormTitle', - { - defaultMessage: 'Update ServiceNow connector', - } -); +const title = i18n.translate('xpack.stackConnectors.components.serviceNow.updateFormTitle', { + defaultMessage: 'Update ServiceNow connector', +}); const step1InstallTitle = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.updateFormInstallTitle', + 'xpack.stackConnectors.components.serviceNow.updateFormInstallTitle', { defaultMessage: 'Install the Elastic ServiceNow app', } ); const step2InstanceUrlTitle = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.updateFormUrlTitle', + 'xpack.stackConnectors.components.serviceNow.updateFormUrlTitle', { defaultMessage: 'Enter your ServiceNow instance URL', } ); const step3CredentialsTitle = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.updateFormCredentialsTitle', + 'xpack.stackConnectors.components.serviceNow.updateFormCredentialsTitle', { defaultMessage: 'Provide authentication credentials', } ); const cancelButtonText = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.cancelButtonText', + 'xpack.stackConnectors.components.serviceNow.cancelButtonText', { defaultMessage: 'Cancel', } ); const confirmButtonText = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.confirmButtonText', + 'xpack.stackConnectors.components.serviceNow.confirmButtonText', { defaultMessage: 'Update', } ); const warningMessage = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.warningMessage', + 'xpack.stackConnectors.components.serviceNow.warningMessage', { defaultMessage: 'This updates all instances of this connector and cannot be reversed.', } @@ -144,7 +141,7 @@ const UpdateConnectorComponent: React.FC = ({ title: step1InstallTitle, children: ( ; const getChoicesMock = getChoices as jest.Mock; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/use_choices.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/use_choices.tsx similarity index 95% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/use_choices.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/use_choices.tsx index e3b10896e8707..9b1b0e453f4da 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/use_choices.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/use_choices.tsx @@ -8,7 +8,7 @@ import { useCallback, useMemo, useState } from 'react'; import { HttpSetup, IToasts } from '@kbn/core/public'; -import { ActionConnector } from '../../../../types'; +import { ActionConnector } from '@kbn/triggers-actions-ui-plugin/public'; import { Choice, Fields } from './types'; import { useGetChoices } from './use_get_choices'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/use_get_app_info.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/use_get_app_info.test.tsx similarity index 97% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/use_get_app_info.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/use_get_app_info.test.tsx index f8e9a2c4bac1a..c8c061c9d07f1 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/use_get_app_info.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/use_get_app_info.test.tsx @@ -13,7 +13,7 @@ import { ServiceNowActionConnector } from './types'; import { httpServiceMock } from '@kbn/core/public/mocks'; jest.mock('./api'); -jest.mock('../../../../common/lib/kibana'); +jest.mock('@kbn/triggers-actions-ui-plugin/public/common/lib/kibana'); const getAppInfoMock = getAppInfo as jest.Mock; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/use_get_app_info.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/use_get_app_info.tsx similarity index 100% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/use_get_app_info.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/use_get_app_info.tsx diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/use_get_choices.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/use_get_choices.test.tsx similarity index 95% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/use_get_choices.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/use_get_choices.test.tsx index 06956e6402300..b4d204c117b50 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/use_get_choices.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/use_get_choices.test.tsx @@ -7,13 +7,13 @@ import { renderHook } from '@testing-library/react-hooks'; -import { useKibana } from '../../../../common/lib/kibana'; -import { ActionConnector } from '../../../../types'; +import { useKibana } from '@kbn/triggers-actions-ui-plugin/public'; +import { ActionConnector } from '@kbn/triggers-actions-ui-plugin/public/types'; import { useGetChoices, UseGetChoices, UseGetChoicesProps } from './use_get_choices'; import { getChoices } from './api'; jest.mock('./api'); -jest.mock('../../../../common/lib/kibana'); +jest.mock('@kbn/triggers-actions-ui-plugin/public/common/lib/kibana'); const useKibanaMock = useKibana as jest.Mocked; const getChoicesMock = getChoices as jest.Mock; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/use_get_choices.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/use_get_choices.tsx similarity index 97% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/use_get_choices.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/use_get_choices.tsx index e81e0efe56a42..e2f0117e78ce4 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/use_get_choices.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/servicenow/use_get_choices.tsx @@ -7,7 +7,7 @@ import { useState, useEffect, useRef, useCallback } from 'react'; import { HttpSetup, IToasts } from '@kbn/core/public'; -import { ActionConnector } from '../../../../types'; +import { ActionConnector } from '@kbn/triggers-actions-ui-plugin/public'; import { getChoices } from './api'; import { Choice } from './types'; import * as i18n from './translations'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/api.test.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/api.test.ts similarity index 100% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/api.test.ts rename to x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/api.test.ts diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/api.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/api.ts similarity index 100% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/api.ts rename to x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/api.ts diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/helpers.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/helpers.ts similarity index 100% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/helpers.ts rename to x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/helpers.ts diff --git a/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/index.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/index.ts new file mode 100644 index 0000000000000..0819c1b731ac6 --- /dev/null +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/index.ts @@ -0,0 +1,8 @@ +/* + * 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. + */ + +export { getConnectorType as getSwimlaneConnectorType } from './swimlane'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/logo.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/logo.tsx similarity index 97% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/logo.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/logo.tsx index 572ff62d52f82..c86f97bf93a7c 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/logo.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/logo.tsx @@ -6,7 +6,7 @@ */ import React from 'react'; -import { LogoProps } from '../types'; +import { LogoProps } from '../../types'; const Logo = (props: LogoProps) => { return ( diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/mocks.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/mocks.ts similarity index 100% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/mocks.ts rename to x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/mocks.ts diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/steps/index.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/steps/index.ts similarity index 100% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/steps/index.ts rename to x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/steps/index.ts diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/steps/swimlane_connection.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/steps/swimlane_connection.tsx similarity index 91% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/steps/swimlane_connection.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/steps/swimlane_connection.tsx index 1dbb2f21a4fb8..2a32a7cace748 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/steps/swimlane_connection.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/steps/swimlane_connection.tsx @@ -11,8 +11,7 @@ import { UseField } from '@kbn/es-ui-shared-plugin/static/forms/hook_form_lib'; import { TextField } from '@kbn/es-ui-shared-plugin/static/forms/components'; import { fieldValidators } from '@kbn/es-ui-shared-plugin/static/forms/helpers'; import { FormattedMessage } from '@kbn/i18n-react'; -import { PasswordField } from '../../../password_field'; -import { useKibana } from '../../../../../common/lib/kibana'; +import { PasswordField, useKibana } from '@kbn/triggers-actions-ui-plugin/public'; import * as i18n from '../translations'; interface Props { @@ -73,7 +72,7 @@ const SwimlaneConnectionComponent: React.FunctionComponent = ({ readOnly target="_blank" > diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/steps/swimlane_fields.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/steps/swimlane_fields.tsx similarity index 99% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/steps/swimlane_fields.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/steps/swimlane_fields.tsx index 10afa07c65a16..4afb2eacc8918 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/steps/swimlane_fields.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/steps/swimlane_fields.tsx @@ -16,6 +16,7 @@ import { } from '@kbn/es-ui-shared-plugin/static/forms/hook_form_lib'; import { ComboBoxField } from '@kbn/es-ui-shared-plugin/static/forms/components'; +import { ButtonGroupField } from '@kbn/triggers-actions-ui-plugin/public'; import * as i18n from '../translations'; import { MappingConfigurationKeys, @@ -23,7 +24,6 @@ import { SwimlaneFieldMappingConfig, } from '../types'; import { isRequiredField, isValidFieldForConnector } from '../helpers'; -import { ButtonGroupField } from '../../../button_group_field'; const SINGLE_SELECTION = { asPlainText: true }; const EMPTY_COMBO_BOX_ARRAY: Array> | undefined = []; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/swimlane.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/swimlane.test.tsx similarity index 55% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/swimlane.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/swimlane.test.tsx index 479496b57ba83..13b68388573a7 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/swimlane.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/swimlane.test.tsx @@ -5,26 +5,26 @@ * 2.0. */ -import { TypeRegistry } from '../../../type_registry'; -import { registerBuiltInActionTypes } from '..'; -import { ActionTypeModel } from '../../../../types'; -import { registrationServicesMock } from '../../../../mocks'; +import { TypeRegistry } from '@kbn/triggers-actions-ui-plugin/public/application/type_registry'; +import { registerConnectorTypes } from '../..'; +import type { ActionTypeModel as ConnectorTypeModel } from '@kbn/triggers-actions-ui-plugin/public/types'; +import { registrationServicesMock } from '../../../mocks'; -const ACTION_TYPE_ID = '.swimlane'; -let actionTypeModel: ActionTypeModel; +const CONNECTOR_TYPE_ID = '.swimlane'; +let connectorTypeModel: ConnectorTypeModel; beforeAll(() => { - const actionTypeRegistry = new TypeRegistry(); - registerBuiltInActionTypes({ actionTypeRegistry, services: registrationServicesMock }); - const getResult = actionTypeRegistry.get(ACTION_TYPE_ID); + const connectorTypeRegistry = new TypeRegistry(); + registerConnectorTypes({ connectorTypeRegistry, services: registrationServicesMock }); + const getResult = connectorTypeRegistry.get(CONNECTOR_TYPE_ID); if (getResult !== null) { - actionTypeModel = getResult; + connectorTypeModel = getResult; } }); -describe('actionTypeRegistry.get() works', () => { - test('action type static data is as expected', () => { - expect(actionTypeModel.id).toEqual(ACTION_TYPE_ID); +describe('connectorTypeRegistry.get() works', () => { + test('connector type static data is as expected', () => { + expect(connectorTypeModel.id).toEqual(CONNECTOR_TYPE_ID); }); }); @@ -37,7 +37,7 @@ describe('swimlane action params validation', () => { }, }; - expect(await actionTypeModel.validateParams(actionParams)).toEqual({ + expect(await connectorTypeModel.validateParams(actionParams)).toEqual({ errors: { 'subActionParams.incident.ruleName': [], 'subActionParams.incident.alertId': [], @@ -50,7 +50,7 @@ describe('swimlane action params validation', () => { subActionParams: { incident: {} }, }; - expect(await actionTypeModel.validateParams(actionParams)).toEqual({ + expect(await connectorTypeModel.validateParams(actionParams)).toEqual({ errors: { 'subActionParams.incident.ruleName': ['Rule name is required.'], 'subActionParams.incident.alertId': ['Alert ID is required.'], @@ -63,7 +63,7 @@ describe('swimlane action params validation', () => { subActionParams: {}, }; - expect(await actionTypeModel.validateParams(actionParams)).toEqual({ + expect(await connectorTypeModel.validateParams(actionParams)).toEqual({ errors: { 'subActionParams.incident.ruleName': [], 'subActionParams.incident.alertId': [], diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/swimlane.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/swimlane.tsx similarity index 85% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/swimlane.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/swimlane.tsx index 5a072a54efb67..594c2e83c891f 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/swimlane.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/swimlane.tsx @@ -7,24 +7,27 @@ import { lazy } from 'react'; import { i18n } from '@kbn/i18n'; -import { ActionTypeModel, GenericValidationResult } from '../../../../types'; +import type { + ActionTypeModel as ConnectorTypeModel, + GenericValidationResult, +} from '@kbn/triggers-actions-ui-plugin/public'; import { SwimlaneConfig, SwimlaneSecrets, SwimlaneActionParams } from './types'; export const SW_SELECT_MESSAGE_TEXT = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.selectMessageText', + 'xpack.stackConnectors.components.swimlane.selectMessageText', { defaultMessage: 'Create record in Swimlane', } ); export const SW_ACTION_TYPE_TITLE = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.actionTypeTitle', + 'xpack.stackConnectors.components.swimlane.connectorTypeTitle', { defaultMessage: 'Create Swimlane Record', } ); -export function getActionType(): ActionTypeModel< +export function getConnectorType(): ConnectorTypeModel< SwimlaneConfig, SwimlaneSecrets, SwimlaneActionParams diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/swimlane_connectors.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/swimlane_connectors.test.tsx similarity index 99% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/swimlane_connectors.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/swimlane_connectors.test.tsx index bbe86a4fe7fe1..c36b786863e3e 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/swimlane_connectors.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/swimlane_connectors.test.tsx @@ -11,12 +11,12 @@ import { act } from 'react-dom/test-utils'; import SwimlaneActionConnectorFields from './swimlane_connectors'; import { useGetApplication } from './use_get_application'; import { applicationFields, mappings } from './mocks'; -import { ConnectorFormTestProvider } from '../test_utils'; +import { ConnectorFormTestProvider } from '../../lib/test_utils'; import { waitFor } from '@testing-library/dom'; import userEvent from '@testing-library/user-event'; import { render } from '@testing-library/react'; -jest.mock('../../../../common/lib/kibana'); +jest.mock('@kbn/triggers-actions-ui-plugin/public/common/lib/kibana'); jest.mock('./use_get_application'); const useGetApplicationMock = useGetApplication as jest.Mock; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/swimlane_connectors.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/swimlane_connectors.tsx similarity index 96% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/swimlane_connectors.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/swimlane_connectors.tsx index af59b9517b91d..a7533f912ed46 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/swimlane_connectors.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/swimlane_connectors.tsx @@ -15,8 +15,8 @@ import { EuiStepStatus, } from '@elastic/eui'; import { useFormContext, useFormData } from '@kbn/es-ui-shared-plugin/static/forms/hook_form_lib'; -import { useKibana } from '../../../../common/lib/kibana'; -import { ActionConnectorFieldsProps } from '../../../../types'; +import type { ActionConnectorFieldsProps } from '@kbn/triggers-actions-ui-plugin/public'; +import { useKibana } from '@kbn/triggers-actions-ui-plugin/public'; import { SwimlaneFieldMappingConfig } from './types'; import { SwimlaneConnection, SwimlaneFields } from './steps'; import { useGetApplication } from './use_get_application'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/swimlane_params.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/swimlane_params.test.tsx similarity index 100% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/swimlane_params.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/swimlane_params.test.tsx diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/swimlane_params.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/swimlane_params.tsx similarity index 95% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/swimlane_params.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/swimlane_params.tsx index 098e6490f3fe2..1faa8c8bbabf4 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/swimlane_params.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/swimlane_params.tsx @@ -7,11 +7,13 @@ import React, { useCallback, useEffect, useRef, useMemo } from 'react'; import { EuiCallOut, EuiFormRow, EuiSpacer } from '@elastic/eui'; +import type { ActionParamsProps } from '@kbn/triggers-actions-ui-plugin/public'; +import { + TextAreaWithMessageVariables, + TextFieldWithMessageVariables, +} from '@kbn/triggers-actions-ui-plugin/public'; import * as i18n from './translations'; -import { ActionParamsProps } from '../../../../types'; import { SwimlaneActionConnector, SwimlaneActionParams, SwimlaneConnectorType } from './types'; -import { TextFieldWithMessageVariables } from '../../text_field_with_message_variables'; -import { TextAreaWithMessageVariables } from '../../text_area_with_message_variables'; const SwimlaneParamsFields: React.FunctionComponent> = ({ actionParams, diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/translations.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/translations.ts similarity index 53% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/translations.ts rename to x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/translations.ts index 631e69e8e7a66..08d4a9fd198d7 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/translations.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/translations.ts @@ -8,140 +8,137 @@ import { i18n } from '@kbn/i18n'; export const SW_REQUIRED_RULE_NAME = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredRuleName', + 'xpack.stackConnectors.components.swimlane.error.requiredRuleName', { defaultMessage: 'Rule name is required.', } ); export const SW_REQUIRED_APP_ID_TEXT = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredAppIdText', + 'xpack.stackConnectors.components.swimlane.error.requiredAppIdText', { defaultMessage: 'An App ID is required.', } ); export const SW_GET_APPLICATION_API_ERROR = (id: string | null) => - i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlane.unableToGetApplicationMessage', - { - defaultMessage: 'Unable to get application with id {id}', - values: { id }, - } - ); + i18n.translate('xpack.stackConnectors.components.swimlane.unableToGetApplicationMessage', { + defaultMessage: 'Unable to get application with id {id}', + values: { id }, + }); export const SW_GET_APPLICATION_API_NO_FIELDS_ERROR = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlane.unableToGetApplicationFieldsMessage', + 'xpack.stackConnectors.components.swimlane.unableToGetApplicationFieldsMessage', { defaultMessage: 'Unable to get application fields', } ); export const SW_API_URL_TEXT_FIELD_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.apiUrlTextFieldLabel', + 'xpack.stackConnectors.components.swimlane.apiUrlTextFieldLabel', { defaultMessage: 'API Url', } ); export const SW_API_URL_INVALID = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.invalidApiUrlTextField', + 'xpack.stackConnectors.components.swimlane.invalidApiUrlTextField', { defaultMessage: 'URL is invalid.', } ); export const SW_APP_ID_TEXT_FIELD_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.appIdTextFieldLabel', + 'xpack.stackConnectors.components.swimlane.appIdTextFieldLabel', { defaultMessage: 'Application ID', } ); export const SW_API_TOKEN_TEXT_FIELD_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.apiTokenTextFieldLabel', + 'xpack.stackConnectors.components.swimlane.apiTokenTextFieldLabel', { defaultMessage: 'API Token', } ); export const SW_MAPPING_TITLE_TEXT_FIELD_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.mappingTitleTextFieldLabel', + 'xpack.stackConnectors.components.swimlane.mappingTitleTextFieldLabel', { defaultMessage: 'Configure Field Mappings', } ); export const SW_SEVERITY_FIELD_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.severityFieldLabel', + 'xpack.stackConnectors.components.swimlane.severityFieldLabel', { defaultMessage: 'Severity', } ); export const SW_RULE_NAME_FIELD_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.ruleNameFieldLabel', + 'xpack.stackConnectors.components.swimlane.ruleNameFieldLabel', { defaultMessage: 'Rule name', } ); export const SW_ALERT_ID_FIELD_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.alertIdFieldLabel', + 'xpack.stackConnectors.components.swimlane.alertIdFieldLabel', { defaultMessage: 'Alert ID', } ); export const SW_CASE_ID_FIELD_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.caseIdFieldLabel', + 'xpack.stackConnectors.components.swimlane.caseIdFieldLabel', { defaultMessage: 'Case ID', } ); export const SW_CASE_NAME_FIELD_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.caseNameFieldLabel', + 'xpack.stackConnectors.components.swimlane.caseNameFieldLabel', { defaultMessage: 'Case name', } ); export const SW_COMMENTS_FIELD_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.commentsFieldLabel', + 'xpack.stackConnectors.components.swimlane.commentsFieldLabel', { defaultMessage: 'Comments', } ); export const SW_DESCRIPTION_FIELD_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.descriptionFieldLabel', + 'xpack.stackConnectors.components.swimlane.descriptionFieldLabel', { defaultMessage: 'Description', } ); export const SW_CONFIGURE_CONNECTION_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.configureConnectionLabel', + 'xpack.stackConnectors.components.swimlane.configureConnectionLabel', { defaultMessage: 'Configure API Connection' } ); export const SW_CONNECTOR_TYPE_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.connectorType', + 'xpack.stackConnectors.components.swimlane.connectorType', { defaultMessage: 'Connector Type', } ); export const EMPTY_MAPPING_WARNING_TITLE = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.emptyMappingWarningTitle', + 'xpack.stackConnectors.components.swimlane.emptyMappingWarningTitle', { defaultMessage: 'This connector has missing field mappings', } ); export const EMPTY_MAPPING_WARNING_DESC = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.emptyMappingWarningDesc', + 'xpack.stackConnectors.components.swimlane.emptyMappingWarningDesc', { defaultMessage: 'This connector cannot be selected because it is missing the required alert field mappings. You can edit this connector to add required field mappings or select a connector of type Alerts.', @@ -149,63 +146,57 @@ export const EMPTY_MAPPING_WARNING_DESC = i18n.translate( ); export const SW_REQUIRED_SEVERITY = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredSeverity', + 'xpack.stackConnectors.components.swimlane.error.requiredSeverity', { defaultMessage: 'Severity is required.', } ); export const SW_REQUIRED_CASE_NAME = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredCaseName', + 'xpack.stackConnectors.components.swimlane.error.requiredCaseName', { defaultMessage: 'Case name is required.', } ); export const SW_REQUIRED_CASE_ID = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredCaseID', + 'xpack.stackConnectors.components.swimlane.error.requiredCaseID', { defaultMessage: 'Case ID is required.', } ); export const SW_REQUIRED_COMMENTS = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredComments', + 'xpack.stackConnectors.components.swimlane.error.requiredComments', { defaultMessage: 'Comments are required.', } ); export const SW_REQUIRED_DESCRIPTION = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredDescription', + 'xpack.stackConnectors.components.swimlane.error.requiredDescription', { defaultMessage: 'Description is required.', } ); export const SW_REQUIRED_ALERT_ID = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredAlertID', + 'xpack.stackConnectors.components.swimlane.error.requiredAlertID', { defaultMessage: 'Alert ID is required.', } ); -export const SW_BACK = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.prevStep', - { - defaultMessage: 'Back', - } -); +export const SW_BACK = i18n.translate('xpack.stackConnectors.components.swimlane.prevStep', { + defaultMessage: 'Back', +}); -export const SW_NEXT = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.nextStep', - { - defaultMessage: 'Next', - } -); +export const SW_NEXT = i18n.translate('xpack.stackConnectors.components.swimlane.nextStep', { + defaultMessage: 'Next', +}); export const SW_FIELDS_BUTTON_HELP_TEXT = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.nextStepHelpText', + 'xpack.stackConnectors.components.swimlane.nextStepHelpText', { defaultMessage: 'If field mappings are not configured, Swimlane connector type will be set to all.', diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/types.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/types.ts similarity index 88% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/types.ts rename to x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/types.ts index cf77b094e5a12..398a63164f9e4 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/types.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/types.ts @@ -5,11 +5,11 @@ * 2.0. */ +import { UserConfiguredActionConnector } from '@kbn/triggers-actions-ui-plugin/public/types'; import type { ExecutorSubActionPushParams, MappingConfigType, -} from '@kbn/stack-connectors-plugin/server/connector_types/cases/swimlane/types'; -import { UserConfiguredActionConnector } from '../../../../types'; +} from '../../../../server/connector_types/cases/swimlane/types'; export type SwimlaneActionConnector = UserConfiguredActionConnector< SwimlaneConfig, diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/use_get_application.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/use_get_application.test.tsx similarity index 97% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/use_get_application.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/use_get_application.test.tsx index f852d40ebef2f..d56f0d0a1d7a5 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/use_get_application.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/use_get_application.test.tsx @@ -7,12 +7,12 @@ import { renderHook, act } from '@testing-library/react-hooks'; -import { useKibana } from '../../../../common/lib/kibana'; +import { useKibana } from '@kbn/triggers-actions-ui-plugin/public/common/lib/kibana'; import { getApplication } from './api'; import { useGetApplication, UseGetApplication } from './use_get_application'; jest.mock('./api'); -jest.mock('../../../../common/lib/kibana'); +jest.mock('@kbn/triggers-actions-ui-plugin/public/common/lib/kibana'); const useKibanaMock = useKibana as jest.Mocked; const getApplicationMock = getApplication as jest.Mock; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/use_get_application.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/use_get_application.tsx similarity index 100% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/use_get_application.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/swimlane/use_get_application.tsx diff --git a/x-pack/plugins/stack_connectors/public/connector_types/cases/xmatters/index.ts b/x-pack/plugins/stack_connectors/public/connector_types/cases/xmatters/index.ts new file mode 100644 index 0000000000000..0faa7732194c5 --- /dev/null +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/xmatters/index.ts @@ -0,0 +1,8 @@ +/* + * 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. + */ + +export { getConnectorType as getXmattersConnectorType } from './xmatters'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/xmatters/logo.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/xmatters/logo.tsx similarity index 99% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/xmatters/logo.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/xmatters/logo.tsx index dad43f666ad0a..438710f2516c7 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/xmatters/logo.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/xmatters/logo.tsx @@ -6,7 +6,7 @@ */ import React from 'react'; -import { LogoProps } from '../types'; +import { LogoProps } from '../../types'; const Logo = (props: LogoProps) => ( { + const connectorTypeRegistry = new TypeRegistry(); + registerConnectorTypes({ connectorTypeRegistry, services: registrationServicesMock }); + const getResult = connectorTypeRegistry.get(CONNECTOR_TYPE_ID); + if (getResult !== null) { + connectorTypeModel = getResult; + } +}); + +describe('connectorTypeRegistry.get() works', () => { + test('connector type static data is as expected', () => { + expect(connectorTypeModel.id).toEqual(CONNECTOR_TYPE_ID); + expect(connectorTypeModel.actionTypeTitle).toEqual('xMatters data'); + }); +}); + +describe('xmatters action params validation', () => { + test('action params validation succeeds when action params is valid', async () => { + const actionParams = { + alertActionGroupName: 'Small t-shirt', + signalId: 'c9437cab-6a5b-45e8-bc8a-f4a8af440e97', + ruleName: 'Test xMatters', + date: '2022-01-18T19:01:08.818Z', + severity: 'high', + spaceId: 'default', + tags: 'test1, test2', + }; + + expect(await connectorTypeModel.validateParams(actionParams)).toEqual({ + errors: { alertActionGroupName: [], signalId: [] }, + }); + }); +}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/xmatters/xmatters.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/xmatters/xmatters.tsx similarity index 75% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/xmatters/xmatters.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/xmatters/xmatters.tsx index 9f2955479d52e..2ad23f91b7c3f 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/xmatters/xmatters.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/xmatters/xmatters.tsx @@ -7,11 +7,14 @@ import { lazy } from 'react'; import { i18n } from '@kbn/i18n'; -import { ActionTypeModel, GenericValidationResult } from '../../../../types'; -import { XmattersActionParams, XmattersConfig, XmattersSecrets } from '../types'; -import { AlertProvidedActionVariables } from '../../../lib/action_variables'; +import type { + ActionTypeModel as ConnectorTypeModel, + GenericValidationResult, +} from '@kbn/triggers-actions-ui-plugin/public'; +import { AlertProvidedActionVariables } from '@kbn/triggers-actions-ui-plugin/public'; +import { XmattersActionParams, XmattersConfig, XmattersSecrets } from '../../types'; -export function getActionType(): ActionTypeModel< +export function getConnectorType(): ConnectorTypeModel< XmattersConfig, XmattersSecrets, XmattersActionParams @@ -19,14 +22,11 @@ export function getActionType(): ActionTypeModel< return { id: '.xmatters', iconClass: lazy(() => import('./logo')), - selectMessage: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.selectMessageText', - { - defaultMessage: 'Trigger an xMatters workflow.', - } - ), + selectMessage: i18n.translate('xpack.stackConnectors.components.xmatters.selectMessageText', { + defaultMessage: 'Trigger an xMatters workflow.', + }), actionTypeTitle: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.actionTypeTitle', + 'xpack.stackConnectors.components.xmatters.connectorTypeTitle', { defaultMessage: 'xMatters data', } diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/xmatters/xmatters_connectors.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/xmatters/xmatters_connectors.test.tsx similarity index 99% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/xmatters/xmatters_connectors.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/xmatters/xmatters_connectors.test.tsx index cef4c2c2bef81..be7a6dc0ebdb4 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/xmatters/xmatters_connectors.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/xmatters/xmatters_connectors.test.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { mountWithIntl } from '@kbn/test-jest-helpers'; import XmattersActionConnectorFields from './xmatters_connectors'; -import { ConnectorFormTestProvider, waitForComponentToUpdate } from '../test_utils'; +import { ConnectorFormTestProvider, waitForComponentToUpdate } from '../../lib/test_utils'; import userEvent from '@testing-library/user-event'; import { act } from 'react-dom/test-utils'; import { render } from '@testing-library/react'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/xmatters/xmatters_connectors.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/xmatters/xmatters_connectors.tsx similarity index 89% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/xmatters/xmatters_connectors.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/xmatters/xmatters_connectors.tsx index 247a700876d14..881ea4c2164e2 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/xmatters/xmatters_connectors.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/xmatters/xmatters_connectors.tsx @@ -16,12 +16,14 @@ import { useFormData, } from '@kbn/es-ui-shared-plugin/static/forms/hook_form_lib'; import { TextField } from '@kbn/es-ui-shared-plugin/static/forms/components'; -import { ActionConnectorFieldsProps } from '../../../../types'; -import { XmattersAuthenticationType } from '../types'; -import { ButtonGroupField } from '../../button_group_field'; +import type { ActionConnectorFieldsProps } from '@kbn/triggers-actions-ui-plugin/public'; +import { + ButtonGroupField, + HiddenField, + PasswordField, +} from '@kbn/triggers-actions-ui-plugin/public'; +import { XmattersAuthenticationType } from '../../types'; import * as i18n from './translations'; -import { PasswordField } from '../../password_field'; -import { HiddenField } from '../../hidden_field'; const { emptyField, urlField } = fieldValidators; @@ -53,7 +55,7 @@ const XmattersUrlField: React.FC<{ path: string; readOnly: boolean }> = ({ path, label: i18n.URL_LABEL, helpText: ( ), @@ -99,7 +101,7 @@ const XmattersActionConnectorFields: React.FunctionComponent

@@ -133,7 +135,7 @@ const XmattersActionConnectorFields: React.FunctionComponent diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/xmatters/xmatters_params.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/xmatters/xmatters_params.test.tsx similarity index 96% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/xmatters/xmatters_params.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/xmatters/xmatters_params.test.tsx index 64c4b5ead81ae..500ee77efbd0d 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/xmatters/xmatters_params.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/xmatters/xmatters_params.test.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { mountWithIntl } from '@kbn/test-jest-helpers'; -import { XmattersSeverityOptions } from '../types'; +import { XmattersSeverityOptions } from '../../types'; import XmattersParamsFields from './xmatters_params'; describe('XmattersParamsFields renders', () => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/xmatters/xmatters_params.tsx b/x-pack/plugins/stack_connectors/public/connector_types/cases/xmatters/xmatters_params.tsx similarity index 68% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/xmatters/xmatters_params.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/cases/xmatters/xmatters_params.tsx index f66583ef32dd8..b97db2f349f8e 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/xmatters/xmatters_params.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/cases/xmatters/xmatters_params.tsx @@ -9,15 +9,15 @@ import React, { useEffect } from 'react'; import { i18n } from '@kbn/i18n'; import { EuiFlexGroup, EuiFlexItem, EuiFormRow, EuiSelect } from '@elastic/eui'; import { isUndefined } from 'lodash'; -import { ActionParamsProps } from '../../../../types'; -import { XmattersActionParams } from '../types'; -import { TextFieldWithMessageVariables } from '../../text_field_with_message_variables'; +import type { ActionParamsProps } from '@kbn/triggers-actions-ui-plugin/public'; +import { TextFieldWithMessageVariables } from '@kbn/triggers-actions-ui-plugin/public'; +import { XmattersActionParams } from '../../types'; const severityOptions = [ { value: 'critical', text: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.severitySelectCriticalOptionLabel', + 'xpack.stackConnectors.components.xmatters.severitySelectCriticalOptionLabel', { defaultMessage: 'Critical', } @@ -26,7 +26,7 @@ const severityOptions = [ { value: 'high', text: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.severitySelectHighOptionLabel', + 'xpack.stackConnectors.components.xmatters.severitySelectHighOptionLabel', { defaultMessage: 'High', } @@ -35,7 +35,7 @@ const severityOptions = [ { value: 'medium', text: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.severitySelectMediumOptionLabel', + 'xpack.stackConnectors.components.xmatters.severitySelectMediumOptionLabel', { defaultMessage: 'Medium', } @@ -43,17 +43,14 @@ const severityOptions = [ }, { value: 'low', - text: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.severitySelectLowOptionLabel', - { - defaultMessage: 'Low', - } - ), + text: i18n.translate('xpack.stackConnectors.components.xmatters.severitySelectLowOptionLabel', { + defaultMessage: 'Low', + }), }, { value: 'minimal', text: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.severitySelectMinimalOptionLabel', + 'xpack.stackConnectors.components.xmatters.severitySelectMinimalOptionLabel', { defaultMessage: 'Minimal', } @@ -91,12 +88,9 @@ const XmattersParamsFields: React.FunctionComponent ValidatedEmail[]; +} + +export function registerConnectorTypes({ + connectorTypeRegistry, + services, +}: { + connectorTypeRegistry: TriggersAndActionsUIPublicPluginSetup['actionTypeRegistry']; + services: RegistrationServices; +}) { + connectorTypeRegistry.register(getServerLogConnectorType()); + connectorTypeRegistry.register(getSlackConnectorType()); + connectorTypeRegistry.register(getEmailConnectorType(services)); + connectorTypeRegistry.register(getIndexConnectorType()); + connectorTypeRegistry.register(getPagerDutyConnectorType()); + connectorTypeRegistry.register(getSwimlaneConnectorType()); + connectorTypeRegistry.register(getCasesWebhookConnectorType()); + connectorTypeRegistry.register(getWebhookConnectorType()); + connectorTypeRegistry.register(getXmattersConnectorType()); + connectorTypeRegistry.register(getServiceNowITSMConnectorType()); + connectorTypeRegistry.register(getServiceNowITOMConnectorType()); + connectorTypeRegistry.register(getServiceNowSIRConnectorType()); + connectorTypeRegistry.register(getJiraConnectorType()); + connectorTypeRegistry.register(getResilientConnectorType()); + connectorTypeRegistry.register(getTeamsConnectorType()); +} diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/extract_action_variable.ts b/x-pack/plugins/stack_connectors/public/connector_types/lib/extract_action_variable.ts similarity index 100% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/extract_action_variable.ts rename to x-pack/plugins/stack_connectors/public/connector_types/lib/extract_action_variable.ts diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/rewrite_response_body.ts b/x-pack/plugins/stack_connectors/public/connector_types/lib/rewrite_response_body.ts similarity index 100% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/rewrite_response_body.ts rename to x-pack/plugins/stack_connectors/public/connector_types/lib/rewrite_response_body.ts diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/test_utils.tsx b/x-pack/plugins/stack_connectors/public/connector_types/lib/test_utils.tsx similarity index 80% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/test_utils.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/lib/test_utils.tsx index c1c5eaefaa42c..59a6d3808ff81 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/test_utils.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/lib/test_utils.tsx @@ -6,7 +6,6 @@ */ import React, { useCallback } from 'react'; -import { ReactWrapper } from 'enzyme'; import { of } from 'rxjs'; import { I18nProvider } from '@kbn/i18n-react'; import { EuiButton } from '@elastic/eui'; @@ -16,12 +15,12 @@ import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; import { render as reactRender, RenderOptions, RenderResult } from '@testing-library/react'; import { KibanaThemeProvider } from '@kbn/kibana-react-plugin/public'; -import { ConnectorServices } from '../../../types'; -import { TriggersAndActionsUiServices } from '../../..'; -import { createStartServicesMock } from '../../../common/lib/kibana/kibana_react.mock'; -import { ConnectorFormSchema } from '../../sections/action_connector_form/types'; -import { ConnectorFormFieldsGlobal } from '../../sections/action_connector_form/connector_form_fields_global'; -import { ConnectorProvider } from '../../context/connector_context'; +import { ConnectorServices } from '@kbn/triggers-actions-ui-plugin/public/types'; +import { TriggersAndActionsUiServices } from '@kbn/triggers-actions-ui-plugin/public'; +import { createStartServicesMock } from '@kbn/triggers-actions-ui-plugin/public/common/lib/kibana/kibana_react.mock'; +import { ConnectorFormSchema } from '@kbn/triggers-actions-ui-plugin/public/application/sections/action_connector_form/types'; +import { ConnectorFormFieldsGlobal } from '@kbn/triggers-actions-ui-plugin/public/application/sections/action_connector_form/connector_form_fields_global'; +import { ConnectorProvider } from '@kbn/triggers-actions-ui-plugin/public/application/context/connector_context'; interface FormTestProviderProps { children: React.ReactNode; @@ -81,16 +80,6 @@ const FormTestProviderComponent: React.FC = ({ ); }; -FormTestProviderComponent.displayName = 'FormTestProvider'; -export const FormTestProvider = React.memo(FormTestProviderComponent); - -export async function waitForComponentToPaint

(wrapper: ReactWrapper

, amount = 0) { - await act(async () => { - await new Promise((resolve) => setTimeout(resolve, amount)); - wrapper.update(); - }); -} - export const waitForComponentToUpdate = async () => await act(async () => { return Promise.resolve(); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/index.ts b/x-pack/plugins/stack_connectors/public/connector_types/security/index.ts similarity index 80% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/index.ts rename to x-pack/plugins/stack_connectors/public/connector_types/security/index.ts index ee207a6d8e8a0..1fec1c76430eb 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/jira/index.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/security/index.ts @@ -4,5 +4,3 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ - -export { getActionType as getJiraActionType } from './jira'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/api.ts b/x-pack/plugins/stack_connectors/public/connector_types/stack/email/api.ts similarity index 91% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/api.ts rename to x-pack/plugins/stack_connectors/public/connector_types/stack/email/api.ts index 913bda49fe53d..3323d3527428e 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/api.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/email/api.ts @@ -6,8 +6,8 @@ */ import { HttpSetup } from '@kbn/core/public'; -import { INTERNAL_BASE_STACK_CONNECTORS_API_PATH } from '../../../constants'; -import { EmailConfig } from '../types'; +import { INTERNAL_BASE_STACK_CONNECTORS_API_PATH } from '../../../../common'; +import { EmailConfig } from '../../types'; export async function getServiceConfig({ http, diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/email/email.test.tsx similarity index 74% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/email/email.test.tsx index 9e61d84f5fb31..4e67bdabef993 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/email/email.test.tsx @@ -5,9 +5,9 @@ * 2.0. */ -import { TypeRegistry } from '../../../type_registry'; -import { registerBuiltInActionTypes } from '..'; -import { ActionTypeModel } from '../../../../types'; +import { TypeRegistry } from '@kbn/triggers-actions-ui-plugin/public/application/type_registry'; +import { registerConnectorTypes } from '../..'; +import type { ActionTypeModel as ConnectorTypeModel } from '@kbn/triggers-actions-ui-plugin/public/types'; import { getEmailServices } from './email'; import { ValidatedEmail, @@ -16,8 +16,8 @@ import { MustacheInEmailRegExp, } from '@kbn/actions-plugin/common'; -const ACTION_TYPE_ID = '.email'; -let actionTypeModel: ActionTypeModel; +const CONNECTOR_TYPE_ID = '.email'; +let connectorTypeModel: ConnectorTypeModel; const RegistrationServices = { validateEmailAddresses: validateEmails, @@ -45,18 +45,18 @@ beforeEach(() => { }); beforeAll(() => { - const actionTypeRegistry = new TypeRegistry(); - registerBuiltInActionTypes({ actionTypeRegistry, services: RegistrationServices }); - const getResult = actionTypeRegistry.get(ACTION_TYPE_ID); + const connectorTypeRegistry = new TypeRegistry(); + registerConnectorTypes({ connectorTypeRegistry, services: RegistrationServices }); + const getResult = connectorTypeRegistry.get(CONNECTOR_TYPE_ID); if (getResult !== null) { - actionTypeModel = getResult; + connectorTypeModel = getResult; } }); -describe('actionTypeRegistry.get() works', () => { - test('action type static data is as expected', () => { - expect(actionTypeModel.id).toEqual(ACTION_TYPE_ID); - expect(actionTypeModel.iconClass).toEqual('email'); +describe('connectorTypeRegistry.get() works', () => { + test('connector type static data is as expected', () => { + expect(connectorTypeModel.id).toEqual(CONNECTOR_TYPE_ID); + expect(connectorTypeModel.iconClass).toEqual('email'); }); }); @@ -82,7 +82,7 @@ describe('action params validation', () => { subject: 'test', }; - expect(await actionTypeModel.validateParams(actionParams)).toEqual({ + expect(await connectorTypeModel.validateParams(actionParams)).toEqual({ errors: { to: [], cc: [], @@ -101,7 +101,7 @@ describe('action params validation', () => { subject: 'test', }; - expect(await actionTypeModel.validateParams(actionParams)).toEqual({ + expect(await connectorTypeModel.validateParams(actionParams)).toEqual({ errors: { to: ['Email address invalid.com is not valid.'], cc: ['Email address bob@notallowed.com is not allowed.'], diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/email/email.tsx similarity index 67% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/email/email.tsx index b44d13fb02ec1..73330de39be7e 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/email/email.tsx @@ -10,63 +10,48 @@ import { lazy } from 'react'; import { i18n } from '@kbn/i18n'; import { EuiSelectOption } from '@elastic/eui'; import { InvalidEmailReason } from '@kbn/actions-plugin/common'; -import { ActionTypeModel, GenericValidationResult } from '../../../../types'; -import { EmailActionParams, EmailConfig, EmailSecrets } from '../types'; -import { RegistrationServices } from '..'; +import type { + ActionTypeModel as ConnectorTypeModel, + GenericValidationResult, +} from '@kbn/triggers-actions-ui-plugin/public/types'; +import { EmailActionParams, EmailConfig, EmailSecrets } from '../../types'; +import { RegistrationServices } from '../..'; const emailServices: EuiSelectOption[] = [ { - text: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.emailAction.gmailServerTypeLabel', - { - defaultMessage: 'Gmail', - } - ), + text: i18n.translate('xpack.stackConnectors.components.email.gmailServerTypeLabel', { + defaultMessage: 'Gmail', + }), value: 'gmail', }, { - text: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.emailAction.outlookServerTypeLabel', - { - defaultMessage: 'Outlook', - } - ), + text: i18n.translate('xpack.stackConnectors.components.email.outlookServerTypeLabel', { + defaultMessage: 'Outlook', + }), value: 'outlook365', }, { - text: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.emailAction.amazonSesServerTypeLabel', - { - defaultMessage: 'Amazon SES', - } - ), + text: i18n.translate('xpack.stackConnectors.components.email.amazonSesServerTypeLabel', { + defaultMessage: 'Amazon SES', + }), value: 'ses', }, { - text: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.emailAction.elasticCloudServerTypeLabel', - { - defaultMessage: 'Elastic Cloud', - } - ), + text: i18n.translate('xpack.stackConnectors.components.email.elasticCloudServerTypeLabel', { + defaultMessage: 'Elastic Cloud', + }), value: 'elastic_cloud', }, { - text: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.emailAction.exchangeServerTypeLabel', - { - defaultMessage: 'MS Exchange Server', - } - ), + text: i18n.translate('xpack.stackConnectors.components.email.exchangeServerTypeLabel', { + defaultMessage: 'MS Exchange Server', + }), value: 'exchange_server', }, { - text: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.emailAction.otherServerTypeLabel', - { - defaultMessage: 'Other', - } - ), + text: i18n.translate('xpack.stackConnectors.components.email.otherServerTypeLabel', { + defaultMessage: 'Other', + }), value: 'other', }, ]; @@ -77,24 +62,18 @@ export function getEmailServices(isCloudEnabled: boolean) { : emailServices.filter((service) => service.value !== 'elastic_cloud'); } -export function getActionType( +export function getConnectorType( services: RegistrationServices -): ActionTypeModel { +): ConnectorTypeModel { return { id: '.email', iconClass: 'email', - selectMessage: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.emailAction.selectMessageText', - { - defaultMessage: 'Send email from your server.', - } - ), - actionTypeTitle: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.emailAction.actionTypeTitle', - { - defaultMessage: 'Send to email', - } - ), + selectMessage: i18n.translate('xpack.stackConnectors.components.email.selectMessageText', { + defaultMessage: 'Send email from your server.', + }), + actionTypeTitle: i18n.translate('xpack.stackConnectors.components.email.connectorTypeTitle', { + defaultMessage: 'Send to email', + }), validateParams: async ( actionParams: EmailActionParams ): Promise> => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_connector.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/email/email_connector.test.tsx similarity index 99% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_connector.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/email/email_connector.test.tsx index b06340c7a180d..ac9ba471b2442 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_connector.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/email/email_connector.test.tsx @@ -9,7 +9,7 @@ import React, { Suspense } from 'react'; import { mountWithIntl } from '@kbn/test-jest-helpers'; import { act } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; -import { useKibana } from '../../../../common/lib/kibana'; +import { useKibana } from '@kbn/triggers-actions-ui-plugin/public'; import EmailActionConnectorFields from './email_connector'; import * as hooks from './use_email_config'; import { @@ -17,9 +17,9 @@ import { ConnectorFormTestProvider, createAppMockRenderer, waitForComponentToUpdate, -} from '../test_utils'; +} from '../../lib/test_utils'; -jest.mock('../../../../common/lib/kibana'); +jest.mock('@kbn/triggers-actions-ui-plugin/public/common/lib/kibana'); const useKibanaMock = useKibana as jest.Mocked; describe('EmailActionConnectorFields', () => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_connector.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/email/email_connector.tsx similarity index 94% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_connector.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/email/email_connector.tsx index 213d30ff4e5e4..502dc1d82dd1e 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_connector.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/email/email_connector.tsx @@ -11,7 +11,6 @@ import { EuiFlexItem, EuiFlexGroup, EuiTitle, EuiSpacer } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import { EuiLink } from '@elastic/eui'; import { InvalidEmailReason } from '@kbn/actions-plugin/common'; -import { AdditionalEmailServices } from '@kbn/stack-connectors-plugin/common'; import { fieldValidators } from '@kbn/es-ui-shared-plugin/static/forms/helpers'; import { ActionsPublicPluginSetup } from '@kbn/actions-plugin/public'; import { @@ -26,13 +25,16 @@ import { TextField, ToggleField, } from '@kbn/es-ui-shared-plugin/static/forms/components'; -import { ActionConnectorFieldsProps } from '../../../../types'; -import { useKibana } from '../../../../common/lib/kibana'; +import type { ActionConnectorFieldsProps } from '@kbn/triggers-actions-ui-plugin/public'; +import { + PasswordField, + useConnectorContext, + useKibana, +} from '@kbn/triggers-actions-ui-plugin/public'; +import { AdditionalEmailServices } from '../../../../common'; import { getEmailServices } from './email'; import { useEmailConfig } from './use_email_config'; -import { PasswordField } from '../../password_field'; import * as i18n from './translations'; -import { useConnectorContext } from '../../../context/use_connector_context'; const { emptyField } = fieldValidators; @@ -50,7 +52,7 @@ const getEmailConfig = ( helpText: ( @@ -254,7 +256,7 @@ export const EmailActionConnectorFields: React.FunctionComponent

diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_params.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/email/email_params.test.tsx similarity index 100% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_params.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/email/email_params.test.tsx diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_params.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/email/email_params.tsx similarity index 85% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_params.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/email/email_params.tsx index 0f894e011d3ea..9e5f1b06ad92b 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/email_params.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/email/email_params.tsx @@ -9,10 +9,12 @@ import React, { useState, useEffect } from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; import { EuiComboBox, EuiButtonEmpty, EuiFormRow } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { ActionParamsProps } from '../../../../types'; -import { EmailActionParams } from '../types'; -import { TextFieldWithMessageVariables } from '../../text_field_with_message_variables'; -import { TextAreaWithMessageVariables } from '../../text_area_with_message_variables'; +import type { ActionParamsProps } from '@kbn/triggers-actions-ui-plugin/public'; +import { + TextAreaWithMessageVariables, + TextFieldWithMessageVariables, +} from '@kbn/triggers-actions-ui-plugin/public'; +import { EmailActionParams } from '../../types'; export const EmailParamsFields = ({ actionParams, @@ -59,12 +61,9 @@ export const EmailParamsFields = ({ fullWidth error={errors.to} isInvalid={isToInvalid} - label={i18n.translate( - 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.recipientTextFieldLabel', - { - defaultMessage: 'To', - } - )} + label={i18n.translate('xpack.stackConnectors.components.email.recipientTextFieldLabel', { + defaultMessage: 'To', + })} labelAppend={ <> @@ -72,7 +71,7 @@ export const EmailParamsFields = ({ setAddCC(true)}> ) : null} @@ -80,7 +79,7 @@ export const EmailParamsFields = ({ setAddBCC(true)}> ) : null} @@ -125,7 +124,7 @@ export const EmailParamsFields = ({ isInvalid={isCCInvalid} isDisabled={isDisabled} label={i18n.translate( - 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.recipientCopyTextFieldLabel', + 'xpack.stackConnectors.components.email.recipientCopyTextFieldLabel', { defaultMessage: 'Cc', } @@ -167,7 +166,7 @@ export const EmailParamsFields = ({ error={errors.bcc} isInvalid={isBCCInvalid} label={i18n.translate( - 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.recipientBccTextFieldLabel', + 'xpack.stackConnectors.components.email.recipientBccTextFieldLabel', { defaultMessage: 'Bcc', } @@ -209,12 +208,9 @@ export const EmailParamsFields = ({ fullWidth error={errors.subject} isInvalid={isSubjectInvalid} - label={i18n.translate( - 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.subjectTextFieldLabel', - { - defaultMessage: 'Subject', - } - )} + label={i18n.translate('xpack.stackConnectors.components.email.subjectTextFieldLabel', { + defaultMessage: 'Subject', + })} > { const actionConnector = { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/exchange_form.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/email/exchange_form.tsx similarity index 88% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/exchange_form.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/email/exchange_form.tsx index 41f82b3a32bfc..c38eebcf44fc1 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/exchange_form.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/email/exchange_form.tsx @@ -11,9 +11,8 @@ import { FormattedMessage } from '@kbn/i18n-react'; import { fieldValidators } from '@kbn/es-ui-shared-plugin/static/forms/helpers'; import { UseField } from '@kbn/es-ui-shared-plugin/static/forms/hook_form_lib'; import { TextField } from '@kbn/es-ui-shared-plugin/static/forms/components'; -import { useKibana } from '../../../../common/lib/kibana'; +import { PasswordField, useKibana } from '@kbn/triggers-actions-ui-plugin/public'; import * as i18n from './translations'; -import { PasswordField } from '../../password_field'; const { emptyField } = fieldValidators; @@ -36,7 +35,7 @@ const ExchangeFormFields: React.FC = ({ readOnly }) => helpText: ( @@ -63,7 +62,7 @@ const ExchangeFormFields: React.FC = ({ readOnly }) => helpText: ( @@ -94,7 +93,7 @@ const ExchangeFormFields: React.FC = ({ readOnly }) => target="_blank" > diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/index.ts b/x-pack/plugins/stack_connectors/public/connector_types/stack/email/index.ts similarity index 78% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/index.ts rename to x-pack/plugins/stack_connectors/public/connector_types/stack/email/index.ts index 2990773856ac4..42fa6d59fefd3 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/index.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/email/index.ts @@ -5,4 +5,4 @@ * 2.0. */ -export { getActionType as getSlackActionType } from './slack'; +export { getConnectorType as getEmailConnectorType } from './email'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/translations.ts b/x-pack/plugins/stack_connectors/public/connector_types/stack/email/translations.ts similarity index 54% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/translations.ts rename to x-pack/plugins/stack_connectors/public/connector_types/stack/email/translations.ts index 65fc2bdb542e8..c21418f349096 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/translations.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/email/translations.ts @@ -8,171 +8,168 @@ import { i18n } from '@kbn/i18n'; export const USERNAME_LABEL = i18n.translate( - 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.userTextFieldLabel', + 'xpack.stackConnectors.components.email.userTextFieldLabel', { defaultMessage: 'Username', } ); export const PASSWORD_LABEL = i18n.translate( - 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.passwordFieldLabel', + 'xpack.stackConnectors.components.email.passwordFieldLabel', { defaultMessage: 'Password', } ); export const FROM_LABEL = i18n.translate( - 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.fromTextFieldLabel', + 'xpack.stackConnectors.components.email.fromTextFieldLabel', { defaultMessage: 'Sender', } ); export const SERVICE_LABEL = i18n.translate( - 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.serviceTextFieldLabel', + 'xpack.stackConnectors.components.email.serviceTextFieldLabel', { defaultMessage: 'Service', } ); export const TENANT_ID_LABEL = i18n.translate( - 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.tenantIdFieldLabel', + 'xpack.stackConnectors.components.email.tenantIdFieldLabel', { defaultMessage: 'Tenant ID', } ); export const CLIENT_ID_LABEL = i18n.translate( - 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.clientIdFieldLabel', + 'xpack.stackConnectors.components.email.clientIdFieldLabel', { defaultMessage: 'Client ID', } ); export const CLIENT_SECRET_LABEL = i18n.translate( - 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.clientSecretTextFieldLabel', + 'xpack.stackConnectors.components.email.clientSecretTextFieldLabel', { defaultMessage: 'Client Secret', } ); export const HOST_LABEL = i18n.translate( - 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.hostTextFieldLabel', + 'xpack.stackConnectors.components.email.hostTextFieldLabel', { defaultMessage: 'Host', } ); export const PORT_LABEL = i18n.translate( - 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.portTextFieldLabel', + 'xpack.stackConnectors.components.email.portTextFieldLabel', { defaultMessage: 'Port', } ); export const SECURE_LABEL = i18n.translate( - 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.secureSwitchLabel', + 'xpack.stackConnectors.components.email.secureSwitchLabel', { defaultMessage: 'Secure', } ); export const HAS_AUTH_LABEL = i18n.translate( - 'xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.hasAuthSwitchLabel', + 'xpack.stackConnectors.components.email.hasAuthSwitchLabel', { defaultMessage: 'Require authentication for this server', } ); export const SENDER_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredFromText', + 'xpack.stackConnectors.components.email.error.requiredFromText', { defaultMessage: 'Sender is required.', } ); export const CLIENT_ID_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredClientIdText', + 'xpack.stackConnectors.components.email.error.requiredClientIdText', { defaultMessage: 'Client ID is required.', } ); export const TENANT_ID_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredTenantIdText', + 'xpack.stackConnectors.components.email.error.requiredTenantIdText', { defaultMessage: 'Tenant ID is required.', } ); export const PORT_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredPortText', + 'xpack.stackConnectors.components.email.error.requiredPortText', { defaultMessage: 'Port is required.', } ); export const PORT_INVALID = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.error.invalidPortText', + 'xpack.stackConnectors.components.email.error.invalidPortText', { defaultMessage: 'Port is invalid.', } ); export const SERVICE_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredServiceText', + 'xpack.stackConnectors.components.email.error.requiredServiceText', { defaultMessage: 'Service is required.', } ); export const HOST_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredHostText', + 'xpack.stackConnectors.components.email.error.requiredHostText', { defaultMessage: 'Host is required.', } ); export const USERNAME_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredAuthUserNameText', + 'xpack.stackConnectors.components.email.error.requiredAuthUserNameText', { defaultMessage: 'Username is required.', } ); export const TO_CC_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredEntryText', + 'xpack.stackConnectors.components.email.error.requiredEntryText', { defaultMessage: 'No To, Cc, or Bcc entry. At least one entry is required.', } ); export const MESSAGE_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredMessageText', + 'xpack.stackConnectors.components.email.error.requiredMessageText', { defaultMessage: 'Message is required.', } ); export const SUBJECT_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredSubjectText', + 'xpack.stackConnectors.components.email.error.requiredSubjectText', { defaultMessage: 'Subject is required.', } ); export function getInvalidEmailAddress(email: string) { - return i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.error.invalidEmail', - { - defaultMessage: 'Email address {email} is not valid.', - values: { email }, - } - ); + return i18n.translate('xpack.stackConnectors.components.email.error.invalidEmail', { + defaultMessage: 'Email address {email} is not valid.', + values: { email }, + }); } export function getNotAllowedEmailAddress(email: string) { - return i18n.translate('xpack.triggersActionsUI.components.builtinActionTypes.error.notAllowed', { + return i18n.translate('xpack.stackConnectors.components.email.error.notAllowed', { defaultMessage: 'Email address {email} is not allowed.', values: { email }, }); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/use_email_config.test.ts b/x-pack/plugins/stack_connectors/public/connector_types/stack/email/use_email_config.test.ts similarity index 100% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/use_email_config.test.ts rename to x-pack/plugins/stack_connectors/public/connector_types/stack/email/use_email_config.test.ts diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/use_email_config.ts b/x-pack/plugins/stack_connectors/public/connector_types/stack/email/use_email_config.ts similarity index 91% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/use_email_config.ts rename to x-pack/plugins/stack_connectors/public/connector_types/stack/email/use_email_config.ts index fc0221227783d..c93715e34ef84 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/use_email_config.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/email/use_email_config.ts @@ -8,9 +8,9 @@ import { isEmpty } from 'lodash'; import { useCallback, useEffect, useRef, useState } from 'react'; import { HttpSetup, IToasts } from '@kbn/core/public'; -import { AdditionalEmailServices } from '@kbn/stack-connectors-plugin/common'; import { i18n } from '@kbn/i18n'; -import { EmailConfig } from '../types'; +import { AdditionalEmailServices } from '../../../../common'; +import { EmailConfig } from '../../types'; import { getServiceConfig } from './api'; interface Props { @@ -73,7 +73,7 @@ export function useEmailConfig({ http, toasts }: Props): UseEmailConfigReturnVal toasts.addDanger( error.body?.message ?? i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.emailAction.updateErrorNotificationText', + 'xpack.stackConnectors.components.email.updateErrorNotificationText', { defaultMessage: 'Cannot get service configuration' } ) ); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/es_index/es_index.test.tsx similarity index 61% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/es_index/es_index.test.tsx index ccf90cb91d837..f2e927fa42f33 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/es_index/es_index.test.tsx @@ -5,34 +5,34 @@ * 2.0. */ -import { TypeRegistry } from '../../../type_registry'; -import { registerBuiltInActionTypes } from '..'; -import { ActionTypeModel } from '../../../../types'; -import { registrationServicesMock } from '../../../../mocks'; +import { TypeRegistry } from '@kbn/triggers-actions-ui-plugin/public/application/type_registry'; +import { registerConnectorTypes } from '../..'; +import type { ActionTypeModel as ConnectorTypeModel } from '@kbn/triggers-actions-ui-plugin/public/types'; +import { registrationServicesMock } from '../../../mocks'; -const ACTION_TYPE_ID = '.index'; -let actionTypeModel: ActionTypeModel; +const CONNECTOR_TYPE_ID = '.index'; +let connectorTypeModel: ConnectorTypeModel; beforeAll(() => { - const actionTypeRegistry = new TypeRegistry(); - registerBuiltInActionTypes({ actionTypeRegistry, services: registrationServicesMock }); - const getResult = actionTypeRegistry.get(ACTION_TYPE_ID); + const connectorTypeRegistry = new TypeRegistry(); + registerConnectorTypes({ connectorTypeRegistry, services: registrationServicesMock }); + const getResult = connectorTypeRegistry.get(CONNECTOR_TYPE_ID); if (getResult !== null) { - actionTypeModel = getResult; + connectorTypeModel = getResult; } }); -describe('actionTypeRegistry.get() works', () => { - test('action type .index is registered', () => { - expect(actionTypeModel.id).toEqual(ACTION_TYPE_ID); - expect(actionTypeModel.iconClass).toEqual('indexOpen'); +describe('connectorTypeRegistry.get() works', () => { + test('connector type .index is registered', () => { + expect(connectorTypeModel.id).toEqual(CONNECTOR_TYPE_ID); + expect(connectorTypeModel.iconClass).toEqual('indexOpen'); }); }); describe('action params validation', () => { test('action params validation succeeds when action params are valid', async () => { expect( - await actionTypeModel.validateParams({ + await connectorTypeModel.validateParams({ documents: [{ test: 1234 }], }) ).toEqual({ @@ -43,7 +43,7 @@ describe('action params validation', () => { }); expect( - await actionTypeModel.validateParams({ + await connectorTypeModel.validateParams({ documents: [{ test: 1234 }], indexOverride: 'kibana-alert-history-anything', }) @@ -56,7 +56,7 @@ describe('action params validation', () => { }); test('action params validation fails when action params are invalid', async () => { - expect(await actionTypeModel.validateParams({})).toEqual({ + expect(await connectorTypeModel.validateParams({})).toEqual({ errors: { documents: ['Document is required and should be a valid JSON object.'], indexOverride: [], @@ -64,7 +64,7 @@ describe('action params validation', () => { }); expect( - await actionTypeModel.validateParams({ + await connectorTypeModel.validateParams({ documents: [{}], }) ).toEqual({ @@ -75,7 +75,7 @@ describe('action params validation', () => { }); expect( - await actionTypeModel.validateParams({ + await connectorTypeModel.validateParams({ documents: [{}], indexOverride: 'kibana-alert-history-', }) @@ -87,7 +87,7 @@ describe('action params validation', () => { }); expect( - await actionTypeModel.validateParams({ + await connectorTypeModel.validateParams({ documents: [{}], indexOverride: 'this.is-a_string', }) diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/es_index/es_index.tsx similarity index 59% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/es_index/es_index.tsx index 75666c1282da3..8265af8a74efb 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/es_index/es_index.tsx @@ -7,25 +7,23 @@ import { lazy } from 'react'; import { i18n } from '@kbn/i18n'; -import { ActionTypeModel, GenericValidationResult, ALERT_HISTORY_PREFIX } from '../../../../types'; -import { EsIndexConfig, IndexActionParams } from '../types'; +import type { + ActionTypeModel as ConnectorTypeModel, + GenericValidationResult, +} from '@kbn/triggers-actions-ui-plugin/public'; +import { ALERT_HISTORY_PREFIX } from '@kbn/triggers-actions-ui-plugin/public'; +import { EsIndexConfig, IndexActionParams } from '../../types'; -export function getActionType(): ActionTypeModel { +export function getConnectorType(): ConnectorTypeModel { return { id: '.index', iconClass: 'indexOpen', - selectMessage: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.indexAction.selectMessageText', - { - defaultMessage: 'Index data into Elasticsearch.', - } - ), - actionTypeTitle: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.indexAction.actionTypeTitle', - { - defaultMessage: 'Index data', - } - ), + selectMessage: i18n.translate('xpack.stackConnectors.components.index.selectMessageText', { + defaultMessage: 'Index data into Elasticsearch.', + }), + actionTypeTitle: i18n.translate('xpack.stackConnectors.components.index.connectorTypeTitle', { + defaultMessage: 'Index data', + }), actionConnectorFields: lazy(() => import('./es_index_connector')), actionParamsFields: lazy(() => import('./es_index_params')), validateParams: async ( @@ -43,13 +41,10 @@ export function getActionType(): ActionTypeModel { const module = jest.requireActual('lodash'); @@ -24,7 +28,7 @@ jest.mock('lodash', () => { }; }); -jest.mock('../../../../common/index_controls', () => ({ +jest.mock('@kbn/triggers-actions-ui-plugin/public/common/index_controls', () => ({ firstFieldOption: { text: 'Select a field', value: '', @@ -33,7 +37,9 @@ jest.mock('../../../../common/index_controls', () => ({ getIndexOptions: jest.fn(), })); -const { getIndexOptions } = jest.requireMock('../../../../common/index_controls'); +const { getIndexOptions } = jest.requireMock( + '@kbn/triggers-actions-ui-plugin/public/common/index_controls' +); getIndexOptions.mockResolvedValueOnce([ { @@ -45,7 +51,9 @@ getIndexOptions.mockResolvedValueOnce([ }, ]); -const { getFields } = jest.requireMock('../../../../common/index_controls'); +const { getFields } = jest.requireMock( + '@kbn/triggers-actions-ui-plugin/public/common/index_controls' +); async function setup(actionConnector: any) { const wrapper = mountWithIntl( diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_connector.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/es_index/es_index_connector.tsx similarity index 87% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_connector.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/es_index/es_index_connector.tsx index 12fb79bd2845a..ec090c3c004d1 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_connector.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/es_index/es_index_connector.tsx @@ -29,10 +29,14 @@ import { ToggleField, SelectField } from '@kbn/es-ui-shared-plugin/static/forms/ import { DocLinksStart } from '@kbn/core/public'; import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; -import { ActionConnectorFieldsProps } from '../../../../types'; -import { getTimeFieldOptions } from '../../../../common/lib/get_time_options'; -import { firstFieldOption, getFields, getIndexOptions } from '../../../../common/index_controls'; -import { useKibana } from '../../../../common/lib/kibana'; +import type { ActionConnectorFieldsProps } from '@kbn/triggers-actions-ui-plugin/public'; +import { + firstFieldOption, + getFields, + getIndexOptions, + getTimeFieldOptions, + useKibana, +} from '@kbn/triggers-actions-ui-plugin/public'; import * as translations from './translations'; interface TimeFieldOptions { @@ -47,13 +51,13 @@ const getIndexConfig = (docLinks: DocLinksStart): FieldConfig => ({ helpText: ( <> @@ -123,7 +127,7 @@ const IndexActionConnectorFields: React.FunctionComponent @@ -159,7 +163,7 @@ const IndexActionConnectorFields: React.FunctionComponent } @@ -168,13 +172,13 @@ const IndexActionConnectorFields: React.FunctionComponent @@ -221,7 +225,7 @@ const IndexActionConnectorFields: React.FunctionComponent {' '} { const original = jest.requireActual(kibanaReactPath); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_params.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/es_index/es_index_params.tsx similarity index 84% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_params.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/es_index/es_index_params.tsx index 0601d0a9b1284..7c6e5bc97cfb1 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/es_index_params.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/es_index/es_index_params.tsx @@ -17,16 +17,16 @@ import { } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; +import type { ActionParamsProps } from '@kbn/triggers-actions-ui-plugin/public'; import { - ActionParamsProps, AlertHistoryEsIndexConnectorId, AlertHistoryDocumentTemplate, AlertHistoryDefaultIndexName, ALERT_HISTORY_PREFIX, -} from '../../../../types'; -import { IndexActionParams } from '../types'; -import { JsonEditorWithMessageVariables } from '../../json_editor_with_message_variables'; -import { useKibana } from '../../../../common/lib/kibana'; + JsonEditorWithMessageVariables, + useKibana, +} from '@kbn/triggers-actions-ui-plugin/public'; +import { IndexActionParams } from '../../types'; export const IndexParamsFields = ({ actionParams, @@ -90,7 +90,7 @@ export const IndexParamsFields = ({ }; const documentsFieldLabel = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.indexAction.documentsFieldLabel', + 'xpack.stackConnectors.components.index.documentsFieldLabel', { defaultMessage: 'Document to index', } @@ -108,7 +108,7 @@ export const IndexParamsFields = ({ > @@ -127,17 +127,14 @@ export const IndexParamsFields = ({ (errors.indexOverride as string[]) && errors.indexOverride.length > 0 } - label={i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.indexAction.preconfiguredIndex', - { - defaultMessage: 'Elasticsearch index', - } - )} + label={i18n.translate('xpack.stackConnectors.components.index.preconfiguredIndex', { + defaultMessage: 'Elasticsearch index', + })} labelAppend={resetDefaultIndex} helpText={ <> @@ -146,7 +143,7 @@ export const IndexParamsFields = ({ target="_blank" > @@ -189,18 +186,15 @@ export const IndexParamsFields = ({ : documentToIndex } label={documentsFieldLabel} - aria-label={i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.indexAction.jsonDocAriaLabel', - { - defaultMessage: 'Code editor', - } - )} + aria-label={i18n.translate('xpack.stackConnectors.components.index.jsonDocAriaLabel', { + defaultMessage: 'Code editor', + })} errors={errors.documents as string[]} onDocumentsChange={onDocumentsChange} helpText={ diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/index.ts b/x-pack/plugins/stack_connectors/public/connector_types/stack/es_index/index.ts similarity index 77% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/index.ts rename to x-pack/plugins/stack_connectors/public/connector_types/stack/es_index/index.ts index 63e1475a115fd..f3c7daa86fbf6 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/index.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/es_index/index.ts @@ -5,4 +5,4 @@ * 2.0. */ -export { getActionType as getCasesWebhookActionType } from './webhook'; +export { getConnectorType as getIndexConnectorType } from './es_index'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/translations.ts b/x-pack/plugins/stack_connectors/public/connector_types/stack/es_index/translations.ts similarity index 64% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/translations.ts rename to x-pack/plugins/stack_connectors/public/connector_types/stack/es_index/translations.ts index d86824fd1813f..3153d84182040 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/translations.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/es_index/translations.ts @@ -8,49 +8,49 @@ import { i18n } from '@kbn/i18n'; export const INDEX_IS_NOT_VALID = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.indexAction.error.notValidIndexText', + 'xpack.stackConnectors.components.index.error.notValidIndexText', { defaultMessage: 'Index is not valid.', } ); export const DOCUMENT_NOT_VALID = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredDocumentJson', + 'xpack.stackConnectors.components.index.error.requiredDocumentJson', { defaultMessage: 'Document is required and should be a valid JSON object.', } ); export const HISTORY_NOT_VALID = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.error.badIndexOverrideSuffix', + 'xpack.stackConnectors.components.index.error.badIndexOverrideSuffix', { defaultMessage: 'Alert history index must contain valid suffix.', } ); export const EXECUTION_TIME_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.indexAction.executionTimeFieldLabel', + 'xpack.stackConnectors.components.index.executionTimeFieldLabel', { defaultMessage: 'Time field', } ); export const SHOW_TIME_FIELD_TOGGLE_TOOLTIP = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.indexAction.definedateFieldTooltip', + 'xpack.stackConnectors.components.index.definedateFieldTooltip', { defaultMessage: `Set this time field to the time the document was indexed.`, } ); export const REFRESH_FIELD_TOGGLE_TOOLTIP = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.indexAction.refreshTooltip', + 'xpack.stackConnectors.components.index.refreshTooltip', { defaultMessage: 'Refresh the affected shards to make this operation visible to search.', } ); export const INDEX_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.indexAction.indicesToQueryLabel', + 'xpack.stackConnectors.components.index.indicesToQueryLabel', { defaultMessage: 'Index', } diff --git a/x-pack/plugins/stack_connectors/public/connector_types/stack/index.ts b/x-pack/plugins/stack_connectors/public/connector_types/stack/index.ts new file mode 100644 index 0000000000000..93d444d20204d --- /dev/null +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/index.ts @@ -0,0 +1,14 @@ +/* + * 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. + */ + +export { getEmailConnectorType } from './email'; +export { getIndexConnectorType } from './es_index'; +export { getPagerDutyConnectorType } from './pagerduty'; +export { getServerLogConnectorType } from './server_log'; +export { getSlackConnectorType } from './slack'; +export { getTeamsConnectorType } from './teams'; +export { getWebhookConnectorType } from './webhook'; diff --git a/x-pack/plugins/stack_connectors/public/connector_types/stack/pagerduty/index.ts b/x-pack/plugins/stack_connectors/public/connector_types/stack/pagerduty/index.ts new file mode 100644 index 0000000000000..48ee4b5288ec8 --- /dev/null +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/pagerduty/index.ts @@ -0,0 +1,8 @@ +/* + * 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. + */ + +export { getConnectorType as getPagerDutyConnectorType } from './pagerduty'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/logo.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/pagerduty/logo.tsx similarity index 96% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/logo.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/pagerduty/logo.tsx index ab991651a8a52..9383a4cf5d59f 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/logo.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/pagerduty/logo.tsx @@ -6,7 +6,7 @@ */ import React from 'react'; -import { LogoProps } from '../types'; +import { LogoProps } from '../../types'; const Logo = (props: LogoProps) => ( { - const actionTypeRegistry = new TypeRegistry(); - registerBuiltInActionTypes({ actionTypeRegistry, services: registrationServicesMock }); - const getResult = actionTypeRegistry.get(ACTION_TYPE_ID); + const connectorTypeRegistry = new TypeRegistry(); + registerConnectorTypes({ connectorTypeRegistry, services: registrationServicesMock }); + const getResult = connectorTypeRegistry.get(CONNECTOR_TYPE_ID); if (getResult !== null) { - actionTypeModel = getResult; + connectorTypeModel = getResult; } }); -describe('actionTypeRegistry.get() works', () => { - test('action type static data is as expected', () => { - expect(actionTypeModel.id).toEqual(ACTION_TYPE_ID); - expect(actionTypeModel.actionTypeTitle).toEqual('Send to PagerDuty'); +describe('connectorTypeRegistry.get() works', () => { + test('connector type static data is as expected', () => { + expect(connectorTypeModel.id).toEqual(CONNECTOR_TYPE_ID); + expect(connectorTypeModel.actionTypeTitle).toEqual('Send to PagerDuty'); }); }); @@ -43,7 +43,7 @@ describe('pagerduty action params validation', () => { class: 'test class', }; - expect(await actionTypeModel.validateParams(actionParams)).toEqual({ + expect(await connectorTypeModel.validateParams(actionParams)).toEqual({ errors: { dedupKey: [], summary: [], @@ -67,7 +67,7 @@ describe('pagerduty action params validation', () => { const expected = [expect.stringMatching(/^Timestamp must be a valid date/)]; - expect(await actionTypeModel.validateParams(actionParams)).toEqual({ + expect(await connectorTypeModel.validateParams(actionParams)).toEqual({ errors: { dedupKey: [], summary: [], diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/pagerduty/pagerduty.tsx similarity index 71% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/pagerduty/pagerduty.tsx index 8c3961e6d7116..edb1e9b71b848 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/pagerduty/pagerduty.tsx @@ -8,17 +8,22 @@ import { lazy } from 'react'; import { i18n } from '@kbn/i18n'; import moment from 'moment'; -import { ActionTypeModel, GenericValidationResult } from '../../../../types'; +import type { + ActionTypeModel as ConnectorTypeModel, + GenericValidationResult, +} from '@kbn/triggers-actions-ui-plugin/public'; +import { + AlertProvidedActionVariables, + hasMustacheTokens, +} from '@kbn/triggers-actions-ui-plugin/public'; import { PagerDutyConfig, PagerDutySecrets, PagerDutyActionParams, EventActionOptions, -} from '../types'; -import { hasMustacheTokens } from '../../../lib/has_mustache_tokens'; -import { AlertProvidedActionVariables } from '../../../lib/action_variables'; +} from '../../types'; -export function getActionType(): ActionTypeModel< +export function getConnectorType(): ConnectorTypeModel< PagerDutyConfig, PagerDutySecrets, PagerDutyActionParams @@ -26,14 +31,11 @@ export function getActionType(): ActionTypeModel< return { id: '.pagerduty', iconClass: lazy(() => import('./logo')), - selectMessage: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.selectMessageText', - { - defaultMessage: 'Send an event in PagerDuty.', - } - ), + selectMessage: i18n.translate('xpack.stackConnectors.components.pagerDuty.selectMessageText', { + defaultMessage: 'Send an event in PagerDuty.', + }), actionTypeTitle: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.actionTypeTitle', + 'xpack.stackConnectors.components.pagerDuty.connectorTypeTitle', { defaultMessage: 'Send to PagerDuty', } @@ -66,17 +68,14 @@ export function getActionType(): ActionTypeModel< if (!moment(actionParams.timestamp).isValid()) { const { nowShortFormat, nowLongFormat } = getValidTimestampExamples(); errors.timestamp.push( - i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.error.invalidTimestamp', - { - defaultMessage: - 'Timestamp must be a valid date, such as {nowShortFormat} or {nowLongFormat}.', - values: { - nowShortFormat, - nowLongFormat, - }, - } - ) + i18n.translate('xpack.stackConnectors.components.pagerDuty.error.invalidTimestamp', { + defaultMessage: + 'Timestamp must be a valid date, such as {nowShortFormat} or {nowLongFormat}.', + values: { + nowShortFormat, + nowLongFormat, + }, + }) ); } } diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_connectors.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/pagerduty/pagerduty_connectors.test.tsx similarity index 97% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_connectors.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/pagerduty/pagerduty_connectors.test.tsx index 1ccd7fba702f6..184ae124cbc04 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_connectors.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/pagerduty/pagerduty_connectors.test.tsx @@ -9,11 +9,11 @@ import React from 'react'; import { mountWithIntl, nextTick } from '@kbn/test-jest-helpers'; import { act } from 'react-dom/test-utils'; import PagerDutyActionConnectorFields from './pagerduty_connectors'; -import { ConnectorFormTestProvider } from '../test_utils'; +import { ConnectorFormTestProvider } from '../../lib/test_utils'; import { render } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; -jest.mock('../../../../common/lib/kibana'); +jest.mock('@kbn/triggers-actions-ui-plugin/public/common/lib/kibana'); describe('PagerDutyActionConnectorFields renders', () => { test('all connector fields is rendered', async () => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_connectors.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/pagerduty/pagerduty_connectors.tsx similarity index 91% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_connectors.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/pagerduty/pagerduty_connectors.tsx index 21f7443b6b545..13139306ea781 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_connectors.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/pagerduty/pagerduty_connectors.tsx @@ -13,8 +13,8 @@ import { FieldConfig, UseField } from '@kbn/es-ui-shared-plugin/static/forms/hoo import { fieldValidators } from '@kbn/es-ui-shared-plugin/static/forms/helpers'; import { Field } from '@kbn/es-ui-shared-plugin/static/forms/components'; import { DocLinksStart } from '@kbn/core/public'; -import { ActionConnectorFieldsProps } from '../../../../types'; -import { useKibana } from '../../../../common/lib/kibana'; +import type { ActionConnectorFieldsProps } from '@kbn/triggers-actions-ui-plugin/public'; +import { useKibana } from '@kbn/triggers-actions-ui-plugin/public'; import * as i18n from './translations'; const { emptyField, urlField } = fieldValidators; @@ -44,7 +44,7 @@ const getRoutingKeyConfig = (docLinks: DocLinksStart): FieldConfig => ({ helpText: ( diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_params.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/pagerduty/pagerduty_params.test.tsx similarity index 98% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_params.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/pagerduty/pagerduty_params.test.tsx index 19f47166b2726..7f2933587ebca 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_params.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/pagerduty/pagerduty_params.test.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { mountWithIntl } from '@kbn/test-jest-helpers'; -import { EventActionOptions, SeverityActionOptions } from '../types'; +import { EventActionOptions, SeverityActionOptions } from '../../types'; import PagerDutyParamsFields from './pagerduty_params'; describe('PagerDutyParamsFields renders', () => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_params.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/pagerduty/pagerduty_params.tsx similarity index 76% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_params.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/pagerduty/pagerduty_params.tsx index 738f1ca74b1a6..f9f9921d84ceb 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/pagerduty_params.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/pagerduty/pagerduty_params.tsx @@ -9,9 +9,9 @@ import React from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiFormRow, EuiSelect, EuiSpacer } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { isUndefined } from 'lodash'; -import { ActionParamsProps } from '../../../../types'; -import { PagerDutyActionParams } from '../types'; -import { TextFieldWithMessageVariables } from '../../text_field_with_message_variables'; +import type { ActionParamsProps } from '@kbn/triggers-actions-ui-plugin/public'; +import { TextFieldWithMessageVariables } from '@kbn/triggers-actions-ui-plugin/public'; +import { PagerDutyActionParams } from '../../types'; const PagerDutyParamsFields: React.FunctionComponent> = ({ actionParams, @@ -26,7 +26,7 @@ const PagerDutyParamsFields: React.FunctionComponent { + const connectorTypeRegistry = new TypeRegistry(); + registerConnectorTypes({ connectorTypeRegistry, services: registrationServicesMock }); + const getResult = connectorTypeRegistry.get(CONNECTOR_TYPE_ID); + if (getResult !== null) { + connectorTypeModel = getResult; + } +}); + +describe('connectorTypeRegistry.get() works', () => { + test('connector type static data is as expected', () => { + expect(connectorTypeModel.id).toEqual(CONNECTOR_TYPE_ID); + expect(connectorTypeModel.iconClass).toEqual('logsApp'); + }); +}); + +describe('action params validation', () => { + test('action params validation succeeds when action params is valid', async () => { + const actionParams = { + message: 'test message', + level: 'trace', + }; + + expect(await connectorTypeModel.validateParams(actionParams)).toEqual({ + errors: { message: [] }, + }); + }); + + test('params validation fails when message is not valid', async () => { + const actionParams = { + message: '', + }; + + expect(await connectorTypeModel.validateParams(actionParams)).toEqual({ + errors: { + message: ['Message is required.'], + }, + }); + }); +}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/server_log/server_log.tsx similarity index 63% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/server_log/server_log.tsx index 4fe024f8861f0..b1dadf0bf2ddc 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/server_log/server_log.tsx @@ -7,21 +7,21 @@ import { lazy } from 'react'; import { i18n } from '@kbn/i18n'; -import { ActionTypeModel, GenericValidationResult } from '../../../../types'; -import { ServerLogActionParams } from '../types'; +import type { + ActionTypeModel as ConnectorTypeModel, + GenericValidationResult, +} from '@kbn/triggers-actions-ui-plugin/public/types'; +import { ServerLogActionParams } from '../../types'; -export function getActionType(): ActionTypeModel { +export function getConnectorType(): ConnectorTypeModel { return { id: '.server-log', iconClass: 'logsApp', - selectMessage: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.serverLogAction.selectMessageText', - { - defaultMessage: 'Add a message to a Kibana log.', - } - ), + selectMessage: i18n.translate('xpack.stackConnectors.components.serverLog.selectMessageText', { + defaultMessage: 'Add a message to a Kibana log.', + }), actionTypeTitle: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.serverLogAction.actionTypeTitle', + 'xpack.stackConnectors.components.serverLog.connectorTypeTitle', { defaultMessage: 'Send to Server log', } @@ -36,7 +36,7 @@ export function getActionType(): ActionTypeModel { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log_params.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/server_log/server_log_params.tsx similarity index 79% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log_params.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/server_log/server_log_params.tsx index b8f5b84eb471e..d923e1165c3f1 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log_params.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/server_log/server_log_params.tsx @@ -8,9 +8,9 @@ import React, { useEffect, useState } from 'react'; import { i18n } from '@kbn/i18n'; import { EuiSelect, EuiFormRow } from '@elastic/eui'; -import { ActionParamsProps } from '../../../../types'; -import { ServerLogActionParams } from '../types'; -import { TextAreaWithMessageVariables } from '../../text_area_with_message_variables'; +import type { ActionParamsProps } from '@kbn/triggers-actions-ui-plugin/public'; +import { TextAreaWithMessageVariables } from '@kbn/triggers-actions-ui-plugin/public'; +import { ServerLogActionParams } from '../../types'; export const ServerLogParamsFields: React.FunctionComponent< ActionParamsProps @@ -52,12 +52,9 @@ export const ServerLogParamsFields: React.FunctionComponent< diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/index.ts b/x-pack/plugins/stack_connectors/public/connector_types/stack/slack/index.ts similarity index 78% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/index.ts rename to x-pack/plugins/stack_connectors/public/connector_types/stack/slack/index.ts index a1ca62d0cc862..05d27afff76fb 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/email/index.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/slack/index.ts @@ -5,4 +5,4 @@ * 2.0. */ -export { getActionType as getEmailActionType } from './email'; +export { getConnectorType as getSlackConnectorType } from './slack'; diff --git a/x-pack/plugins/stack_connectors/public/connector_types/stack/slack/slack.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/slack/slack.test.tsx new file mode 100644 index 0000000000000..dc1f27ec3998b --- /dev/null +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/slack/slack.test.tsx @@ -0,0 +1,54 @@ +/* + * 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 { TypeRegistry } from '@kbn/triggers-actions-ui-plugin/public/application/type_registry'; +import { registerConnectorTypes } from '../..'; +import type { ActionTypeModel as ConnectorTypeModel } from '@kbn/triggers-actions-ui-plugin/public/types'; +import { registrationServicesMock } from '../../../mocks'; + +const CONNECTOR_TYPE_ID = '.slack'; +let connectorTypeModel: ConnectorTypeModel; + +beforeAll(async () => { + const connectorTypeRegistry = new TypeRegistry(); + registerConnectorTypes({ connectorTypeRegistry, services: registrationServicesMock }); + const getResult = connectorTypeRegistry.get(CONNECTOR_TYPE_ID); + if (getResult !== null) { + connectorTypeModel = getResult; + } +}); + +describe('connectorTypeRegistry.get() works', () => { + test('connector type static data is as expected', () => { + expect(connectorTypeModel.id).toEqual(CONNECTOR_TYPE_ID); + expect(connectorTypeModel.iconClass).toEqual('logoSlack'); + }); +}); + +describe('slack action params validation', () => { + test('if action params validation succeeds when action params is valid', async () => { + const actionParams = { + message: 'message {test}', + }; + + expect(await connectorTypeModel.validateParams(actionParams)).toEqual({ + errors: { message: [] }, + }); + }); + + test('params validation fails when message is not valid', async () => { + const actionParams = { + message: '', + }; + + expect(await connectorTypeModel.validateParams(actionParams)).toEqual({ + errors: { + message: ['Message is required.'], + }, + }); + }); +}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/slack/slack.tsx similarity index 59% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/slack/slack.tsx index 2252677084ba6..a3a800b2036a8 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/slack/slack.tsx @@ -7,25 +7,22 @@ import { lazy } from 'react'; import { i18n } from '@kbn/i18n'; -import { ActionTypeModel, GenericValidationResult } from '../../../../types'; -import { SlackActionParams, SlackSecrets } from '../types'; +import type { + ActionTypeModel as ConnectorTypeModel, + GenericValidationResult, +} from '@kbn/triggers-actions-ui-plugin/public/types'; +import { SlackActionParams, SlackSecrets } from '../../types'; -export function getActionType(): ActionTypeModel { +export function getConnectorType(): ConnectorTypeModel { return { id: '.slack', iconClass: 'logoSlack', - selectMessage: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.slackAction.selectMessageText', - { - defaultMessage: 'Send a message to a Slack channel or user.', - } - ), - actionTypeTitle: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.slackAction.actionTypeTitle', - { - defaultMessage: 'Send to Slack', - } - ), + selectMessage: i18n.translate('xpack.stackConnectors.components.slack.selectMessageText', { + defaultMessage: 'Send a message to a Slack channel or user.', + }), + actionTypeTitle: i18n.translate('xpack.stackConnectors.components.slack.connectorTypeTitle', { + defaultMessage: 'Send to Slack', + }), validateParams: async ( actionParams: SlackActionParams ): Promise> => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_connectors.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/slack/slack_connectors.test.tsx similarity index 96% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_connectors.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/slack/slack_connectors.test.tsx index 640bef0c22685..ac381ba07e3b0 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_connectors.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/slack/slack_connectors.test.tsx @@ -9,10 +9,10 @@ import React from 'react'; import { mountWithIntl, nextTick } from '@kbn/test-jest-helpers'; import { act, render } from '@testing-library/react'; import SlackActionFields from './slack_connectors'; -import { ConnectorFormTestProvider } from '../test_utils'; +import { ConnectorFormTestProvider } from '../../lib/test_utils'; import userEvent from '@testing-library/user-event'; -jest.mock('../../../../common/lib/kibana'); +jest.mock('@kbn/triggers-actions-ui-plugin/public/common/lib/kibana'); describe('SlackActionFields renders', () => { test('all connector fields is rendered', async () => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_connectors.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/slack/slack_connectors.tsx similarity index 88% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_connectors.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/slack/slack_connectors.tsx index 0725096c5a719..188b8912fc390 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_connectors.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/slack/slack_connectors.tsx @@ -12,9 +12,8 @@ import { FieldConfig, UseField } from '@kbn/es-ui-shared-plugin/static/forms/hoo import { fieldValidators } from '@kbn/es-ui-shared-plugin/static/forms/helpers'; import { Field } from '@kbn/es-ui-shared-plugin/static/forms/components'; import { DocLinksStart } from '@kbn/core/public'; - -import { ActionConnectorFieldsProps } from '../../../../types'; -import { useKibana } from '../../../../common/lib/kibana'; +import type { ActionConnectorFieldsProps } from '@kbn/triggers-actions-ui-plugin/public'; +import { useKibana } from '@kbn/triggers-actions-ui-plugin/public'; import * as i18n from './translations'; const { urlField } = fieldValidators; @@ -24,7 +23,7 @@ const getWebhookUrlConfig = (docLinks: DocLinksStart): FieldConfig => ({ helpText: ( diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_params.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/slack/slack_params.test.tsx similarity index 100% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_params.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/slack/slack_params.test.tsx diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_params.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/slack/slack_params.tsx similarity index 79% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_params.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/slack/slack_params.tsx index 59e10277cfe08..d5cd699caaae5 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack_params.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/slack/slack_params.tsx @@ -7,9 +7,9 @@ import React, { useEffect, useState } from 'react'; import { i18n } from '@kbn/i18n'; -import { ActionParamsProps } from '../../../../types'; -import { SlackActionParams } from '../types'; -import { TextAreaWithMessageVariables } from '../../text_area_with_message_variables'; +import type { ActionParamsProps } from '@kbn/triggers-actions-ui-plugin/public'; +import { TextAreaWithMessageVariables } from '@kbn/triggers-actions-ui-plugin/public'; +import { SlackActionParams } from '../../types'; const SlackParamsFields: React.FunctionComponent> = ({ actionParams, @@ -43,12 +43,9 @@ const SlackParamsFields: React.FunctionComponent ); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/translations.ts b/x-pack/plugins/stack_connectors/public/connector_types/stack/slack/translations.ts similarity index 67% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/translations.ts rename to x-pack/plugins/stack_connectors/public/connector_types/stack/slack/translations.ts index e7d37082b53ff..7caed9ca07237 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/translations.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/slack/translations.ts @@ -8,21 +8,21 @@ import { i18n } from '@kbn/i18n'; export const WEBHOOK_URL_INVALID = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.slackAction.error.invalidWebhookUrlText', + 'xpack.stackConnectors.components.slack.error.invalidWebhookUrlText', { defaultMessage: 'Webhook URL is invalid.', } ); export const MESSAGE_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredSlackMessageText', + 'xpack.stackConnectors.components.slack..error.requiredSlackMessageText', { defaultMessage: 'Message is required.', } ); export const WEBHOOK_URL_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.slackAction.webhookUrlTextFieldLabel', + 'xpack.stackConnectors.components.slack.webhookUrlTextFieldLabel', { defaultMessage: 'Webhook URL', } diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/index.ts b/x-pack/plugins/stack_connectors/public/connector_types/stack/teams/index.ts similarity index 78% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/index.ts rename to x-pack/plugins/stack_connectors/public/connector_types/stack/teams/index.ts index 419fb069aa8c7..a64d07770b4dd 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/es_index/index.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/teams/index.ts @@ -5,4 +5,4 @@ * 2.0. */ -export { getActionType as getIndexActionType } from './es_index'; +export { getConnectorType as getTeamsConnectorType } from './teams'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/teams/logo.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/teams/logo.tsx similarity index 99% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/teams/logo.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/teams/logo.tsx index 666cb8d854032..a7740ece4323f 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/teams/logo.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/teams/logo.tsx @@ -6,7 +6,7 @@ */ import React from 'react'; -import { LogoProps } from '../types'; +import { LogoProps } from '../../types'; const Logo = (props: LogoProps) => ( { + const connectorTypeRegistry = new TypeRegistry(); + registerConnectorTypes({ connectorTypeRegistry, services: registrationServicesMock }); + const getResult = connectorTypeRegistry.get(CONNECTOR_TYPE_ID); + if (getResult !== null) { + connectorTypeModel = getResult; + } +}); + +describe('connectorTypeRegistry.get() works', () => { + test('connector type static data is as expected', () => { + expect(connectorTypeModel.id).toEqual(CONNECTOR_TYPE_ID); + }); +}); + +describe('teams action params validation', () => { + test('if action params validation succeeds when action params is valid', async () => { + const actionParams = { + message: 'message {test}', + }; + + expect(await connectorTypeModel.validateParams(actionParams)).toEqual({ + errors: { message: [] }, + }); + }); + + test('params validation fails when message is not valid', async () => { + const actionParams = { + message: '', + }; + + expect(await connectorTypeModel.validateParams(actionParams)).toEqual({ + errors: { + message: ['Message is required.'], + }, + }); + }); +}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/teams/teams.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/teams/teams.tsx similarity index 59% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/teams/teams.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/teams/teams.tsx index e9c286cdc1b56..560d647253a5f 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/teams/teams.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/teams/teams.tsx @@ -7,25 +7,22 @@ import { lazy } from 'react'; import { i18n } from '@kbn/i18n'; -import { ActionTypeModel, GenericValidationResult } from '../../../../types'; -import { TeamsActionParams, TeamsSecrets } from '../types'; +import type { + ActionTypeModel as ConnectorTypeModel, + GenericValidationResult, +} from '@kbn/triggers-actions-ui-plugin/public/types'; +import { TeamsActionParams, TeamsSecrets } from '../../types'; -export function getActionType(): ActionTypeModel { +export function getConnectorType(): ConnectorTypeModel { return { id: '.teams', iconClass: lazy(() => import('./logo')), - selectMessage: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.teamsAction.selectMessageText', - { - defaultMessage: 'Send a message to a Microsoft Teams channel.', - } - ), - actionTypeTitle: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.teamsAction.actionTypeTitle', - { - defaultMessage: 'Send a message to a Microsoft Teams channel.', - } - ), + selectMessage: i18n.translate('xpack.stackConnectors.components.teams.selectMessageText', { + defaultMessage: 'Send a message to a Microsoft Teams channel.', + }), + actionTypeTitle: i18n.translate('xpack.stackConnectors.components.teams.connectorTypeTitle', { + defaultMessage: 'Send a message to a Microsoft Teams channel.', + }), validateParams: async ( actionParams: TeamsActionParams ): Promise> => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/teams/teams_connectors.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/teams/teams_connectors.test.tsx similarity index 96% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/teams/teams_connectors.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/teams/teams_connectors.test.tsx index a0a082d36a864..37078d7efd115 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/teams/teams_connectors.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/teams/teams_connectors.test.tsx @@ -9,9 +9,9 @@ import React from 'react'; import { mountWithIntl, nextTick } from '@kbn/test-jest-helpers'; import { act, render } from '@testing-library/react'; import TeamsActionFields from './teams_connectors'; -import { ConnectorFormTestProvider } from '../test_utils'; +import { ConnectorFormTestProvider } from '../../lib/test_utils'; import userEvent from '@testing-library/user-event'; -jest.mock('../../../../common/lib/kibana'); +jest.mock('@kbn/triggers-actions-ui-plugin/public/common/lib/kibana'); describe('TeamsActionFields renders', () => { test('all connector fields are rendered', async () => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/teams/teams_connectors.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/teams/teams_connectors.tsx similarity index 88% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/teams/teams_connectors.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/teams/teams_connectors.tsx index 34e2e02a0611c..7d989b9b04c6e 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/teams/teams_connectors.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/teams/teams_connectors.tsx @@ -12,8 +12,8 @@ import { FieldConfig, UseField } from '@kbn/es-ui-shared-plugin/static/forms/hoo import { fieldValidators } from '@kbn/es-ui-shared-plugin/static/forms/helpers'; import { Field } from '@kbn/es-ui-shared-plugin/static/forms/components'; import { DocLinksStart } from '@kbn/core/public'; -import { ActionConnectorFieldsProps } from '../../../../types'; -import { useKibana } from '../../../../common/lib/kibana'; +import type { ActionConnectorFieldsProps } from '@kbn/triggers-actions-ui-plugin/public'; +import { useKibana } from '@kbn/triggers-actions-ui-plugin/public'; import * as i18n from './translations'; const { urlField } = fieldValidators; @@ -23,7 +23,7 @@ const getWebhookUrlConfig = (docLinks: DocLinksStart): FieldConfig => ({ helpText: ( diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/teams/teams_params.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/teams/teams_params.test.tsx similarity index 93% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/teams/teams_params.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/teams/teams_params.test.tsx index cf0bfe9db0e97..ac1228ac5fda4 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/teams/teams_params.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/teams/teams_params.test.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { mountWithIntl } from '@kbn/test-jest-helpers'; import TeamsParamsFields from './teams_params'; -jest.mock('../../../../common/lib/kibana'); +jest.mock('@kbn/triggers-actions-ui-plugin/public/common/lib/kibana'); describe('TeamsParamsFields renders', () => { test('all params fields is rendered', () => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/teams/teams_params.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/teams/teams_params.tsx similarity index 74% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/teams/teams_params.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/teams/teams_params.tsx index 0aea576c10b31..5a4c9e85f583b 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/teams/teams_params.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/teams/teams_params.tsx @@ -7,9 +7,9 @@ import React, { useEffect } from 'react'; import { i18n } from '@kbn/i18n'; -import { ActionParamsProps } from '../../../../types'; -import { TeamsActionParams } from '../types'; -import { TextAreaWithMessageVariables } from '../../text_area_with_message_variables'; +import type { ActionParamsProps } from '@kbn/triggers-actions-ui-plugin/public'; +import { TextAreaWithMessageVariables } from '@kbn/triggers-actions-ui-plugin/public'; +import { TeamsActionParams } from '../../types'; const TeamsParamsFields: React.FunctionComponent> = ({ actionParams, @@ -34,12 +34,9 @@ const TeamsParamsFields: React.FunctionComponent ); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/teams/translations.ts b/x-pack/plugins/stack_connectors/public/connector_types/stack/teams/translations.ts similarity index 67% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/teams/translations.ts rename to x-pack/plugins/stack_connectors/public/connector_types/stack/teams/translations.ts index 2bf4cae881f7b..539e0867dc97c 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/teams/translations.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/teams/translations.ts @@ -8,21 +8,21 @@ import { i18n } from '@kbn/i18n'; export const WEBHOOK_URL_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.teamsAction.error.webhookUrlTextLabel', + 'xpack.stackConnectors.components.teams.error.webhookUrlTextLabel', { defaultMessage: 'Webhook URL', } ); export const WEBHOOK_URL_INVALID = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.teamsAction.error.invalidWebhookUrlText', + 'xpack.stackConnectors.components.teams.error.invalidWebhookUrlText', { defaultMessage: 'Webhook URL is invalid.', } ); export const MESSAGE_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.teamsAction.error.requiredMessageText', + 'xpack.stackConnectors.components.teams.error.requiredMessageText', { defaultMessage: 'Message is required.', } diff --git a/x-pack/plugins/stack_connectors/public/connector_types/stack/webhook/index.ts b/x-pack/plugins/stack_connectors/public/connector_types/stack/webhook/index.ts new file mode 100644 index 0000000000000..dd5934986c846 --- /dev/null +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/webhook/index.ts @@ -0,0 +1,8 @@ +/* + * 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. + */ + +export { getConnectorType as getWebhookConnectorType } from './webhook'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/translations.ts b/x-pack/plugins/stack_connectors/public/connector_types/stack/webhook/translations.ts similarity index 55% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/translations.ts rename to x-pack/plugins/stack_connectors/public/connector_types/stack/webhook/translations.ts index 27a7d08b8c767..7095c91729f91 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/translations.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/webhook/translations.ts @@ -8,98 +8,98 @@ import { i18n } from '@kbn/i18n'; export const METHOD_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.methodTextFieldLabel', + 'xpack.stackConnectors.components.webhook.methodTextFieldLabel', { defaultMessage: 'Method', } ); export const HAS_AUTH_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.hasAuthSwitchLabel', + 'xpack.stackConnectors.components.webhook.hasAuthSwitchLabel', { defaultMessage: 'Require authentication for this webhook', } ); export const URL_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.urlTextFieldLabel', + 'xpack.stackConnectors.components.webhook.urlTextFieldLabel', { defaultMessage: 'URL', } ); export const USERNAME_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.userTextFieldLabel', + 'xpack.stackConnectors.components.webhook.userTextFieldLabel', { defaultMessage: 'Username', } ); export const PASSWORD_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.passwordTextFieldLabel', + 'xpack.stackConnectors.components.webhook.passwordTextFieldLabel', { defaultMessage: 'Password', } ); export const ADD_HEADERS_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.viewHeadersSwitch', + 'xpack.stackConnectors.components.webhook.viewHeadersSwitch', { defaultMessage: 'Add HTTP header', } ); export const HEADER_KEY_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.headerKeyTextFieldLabel', + 'xpack.stackConnectors.components.webhook.headerKeyTextFieldLabel', { defaultMessage: 'Key', } ); export const REMOVE_ITEM_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.removeHeaderIconLabel', + 'xpack.stackConnectors.components.webhook.removeHeaderIconLabel', { defaultMessage: 'Key', } ); export const ADD_HEADER_BTN = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.addHeaderButtonLabel', + 'xpack.stackConnectors.components.webhook.addHeaderButtonLabel', { defaultMessage: 'Add header', } ); export const HEADER_VALUE_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.headerValueTextFieldLabel', + 'xpack.stackConnectors.components.webhook.headerValueTextFieldLabel', { defaultMessage: 'Value', } ); export const URL_INVALID = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.error.invalidUrlTextField', + 'xpack.stackConnectors.components.webhook.error.invalidUrlTextField', { defaultMessage: 'URL is invalid.', } ); export const METHOD_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.sections.addAction.webhookAction.error.requiredMethodText', + 'xpack.stackConnectors.components.webhook.error.requiredMethodText', { defaultMessage: 'Method is required.', } ); export const USERNAME_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.sections.addAction.webhookAction.error.requiredAuthUserNameText', + 'xpack.stackConnectors.components.webhook.error.requiredAuthUserNameText', { defaultMessage: 'Username is required.', } ); export const BODY_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredWebhookBodyText', + 'xpack.stackConnectors.components.webhook.error.requiredWebhookBodyText', { defaultMessage: 'Body is required.', } diff --git a/x-pack/plugins/stack_connectors/public/connector_types/stack/webhook/webhook.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/webhook/webhook.test.tsx new file mode 100644 index 0000000000000..d24e1e865e17f --- /dev/null +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/webhook/webhook.test.tsx @@ -0,0 +1,54 @@ +/* + * 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 { TypeRegistry } from '@kbn/triggers-actions-ui-plugin/public/application/type_registry'; +import { registerConnectorTypes } from '../..'; +import type { ActionTypeModel as ConnectorTypeModel } from '@kbn/triggers-actions-ui-plugin/public/types'; +import { registrationServicesMock } from '../../../mocks'; + +const CONNECTOR_TYPE_ID = '.webhook'; +let connectorTypeModel: ConnectorTypeModel; + +beforeAll(() => { + const connectorTypeRegistry = new TypeRegistry(); + registerConnectorTypes({ connectorTypeRegistry, services: registrationServicesMock }); + const getResult = connectorTypeRegistry.get(CONNECTOR_TYPE_ID); + if (getResult !== null) { + connectorTypeModel = getResult; + } +}); + +describe('connectorTypeRegistry.get() works', () => { + test('connector type static data is as expected', () => { + expect(connectorTypeModel.id).toEqual(CONNECTOR_TYPE_ID); + expect(connectorTypeModel.iconClass).toEqual('logoWebhook'); + }); +}); + +describe('webhook action params validation', () => { + test('action params validation succeeds when action params is valid', async () => { + const actionParams = { + body: 'message {test}', + }; + + expect(await connectorTypeModel.validateParams(actionParams)).toEqual({ + errors: { body: [] }, + }); + }); + + test('params validation fails when body is not valid', async () => { + const actionParams = { + body: '', + }; + + expect(await connectorTypeModel.validateParams(actionParams)).toEqual({ + errors: { + body: ['Body is required.'], + }, + }); + }); +}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/webhook/webhook.tsx similarity index 67% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/webhook/webhook.tsx index 5ee08cc027003..9740038f85a66 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/webhook/webhook.tsx @@ -7,10 +7,13 @@ import { lazy } from 'react'; import { i18n } from '@kbn/i18n'; -import { ActionTypeModel, GenericValidationResult } from '../../../../types'; -import { WebhookActionParams, WebhookConfig, WebhookSecrets } from '../types'; +import type { + ActionTypeModel as ConnectorTypeModel, + GenericValidationResult, +} from '@kbn/triggers-actions-ui-plugin/public/types'; +import { WebhookActionParams, WebhookConfig, WebhookSecrets } from '../../types'; -export function getActionType(): ActionTypeModel< +export function getConnectorType(): ConnectorTypeModel< WebhookConfig, WebhookSecrets, WebhookActionParams @@ -18,18 +21,12 @@ export function getActionType(): ActionTypeModel< return { id: '.webhook', iconClass: 'logoWebhook', - selectMessage: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.selectMessageText', - { - defaultMessage: 'Send a request to a web service.', - } - ), - actionTypeTitle: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.actionTypeTitle', - { - defaultMessage: 'Webhook data', - } - ), + selectMessage: i18n.translate('xpack.stackConnectors.components.webhook.selectMessageText', { + defaultMessage: 'Send a request to a web service.', + }), + actionTypeTitle: i18n.translate('xpack.stackConnectors.components.webhook.connectorTypeTitle', { + defaultMessage: 'Webhook data', + }), validateParams: async ( actionParams: WebhookActionParams ): Promise> => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_connectors.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/webhook/webhook_connectors.test.tsx similarity index 99% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_connectors.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/webhook/webhook_connectors.test.tsx index d3b933e9e2dc4..8744f126e1541 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_connectors.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/webhook/webhook_connectors.test.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { mountWithIntl } from '@kbn/test-jest-helpers'; import WebhookActionConnectorFields from './webhook_connectors'; -import { ConnectorFormTestProvider, waitForComponentToUpdate } from '../test_utils'; +import { ConnectorFormTestProvider, waitForComponentToUpdate } from '../../lib/test_utils'; import { act, render } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_connectors.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/webhook/webhook_connectors.tsx similarity index 96% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_connectors.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/webhook/webhook_connectors.tsx index 7981f8fa4fa78..233d2eea4b117 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_connectors.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/webhook/webhook_connectors.tsx @@ -29,9 +29,9 @@ import { ToggleField, } from '@kbn/es-ui-shared-plugin/static/forms/components'; import { fieldValidators } from '@kbn/es-ui-shared-plugin/static/forms/helpers'; -import { ActionConnectorFieldsProps } from '../../../../types'; +import type { ActionConnectorFieldsProps } from '@kbn/triggers-actions-ui-plugin/public'; +import { PasswordField } from '@kbn/triggers-actions-ui-plugin/public'; import * as i18n from './translations'; -import { PasswordField } from '../../password_field'; const HTTP_VERBS = ['post', 'put']; const { emptyField, urlField } = fieldValidators; @@ -99,7 +99,7 @@ const WebhookActionConnectorFields: React.FunctionComponent

diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_params.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/webhook/webhook_params.test.tsx similarity index 88% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_params.test.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/webhook/webhook_params.test.tsx index 064d21b50e463..6cf29adfe89bf 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_params.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/webhook/webhook_params.test.tsx @@ -8,9 +8,9 @@ import React from 'react'; import { mountWithIntl } from '@kbn/test-jest-helpers'; import WebhookParamsFields from './webhook_params'; -import { MockCodeEditor } from '../../../code_editor.mock'; +import { MockCodeEditor } from '@kbn/triggers-actions-ui-plugin/public/application/code_editor.mock'; -const kibanaReactPath = '../../../../../../../../src/plugins/kibana_react/public'; +const kibanaReactPath = '../../../../../../../src/plugins/kibana_react/public'; jest.mock(kibanaReactPath, () => { const original = jest.requireActual(kibanaReactPath); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_params.tsx b/x-pack/plugins/stack_connectors/public/connector_types/stack/webhook/webhook_params.tsx similarity index 69% rename from x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_params.tsx rename to x-pack/plugins/stack_connectors/public/connector_types/stack/webhook/webhook_params.tsx index 2eab79b14f53a..4a48027e8153a 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook_params.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/stack/webhook/webhook_params.tsx @@ -7,9 +7,9 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; -import { ActionParamsProps } from '../../../../types'; -import { WebhookActionParams } from '../types'; -import { JsonEditorWithMessageVariables } from '../../json_editor_with_message_variables'; +import type { ActionParamsProps } from '@kbn/triggers-actions-ui-plugin/public'; +import { JsonEditorWithMessageVariables } from '@kbn/triggers-actions-ui-plugin/public'; +import { WebhookActionParams } from '../../types'; const WebhookParamsFields: React.FunctionComponent> = ({ actionParams, @@ -24,14 +24,11 @@ const WebhookParamsFields: React.FunctionComponent new StackConnectorsPublicPlugin(); diff --git a/x-pack/plugins/stack_connectors/public/mocks.ts b/x-pack/plugins/stack_connectors/public/mocks.ts new file mode 100644 index 0000000000000..9e087c3cee6eb --- /dev/null +++ b/x-pack/plugins/stack_connectors/public/mocks.ts @@ -0,0 +1,15 @@ +/* + * 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 { ValidatedEmail } from '@kbn/actions-plugin/common'; +import { RegistrationServices } from './connector_types'; + +function validateEmailAddresses(addresses: string[]): ValidatedEmail[] { + return addresses.map((address) => ({ address, valid: true })); +} + +export const registrationServicesMock: RegistrationServices = { validateEmailAddresses }; diff --git a/x-pack/plugins/stack_connectors/public/plugin.ts b/x-pack/plugins/stack_connectors/public/plugin.ts new file mode 100644 index 0000000000000..bc9d855a14303 --- /dev/null +++ b/x-pack/plugins/stack_connectors/public/plugin.ts @@ -0,0 +1,35 @@ +/* + * 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 { CoreSetup, Plugin } from '@kbn/core/public'; +import { TriggersAndActionsUIPublicPluginSetup } from '@kbn/triggers-actions-ui-plugin/public'; +import { ActionsPublicPluginSetup } from '@kbn/actions-plugin/public'; +import { registerConnectorTypes } from './connector_types'; + +export type Setup = void; +export type Start = void; + +export interface StackConnectorsPublicSetupDeps { + triggersActionsUi: TriggersAndActionsUIPublicPluginSetup; + actions: ActionsPublicPluginSetup; +} + +export class StackConnectorsPublicPlugin + implements Plugin +{ + public setup(core: CoreSetup, { triggersActionsUi, actions }: StackConnectorsPublicSetupDeps) { + registerConnectorTypes({ + connectorTypeRegistry: triggersActionsUi.actionTypeRegistry, + services: { + validateEmailAddresses: actions.validateEmailAddresses, + }, + }); + } + + public start() {} + public stop() {} +} diff --git a/x-pack/plugins/stack_connectors/tsconfig.json b/x-pack/plugins/stack_connectors/tsconfig.json index 395dc5a65be86..1cf8281670d0a 100644 --- a/x-pack/plugins/stack_connectors/tsconfig.json +++ b/x-pack/plugins/stack_connectors/tsconfig.json @@ -10,10 +10,12 @@ "server/**/*", // have to declare *.json explicitly due to https://github.com/microsoft/TypeScript/issues/25636 "server/**/*.json", - "common/**/*" + "common/**/*", + "public/**/*" ], "references": [ { "path": "../../../src/core/tsconfig.json" }, - { "path": "../actions/tsconfig.json" } + { "path": "../actions/tsconfig.json" }, + { "path": "../triggers_actions_ui/tsconfig.json" } ] } diff --git a/x-pack/plugins/synthetics/e2e/journeys/monitor_management.journey.ts b/x-pack/plugins/synthetics/e2e/journeys/monitor_management.journey.ts index 2b0aeca66f068..c3b325183b05a 100644 --- a/x-pack/plugins/synthetics/e2e/journeys/monitor_management.journey.ts +++ b/x-pack/plugins/synthetics/e2e/journeys/monitor_management.journey.ts @@ -225,3 +225,72 @@ journey('Monitor Management breadcrumbs', async ({ page, params }: { page: Page; expect(isSuccessful).toBeTruthy(); }); }); + +journey( + 'MonitorManagement-case-insensitive sort', + async ({ page, params }: { page: Page; params: any }) => { + const uptime = monitorManagementPageProvider({ page, kibanaUrl: params.kibanaUrl }); + + const sortedMonitors = [ + Object.assign({}, configuration[DataStream.ICMP].monitorConfig, { + name: `A ${uuid.v4()}`, + }), + Object.assign({}, configuration[DataStream.ICMP].monitorConfig, { + name: `B ${uuid.v4()}`, + }), + Object.assign({}, configuration[DataStream.ICMP].monitorConfig, { + name: `aa ${uuid.v4()}`, + }), + ]; + + before(async () => { + await uptime.waitForLoadingToFinish(); + }); + + after(async () => { + await uptime.navigateToMonitorManagement(); + await uptime.deleteMonitors(); + await uptime.enableMonitorManagement(false); + }); + + step('Go to monitor-management', async () => { + await uptime.navigateToMonitorManagement(); + }); + + step('login to Kibana', async () => { + await uptime.loginToKibana(); + const invalid = await page.locator( + `text=Username or password is incorrect. Please try again.` + ); + expect(await invalid.isVisible()).toBeFalsy(); + }); + + for (const monitorConfig of sortedMonitors) { + step(`create monitor ${monitorConfig.name}`, async () => { + await uptime.enableMonitorManagement(); + await uptime.clickAddMonitor(); + await uptime.createMonitor({ monitorConfig, monitorType: DataStream.ICMP }); + const isSuccessful = await uptime.confirmAndSave(); + expect(isSuccessful).toBeTruthy(); + }); + } + + step(`list monitors in Monitor Management UI`, async () => { + await uptime.navigateToMonitorManagement(); + await Promise.all( + sortedMonitors.map((monitor) => + page.waitForSelector(`text=${monitor.name}`, { timeout: 160 * 1000 }) + ) + ); + + // Get first cell value from monitor table -> monitor name + const rows = page.locator('tbody tr td:first-child div.euiTableCellContent'); + expect(await rows.count()).toEqual(sortedMonitors.length); + + const expectedSort = sortedMonitors + .map((mn) => mn.name) + .sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase())); + expect(await rows.allTextContents()).toEqual(expectedSort); + }); + } +); diff --git a/x-pack/plugins/synthetics/server/legacy_uptime/lib/saved_objects/synthetics_monitor.ts b/x-pack/plugins/synthetics/server/legacy_uptime/lib/saved_objects/synthetics_monitor.ts index 61d0694d7cfa6..52be898373ef2 100644 --- a/x-pack/plugins/synthetics/server/legacy_uptime/lib/saved_objects/synthetics_monitor.ts +++ b/x-pack/plugins/synthetics/server/legacy_uptime/lib/saved_objects/synthetics_monitor.ts @@ -23,6 +23,7 @@ export const syntheticsMonitor: SavedObjectsType = { keyword: { type: 'keyword', ignore_above: 256, + normalizer: 'lowercase', }, }, }, diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index 8fc49aea07162..3c13f4bfe9c53 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -6377,6 +6377,380 @@ "xpack.stackConnectors.xmatters.shouldNotHaveSecretsUrl": "secretsUrl ne doit pas être fournie lorsque usesBasic est vrai", "xpack.stackConnectors.xmatters.shouldNotHaveUsernamePassword": "Le nom d'utilisateur et le mot de passe ne doivent pas être fournis lorsque usesBasic est faux", "xpack.stackConnectors.xmatters.title": "xMatters", + "xpack.stackConnectors.components.casesWebhook.error.missingVariables": "{variableCount, plural, one {Variable obligatoire manquante} other {Variables obligatoires manquantes}} : {variables}", + "xpack.stackConnectors.components.index.preconfiguredIndexHelpText": "Les documents sont indexés dans l'index {alertHistoryIndex}. ", + "xpack.stackConnectors.components.jira.unableToGetIssueMessage": "Impossible d'obtenir le problème ayant l'ID {id}", + "xpack.stackConnectors.components.pagerDuty.error.invalidTimestamp": "L'horodatage doit être une date valide, telle que {nowShortFormat} ou {nowLongFormat}.", + "xpack.stackConnectors.components.serviceNow.apiInfoError": "Statut reçu : {status} lors de la tentative d'obtention d'informations sur l'application", + "xpack.stackConnectors.components.serviceNow.appInstallationInfo": "{update} {create} ", + "xpack.stackConnectors.components.serviceNow.updateSuccessToastTitle": "Connecteur {connectorName} mis à jour", + "xpack.stackConnectors.components.serviceNow.apiUrlHelpLabel": "Fournissez l'URL complète vers l'instance ServiceNow souhaitée. Si vous n'en avez pas, {instance}.", + "xpack.stackConnectors.components.serviceNow.appRunning": "L'application Elastic de l'app store ServiceNow doit être installée avant d'exécuter la mise à jour. {visitLink} pour installer l'application", + "xpack.stackConnectors.components.swimlane.unableToGetApplicationMessage": "Impossible d'obtenir l'application avec l'ID {id}", + "xpack.stackConnectors.components.casesWebhook.commentsTextAreaFieldLabel": "Commentaires supplémentaires", + "xpack.stackConnectors.components.casesWebhook.descriptionTextAreaFieldLabel": "Description", + "xpack.stackConnectors.components.casesWebhook.tagsFieldLabel": "Balises", + "xpack.stackConnectors.components.casesWebhook.titleFieldLabel": "Résumé (requis)", + "xpack.stackConnectors.components.casesWebhook.addHeaderButton": "Ajouter", + "xpack.stackConnectors.components.casesWebhook.addVariable": "Ajouter une variable", + "xpack.stackConnectors.components.casesWebhook.authenticationLabel": "Authentification", + "xpack.stackConnectors.components.casesWebhook.caseCommentDesc": "Commentaire de cas Kibana", + "xpack.stackConnectors.components.casesWebhook.caseDescriptionDesc": "Description de cas Kibana", + "xpack.stackConnectors.components.casesWebhook.caseTagsDesc": "Balises de cas Kibana", + "xpack.stackConnectors.components.casesWebhook.caseTitleDesc": "Titre de cas Kibana", + "xpack.stackConnectors.components.casesWebhook.createCommentJsonHelp": "Objet JSON pour créer un commentaire. Utilisez le sélecteur de variable pour ajouter des données de cas à la charge de travail.", + "xpack.stackConnectors.components.casesWebhook.createCommentJsonTextFieldLabel": "Objet de création de commentaire", + "xpack.stackConnectors.components.casesWebhook.createCommentMethodTextFieldLabel": "Méthode de création de commentaire", + "xpack.stackConnectors.components.casesWebhook.createCommentUrlHelp": "URL de l'API pour ajouter un commentaire au cas.", + "xpack.stackConnectors.components.casesWebhook.createCommentUrlTextFieldLabel": "URL de création de commentaire", + "xpack.stackConnectors.components.casesWebhook.createIncidentJsonHelpText": "Objet JSON pour créer un cas. Utilisez le sélecteur de variable pour ajouter des données de cas à la charge de travail.", + "xpack.stackConnectors.components.casesWebhook.createIncidentJsonTextFieldLabel": "Objet de création de cas", + "xpack.stackConnectors.components.casesWebhook.createIncidentMethodTextFieldLabel": "Méthode de création de cas", + "xpack.stackConnectors.components.casesWebhook.createIncidentResponseKeyHelpText": "Clé JSON dans la réponse de création de cas qui contient l'ID de cas externe", + "xpack.stackConnectors.components.casesWebhook.createIncidentResponseKeyTextFieldLabel": "Clé de cas pour la réponse de création de cas", + "xpack.stackConnectors.components.casesWebhook.createIncidentUrlTextFieldLabel": "URL de création de cas", + "xpack.stackConnectors.components.casesWebhook.deleteHeaderButton": "Supprimer", + "xpack.stackConnectors.components.casesWebhook.docLink": "Configuration de Webhook - Connecteur de gestion des cas.", + "xpack.stackConnectors.components.casesWebhook.error.requiredCreateCommentIncidentText": "L'objet de création de commentaire doit être un JSON valide.", + "xpack.stackConnectors.components.casesWebhook.error.requiredCreateCommentUrlText": "L'URL de création de commentaire doit être au format URL.", + "xpack.stackConnectors.components.casesWebhook.error.requiredCreateIncidentText": "L'objet de création de cas est requis et doit être un JSON valide.", + "xpack.stackConnectors.components.casesWebhook.error.requiredCreateUrlText": "L'URL de création de cas est requise.", + "xpack.stackConnectors.components.casesWebhook.error.requiredGetIncidentUrlText": "L'URL d'obtention de cas est requise.", + "xpack.stackConnectors.components.casesWebhook.error.requiredUpdateIncidentText": "L'objet de mise à jour de cas est requis et doit être un JSON valide.", + "xpack.stackConnectors.components.casesWebhook.error.requiredUpdateUrlText": "L'URL de mise à jour de cas est requise.", + "xpack.stackConnectors.components.casesWebhook.externalIdDesc": "ID du système externe", + "xpack.stackConnectors.components.casesWebhook.externalTitleDesc": "Titre du système externe", + "xpack.stackConnectors.components.casesWebhook.getIncidentResponseExternalTitleKeyHelp": "Clé JSON dans la réponse d’obtention de cas qui contient le titre de cas externe", + "xpack.stackConnectors.components.casesWebhook.getIncidentResponseExternalTitleKeyTextFieldLabel": "Clé de titre externe pour la réponse d’obtention de cas", + "xpack.stackConnectors.components.casesWebhook.getIncidentUrlHelp": "URL d’API pour le JSON de détails d’obtention de cas provenant d’un système externe. Utilisez le sélecteur de variable pour ajouter à l’URL l'ID du système externe.", + "xpack.stackConnectors.components.casesWebhook.getIncidentUrlTextFieldLabel": "URL d’obtention de cas", + "xpack.stackConnectors.components.casesWebhook.hasAuthSwitchLabel": "Demander une authentification pour ce webhook", + "xpack.stackConnectors.components.casesWebhook.httpHeadersTitle": "En-têtes utilisés", + "xpack.stackConnectors.components.casesWebhook.jsonCodeEditorAriaLabel": "Éditeur de code", + "xpack.stackConnectors.components.casesWebhook.jsonFieldLabel": "JSON", + "xpack.stackConnectors.components.casesWebhook.keyTextFieldLabel": "Clé", + "xpack.stackConnectors.components.casesWebhook.next": "Suivant", + "xpack.stackConnectors.components.casesWebhook.passwordTextFieldLabel": "Mot de passe", + "xpack.stackConnectors.components.casesWebhook.previous": "Précédent", + "xpack.stackConnectors.components.casesWebhook.selectMessageText": "Envoyer une requête à un service web de gestion de cas.", + "xpack.stackConnectors.components.casesWebhook.step1": "Configurer le connecteur", + "xpack.stackConnectors.components.casesWebhook.step2": "Créer un cas", + "xpack.stackConnectors.components.casesWebhook.step2Description": "Définissez les champs pour créer le cas dans le système externe. Consultez la documentation de l'API de votre service pour savoir quels sont les champs obligatoires", + "xpack.stackConnectors.components.casesWebhook.step3": "Informations sur l’obtention de cas", + "xpack.stackConnectors.components.casesWebhook.step3Description": "Définissez les champs pour ajouter des commentaires au cas dans le système externe. Pour certains systèmes, cela peut être la même méthode que pour la création de mises à jour dans les cas. Consultez la documentation de l'API de votre service pour savoir quels sont les champs obligatoires.", + "xpack.stackConnectors.components.casesWebhook.step4": "Commentaires et mises à jour", + "xpack.stackConnectors.components.casesWebhook.step4a": "Créer une mise à jour dans le cas", + "xpack.stackConnectors.components.casesWebhook.step4aDescription": "Définissez les champs pour créer des mises à jour du cas dans le système externe. Pour certains systèmes, cela peut être la même méthode que pour l’ajout de commentaires aux cas.", + "xpack.stackConnectors.components.casesWebhook.step4b": "Ajouter un commentaire dans le cas", + "xpack.stackConnectors.components.casesWebhook.step4bDescription": "Définissez les champs pour ajouter des commentaires au cas dans le système externe. Pour certains systèmes, cela peut être la même méthode que pour la création de mises à jour dans les cas.", + "xpack.stackConnectors.components.casesWebhook.updateIncidentJsonHelpl": "Objet JSON pour mettre à jour le cas. Utilisez le sélecteur de variable pour ajouter des données de cas à la charge de travail.", + "xpack.stackConnectors.components.casesWebhook.updateIncidentJsonTextFieldLabel": "Objet de mise à jour de cas", + "xpack.stackConnectors.components.casesWebhook.updateIncidentMethodTextFieldLabel": "Méthode de mise à jour de cas", + "xpack.stackConnectors.components.casesWebhook.updateIncidentUrlHelp": "URL d’API pour mettre à jour le cas.", + "xpack.stackConnectors.components.casesWebhook.updateIncidentUrlTextFieldLabel": "URL de mise à jour du cas", + "xpack.stackConnectors.components.casesWebhook.userTextFieldLabel": "Nom d'utilisateur", + "xpack.stackConnectors.components.casesWebhook.valueTextFieldLabel": "Valeur", + "xpack.stackConnectors.components.casesWebhook.viewHeadersSwitch": "Ajouter un en-tête HTTP", + "xpack.stackConnectors.components.casesWebhook.viewIncidentUrlHelp": "URL pour voir le cas dans le système externe. Utilisez le sélecteur de variable pour ajouter à l’URL l'ID ou le titre du système externe.", + "xpack.stackConnectors.components.casesWebhook.viewIncidentUrlTextFieldLabel": "URL de visualisation de cas externe", + "xpack.stackConnectors.components.serviceNow.requiredShortDescTextField": "Une brève description est requise.", + "xpack.stackConnectors.components.email.exchangeForm.clientIdHelpLabel": "Configurer l'ID client", + "xpack.stackConnectors.components.email.exchangeForm.clientSecretHelpLabel": "Configurer l'identifiant client secret", + "xpack.stackConnectors.components.email.exchangeForm.tenantIdHelpLabel": "Configurer l'ID locataire", + "xpack.stackConnectors.components.email.connectorTypeTitle": "Envoyer vers la messagerie électronique", + "xpack.stackConnectors.components.email.amazonSesServerTypeLabel": "Amazon SES", + "xpack.stackConnectors.components.email.configureAccountsHelpLabel": "Configurer les comptes de messagerie électronique", + "xpack.stackConnectors.components.email.elasticCloudServerTypeLabel": "Elastic Cloud", + "xpack.stackConnectors.components.email.exchangeServerTypeLabel": "MS Exchange Server", + "xpack.stackConnectors.components.email.gmailServerTypeLabel": "Gmail", + "xpack.stackConnectors.components.email.otherServerTypeLabel": "Autre", + "xpack.stackConnectors.components.email.outlookServerTypeLabel": "Outlook", + "xpack.stackConnectors.components.email.selectMessageText": "Envoyez un e-mail à partir de votre serveur.", + "xpack.stackConnectors.components.email.updateErrorNotificationText": "Impossible d’obtenir la configuration du service", + "xpack.stackConnectors.components.index.error.badIndexOverrideSuffix": "L'index d'historique d'alertes doit contenir un suffixe valide.", + "xpack.stackConnectors.components.email.error.invalidPortText": "Le port n'est pas valide.", + "xpack.stackConnectors.components.email.error.requiredAuthUserNameText": "Le nom d'utilisateur est requis.", + "xpack.stackConnectors.components.email.error.requiredClientIdText": "L'ID client est requis.", + "xpack.stackConnectors.components.index.error.requiredDocumentJson": "Le document est requis et doit être un objet JSON valide.", + "xpack.stackConnectors.components.email.error.requiredEntryText": "Aucune entrée À, Cc ou Cci. Au moins une entrée est requise.", + "xpack.stackConnectors.components.email.error.requiredFromText": "L'expéditeur est requis.", + "xpack.stackConnectors.components.email.error.requiredHostText": "L'hôte est requis.", + "xpack.stackConnectors.components.email.error.requiredMessageText": "Le message est requis.", + "xpack.stackConnectors.components.email.error.requiredPortText": "Le port est requis.", + "xpack.stackConnectors.components.serverLog.error.requiredServerLogMessageText": "Le message est requis.", + "xpack.stackConnectors.components.email.error.requiredServiceText": "Le service est requis.", + "xpack.stackConnectors.components.email.error.requiredSubjectText": "Le sujet est requis.", + "xpack.stackConnectors.components.email.error.requiredTenantIdText": "L'ID locataire est requis.", + "xpack.stackConnectors.components.webhook.error.requiredWebhookBodyText": "Le corps est requis.", + "xpack.stackConnectors.components.casesWebhook.error.requiredWebhookSummaryText": "Le titre est requis.", + "xpack.stackConnectors.components.index.connectorTypeTitle": "Données d'index", + "xpack.stackConnectors.components.index.configureIndexHelpLabel": "Configuration du connecteur d'index.", + "xpack.stackConnectors.components.index.connectorSectionTitle": "Écrire dans l'index", + "xpack.stackConnectors.components.index.definedateFieldTooltip": "Définissez ce champ temporel sur l'heure à laquelle le document a été indexé.", + "xpack.stackConnectors.components.index.defineTimeFieldLabel": "Définissez l'heure pour chaque document", + "xpack.stackConnectors.components.index.documentsFieldLabel": "Document à indexer", + "xpack.stackConnectors.components.index.error.notValidIndexText": "L’index n’est pas valide.", + "xpack.stackConnectors.components.index.executionTimeFieldLabel": "Champ temporel", + "xpack.stackConnectors.components.index.howToBroadenSearchQueryDescription": "Utilisez le caractère * pour élargir votre recherche.", + "xpack.stackConnectors.components.index.indexDocumentHelpLabel": "Exemple de document d'index.", + "xpack.stackConnectors.components.index.indicesToQueryLabel": "Index", + "xpack.stackConnectors.components.index.jsonDocAriaLabel": "Éditeur de code", + "xpack.stackConnectors.components.index.preconfiguredIndex": "Index Elasticsearch", + "xpack.stackConnectors.components.index.preconfiguredIndexDocLink": "Affichez les documents.", + "xpack.stackConnectors.components.index.refreshLabel": "Actualiser l'index", + "xpack.stackConnectors.components.index.refreshTooltip": "Actualisez les partitions affectées pour rendre cette opération visible pour la recherche.", + "xpack.stackConnectors.components.index.selectMessageText": "Indexez les données dans Elasticsearch.", + "xpack.stackConnectors.components.jira.connectorTypeTitle": "Jira", + "xpack.stackConnectors.components.jira.apiTokenTextFieldLabel": "Token d'API", + "xpack.stackConnectors.components.jira.apiUrlTextFieldLabel": "URL", + "xpack.stackConnectors.components.jira.commentsTextAreaFieldLabel": "Commentaires supplémentaires", + "xpack.stackConnectors.components.jira.descriptionTextAreaFieldLabel": "Description", + "xpack.stackConnectors.components.jira.emailTextFieldLabel": "Adresse e-mail", + "xpack.stackConnectors.components.jira.impactSelectFieldLabel": "Étiquettes", + "xpack.stackConnectors.components.jira.labelsSpacesErrorMessage": "Les étiquettes ne peuvent pas contenir d'espaces.", + "xpack.stackConnectors.components.jira.parentIssueSearchLabel": "Problème parent", + "xpack.stackConnectors.components.jira.projectKey": "Clé de projet", + "xpack.stackConnectors.components.jira.requiredSummaryTextField": "Le résumé est requis.", + "xpack.stackConnectors.components.jira.searchIssuesComboBoxAriaLabel": "Taper pour rechercher", + "xpack.stackConnectors.components.jira.searchIssuesComboBoxPlaceholder": "Taper pour rechercher", + "xpack.stackConnectors.components.jira.searchIssuesLoading": "Chargement...", + "xpack.stackConnectors.components.jira.selectMessageText": "Créez un incident dans Jira.", + "xpack.stackConnectors.components.jira.severitySelectFieldLabel": "Priorité", + "xpack.stackConnectors.components.jira.summaryFieldLabel": "Résumé (requis)", + "xpack.stackConnectors.components.jira.unableToGetFieldsMessage": "Impossible d'obtenir les champs", + "xpack.stackConnectors.components.jira.unableToGetIssuesMessage": "Impossible d'obtenir les problèmes", + "xpack.stackConnectors.components.jira.unableToGetIssueTypesMessage": "Impossible d'obtenir les types d'erreurs", + "xpack.stackConnectors.components.jira.urgencySelectFieldLabel": "Type d'erreur", + "xpack.stackConnectors.components.pagerDuty.connectorTypeTitle": "Envoyer à PagerDuty", + "xpack.stackConnectors.components.pagerDuty.apiUrlInvalid": "URL d’API non valide", + "xpack.stackConnectors.components.pagerDuty.apiUrlTextFieldLabel": "URL de l'API (facultative)", + "xpack.stackConnectors.components.pagerDuty.classFieldLabel": "Classe (facultative)", + "xpack.stackConnectors.components.pagerDuty.componentTextFieldLabel": "Composant (facultatif)", + "xpack.stackConnectors.components.pagerDuty.dedupKeyTextFieldLabel": "DedupKey (facultatif)", + "xpack.stackConnectors.components.pagerDuty.dedupKeyTextRequiredFieldLabel": "DedupKey", + "xpack.stackConnectors.components.pagerDuty.error.requiredDedupKeyText": "DedupKey est requis lors de la résolution ou de la reconnaissance d'un incident.", + "xpack.stackConnectors.components.pagerDuty.error.requiredRoutingKeyText": "Une clé d'intégration / clé de routage est requise.", + "xpack.stackConnectors.components.pagerDuty.error.requiredSummaryText": "Le résumé est requis.", + "xpack.stackConnectors.components.pagerDuty.eventActionSelectFieldLabel": "Action de l'événement", + "xpack.stackConnectors.components.pagerDuty.eventSelectAcknowledgeOptionLabel": "Reconnaissance", + "xpack.stackConnectors.components.pagerDuty.eventSelectResolveOptionLabel": "Résoudre", + "xpack.stackConnectors.components.pagerDuty.eventSelectTriggerOptionLabel": "Déclencher", + "xpack.stackConnectors.components.pagerDuty.groupTextFieldLabel": "Regrouper (facultatif)", + "xpack.stackConnectors.components.pagerDuty.routingKeyNameHelpLabel": "Configurer un compte PagerDuty", + "xpack.stackConnectors.components.pagerDuty.routingKeyTextFieldLabel": "Clé d'intégration", + "xpack.stackConnectors.components.pagerDuty.selectMessageText": "Envoyez un événement dans PagerDuty.", + "xpack.stackConnectors.components.pagerDuty.severitySelectCriticalOptionLabel": "Critique", + "xpack.stackConnectors.components.pagerDuty.severitySelectErrorOptionLabel": "Erreur", + "xpack.stackConnectors.components.pagerDuty.severitySelectFieldLabel": "Sévérité (facultative)", + "xpack.stackConnectors.components.pagerDuty.severitySelectInfoOptionLabel": "Info", + "xpack.stackConnectors.components.pagerDuty.severitySelectWarningOptionLabel": "Avertissement", + "xpack.stackConnectors.components.pagerDuty.sourceTextFieldLabel": "Source (facultative)", + "xpack.stackConnectors.components.pagerDuty.summaryFieldLabel": "Résumé", + "xpack.stackConnectors.components.pagerDuty.timestampTextFieldLabel": "Horodatage (facultatif)", + "xpack.stackConnectors.components.resilient.connectorTypeTitle": "Résilient", + "xpack.stackConnectors.components.resilient.apiKeyId": "ID de clé d'API", + "xpack.stackConnectors.components.resilient.apiKeySecret": "Secret de clé d'API", + "xpack.stackConnectors.components.resilient.apiUrlTextFieldLabel": "URL", + "xpack.stackConnectors.components.resilient.commentsTextAreaFieldLabel": "Commentaires supplémentaires", + "xpack.stackConnectors.components.resilient.descriptionTextAreaFieldLabel": "Description", + "xpack.stackConnectors.components.resilient.nameFieldLabel": "Nom (requis)", + "xpack.stackConnectors.components.resilient.orgId": "ID d'organisation", + "xpack.stackConnectors.components.resilient.requiredNameTextField": "Un nom est requis.", + "xpack.stackConnectors.components.resilient.selectMessageText": "Créez un incident dans IBM Resilient.", + "xpack.stackConnectors.components.resilient.severity": "Sévérité", + "xpack.stackConnectors.components.resilient.unableToGetIncidentTypesMessage": "Impossible d'obtenir les types d'incidents", + "xpack.stackConnectors.components.resilient.unableToGetSeverityMessage": "Impossible d'obtenir la sévérité", + "xpack.stackConnectors.components.resilient.urgencySelectFieldLabel": "Type d'incident", + "xpack.stackConnectors.components.serverLog.connectorTypeTitle": "Envoyer vers le log de serveur", + "xpack.stackConnectors.components.serverLog.logLevelFieldLabel": "Niveau", + "xpack.stackConnectors.components.serverLog.logMessageFieldLabel": "Message", + "xpack.stackConnectors.components.serverLog.selectMessageText": "Ajouter un message au log Kibana.", + "xpack.stackConnectors.components.serviceNow.apiUrlTextFieldLabel": "URL d'instance ServiceNow", + "xpack.stackConnectors.components.serviceNow.applicationRequiredCallout": "Application Elastic ServiceNow non installée", + "xpack.stackConnectors.components.serviceNow.applicationRequiredCallout.content": "Veuillez vous rendre dans l'app store ServiceNow pour installer l'application", + "xpack.stackConnectors.components.serviceNow.applicationRequiredCallout.errorMessage": "Message d'erreur", + "xpack.stackConnectors.components.serviceNow.authenticationLabel": "Authentification", + "xpack.stackConnectors.components.serviceNow.cancelButtonText": "Annuler", + "xpack.stackConnectors.components.serviceNow.categoryTitle": "Catégorie", + "xpack.stackConnectors.components.serviceNow.clientIdTextFieldLabel": "ID client", + "xpack.stackConnectors.components.serviceNow.clientSecretTextFieldLabel": "Identifiant client secret", + "xpack.stackConnectors.components.serviceNow.commentsTextAreaFieldLabel": "Commentaires supplémentaires", + "xpack.stackConnectors.components.serviceNow.confirmButtonText": "Mettre à jour", + "xpack.stackConnectors.components.serviceNow.correlationDisplay": "Affichage de la corrélation (facultatif)", + "xpack.stackConnectors.components.serviceNow.correlationID": "ID corrélation (facultatif)", + "xpack.stackConnectors.components.serviceNow.deprecatedCalloutCreate": "ou créez-en un nouveau.", + "xpack.stackConnectors.components.serviceNow.deprecatedCalloutMigrate": "Supprimez ce connecteur", + "xpack.stackConnectors.components.serviceNow.deprecatedCalloutTitle": "Ce type de connecteur est déclassé", + "xpack.stackConnectors.components.serviceNow.descriptionTextAreaFieldLabel": "Description", + "xpack.stackConnectors.components.serviceNow.eventClassTextAreaFieldLabel": "Instance source", + "xpack.stackConnectors.components.serviceNow.fetchErrorMsg": "Impossible de récupérer. Vérifiez l'URL ou la configuration CORS de votre instance ServiceNow.", + "xpack.stackConnectors.components.serviceNow.impactSelectFieldLabel": "Impact", + "xpack.stackConnectors.components.serviceNow.installationCalloutTitle": "Pour utiliser ce connecteur, installez d'abord l'application Elastic à partir de l'app store ServiceNow.", + "xpack.stackConnectors.components.serviceNow.invalidApiUrlTextField": "L'URL n'est pas valide.", + "xpack.stackConnectors.components.serviceNow.keyIdTextFieldLabel": "ID de clé du vérificateur JWT", + "xpack.stackConnectors.components.serviceNow.messageKeyTextAreaFieldLabel": "Clé de message", + "xpack.stackConnectors.components.serviceNow.metricNameTextAreaFieldLabel": "Nom de l'indicateur", + "xpack.stackConnectors.components.serviceNow.nodeTextAreaFieldLabel": "Nœud", + "xpack.stackConnectors.components.serviceNow.passwordTextFieldLabel": "Mot de passe", + "xpack.stackConnectors.components.serviceNow.prioritySelectFieldLabel": "Priorité", + "xpack.stackConnectors.components.serviceNow.privateKeyPassLabelHelpText": "Il est requis uniquement si vous avez défini un mot de passe sur votre clé privée", + "xpack.stackConnectors.components.serviceNow.privateKeyPassTextFieldLabel": "Mot de passe de clé privée", + "xpack.stackConnectors.components.serviceNow.privateKeyTextFieldLabel": "Clé privée", + "xpack.stackConnectors.components.serviceNow.requiredClientIdTextField": "L'ID client est requis.", + "xpack.stackConnectors.components.serviceNow.requiredKeyIdTextField": "L'ID de clé du vérificateur JWT est requis.", + "xpack.stackConnectors.components.serviceNow.requiredPrivateKeyTextField": "La clé privée est requise.", + "xpack.stackConnectors.components.serviceNow.requiredSeverityTextField": "La sévérité est requise.", + "xpack.stackConnectors.components.serviceNow.requiredUserIdentifierTextField": "L'identifiant de l'utilisateur est requis.", + "xpack.stackConnectors.components.serviceNow.requiredUsernameTextField": "Le nom d'utilisateur est requis.", + "xpack.stackConnectors.components.serviceNow.resourceTextAreaFieldLabel": "Ressource", + "xpack.stackConnectors.components.serviceNow.setupDevInstance": "configurer une instance de développeur", + "xpack.stackConnectors.components.serviceNow.severityRequiredSelectFieldLabel": "Sévérité (requise)", + "xpack.stackConnectors.components.serviceNow.severitySelectFieldLabel": "Sévérité", + "xpack.stackConnectors.components.serviceNow.snInstanceLabel": "Instance ServiceNow", + "xpack.stackConnectors.components.serviceNow.sourceTextAreaFieldLabel": "Source", + "xpack.stackConnectors.components.serviceNow.subcategoryTitle": "Sous-catégorie", + "xpack.stackConnectors.components.serviceNow.title": "Incident", + "xpack.stackConnectors.components.serviceNow.titleFieldLabel": "Brève description (requise)", + "xpack.stackConnectors.components.serviceNow.typeTextAreaFieldLabel": "Type", + "xpack.stackConnectors.components.serviceNow.unableToGetChoicesMessage": "Impossible d'obtenir les choix", + "xpack.stackConnectors.components.serviceNow.unknown": "INCONNU", + "xpack.stackConnectors.components.serviceNow.updateCalloutText": "Le connecteur a été mis à jour.", + "xpack.stackConnectors.components.serviceNow.updateFormCredentialsTitle": "Fournir les informations d'authentification", + "xpack.stackConnectors.components.serviceNow.updateFormInstallTitle": "Installer l'application Elastic ServiceNow", + "xpack.stackConnectors.components.serviceNow.updateFormTitle": "Mettre à jour le connecteur ServiceNow", + "xpack.stackConnectors.components.serviceNow.updateFormUrlTitle": "Entrer votre URL d'instance ServiceNow", + "xpack.stackConnectors.components.serviceNow.urgencySelectFieldLabel": "Urgence", + "xpack.stackConnectors.components.serviceNow.useOAuth": "Utiliser l'authentification OAuth", + "xpack.stackConnectors.components.serviceNow.userEmailTextFieldLabel": "Identifiant de l'utilisateur", + "xpack.stackConnectors.components.serviceNow.usernameTextFieldLabel": "Nom d'utilisateur", + "xpack.stackConnectors.components.serviceNow.visitSNStore": "Visiter l'app store ServiceNow", + "xpack.stackConnectors.components.serviceNow.warningMessage": "Cette action mettra à jour toutes les instances de ce connecteur et ne pourra pas être annulée.", + "xpack.stackConnectors.components.serviceNow.correlationIDHelpLabel": "Identificateur pour les incidents de mise à jour", + "xpack.stackConnectors.components.serviceNowITOM.connectorTypeTitle": "ServiceNow ITOM", + "xpack.stackConnectors.components.serviceNowITOM.event": "Événement", + "xpack.stackConnectors.components.serviceNowITOM.selectMessageText": "Créez un événement dans ServiceNow ITOM.", + "xpack.stackConnectors.components.serviceNowITSM.connectorTypeTitle": "ServiceNow ITSM", + "xpack.stackConnectors.components.serviceNowITSM.selectMessageText": "Créez un incident dans ServiceNow ITSM.", + "xpack.stackConnectors.components.serviceNowSIR.connectorTypeTitle": "ServiceNow SecOps", + "xpack.stackConnectors.components.serviceNowSIR.selectMessageText": "Créez un incident dans ServiceNow SecOps.", + "xpack.stackConnectors.components.serviceNowSIR.title": "Incident de sécurité", + "xpack.stackConnectors.components.serviceNowSIR.correlationIDHelpLabel": "Identificateur pour les incidents de mise à jour", + "xpack.stackConnectors.components.slack.connectorTypeTitle": "Envoyer vers Slack", + "xpack.stackConnectors.components.slack.error.invalidWebhookUrlText": "L'URL de webhook n'est pas valide.", + "xpack.stackConnectors.components.slack.messageTextAreaFieldLabel": "Message", + "xpack.stackConnectors.components.slack.selectMessageText": "Envoyez un message à un canal ou à un utilisateur Slack.", + "xpack.stackConnectors.components.slack.webhookUrlHelpLabel": "Créer une URL de webhook Slack", + "xpack.stackConnectors.components.slack.webhookUrlTextFieldLabel": "URL de webhook", + "xpack.stackConnectors.components.swimlane.unableToGetApplicationFieldsMessage": "Impossible d'obtenir les champs de l'application", + "xpack.stackConnectors.components.swimlane.connectorTypeTitle": "Créer l'enregistrement Swimlane", + "xpack.stackConnectors.components.swimlane.alertIdFieldLabel": "ID de l'alerte", + "xpack.stackConnectors.components.swimlane.apiTokenNameHelpLabel": "Fournir un token d'API Swimlane", + "xpack.stackConnectors.components.swimlane.apiTokenTextFieldLabel": "Token d'API", + "xpack.stackConnectors.components.swimlane.apiUrlTextFieldLabel": "URL d'API", + "xpack.stackConnectors.components.swimlane.appIdTextFieldLabel": "ID d'application", + "xpack.stackConnectors.components.swimlane.caseIdFieldLabel": "ID de cas", + "xpack.stackConnectors.components.swimlane.caseNameFieldLabel": "Nom de cas", + "xpack.stackConnectors.components.swimlane.commentsFieldLabel": "Commentaires", + "xpack.stackConnectors.components.swimlane.configureConnectionLabel": "Configurer la connexion de l'API", + "xpack.stackConnectors.components.swimlane.connectorType": "Type de connecteur", + "xpack.stackConnectors.components.swimlane.descriptionFieldLabel": "Description", + "xpack.stackConnectors.components.swimlane.emptyMappingWarningDesc": "Ce connecteur ne peut pas être sélectionné, car il ne possède pas les mappings de champs d'alerte requis. Vous pouvez modifier ce connecteur pour ajouter les mappings de champs requis ou sélectionner un connecteur de type Alertes.", + "xpack.stackConnectors.components.swimlane.emptyMappingWarningTitle": "Ce connecteur ne possède pas de mappings de champs", + "xpack.stackConnectors.components.swimlane.error.requiredAlertID": "L'ID d'alerte est requis.", + "xpack.stackConnectors.components.swimlane.error.requiredAppIdText": "Un ID d'application est requis.", + "xpack.stackConnectors.components.swimlane.error.requiredCaseID": "L'ID de cas est requis.", + "xpack.stackConnectors.components.swimlane.error.requiredCaseName": "Le nom de cas est requis.", + "xpack.stackConnectors.components.swimlane.error.requiredComments": "Les commentaires sont requis.", + "xpack.stackConnectors.components.swimlane.error.requiredDescription": "La description est requise.", + "xpack.stackConnectors.components.swimlane.error.requiredRuleName": "Le nom de règle est requis.", + "xpack.stackConnectors.components.swimlane.error.requiredSeverity": "La sévérité est requise.", + "xpack.stackConnectors.components.swimlane.invalidApiUrlTextField": "L'URL n'est pas valide.", + "xpack.stackConnectors.components.swimlane.mappingTitleTextFieldLabel": "Configurer les mappings de champs", + "xpack.stackConnectors.components.swimlane.nextStep": "Suivant", + "xpack.stackConnectors.components.swimlane.nextStepHelpText": "Si les mappings de champs ne sont pas configurés, le type de connecteur Swimlane sera défini sur Tous.", + "xpack.stackConnectors.components.swimlane.prevStep": "Retour", + "xpack.stackConnectors.components.swimlane.ruleNameFieldLabel": "Nom de règle", + "xpack.stackConnectors.components.swimlane.selectMessageText": "Créer un enregistrement dans Swimlane", + "xpack.stackConnectors.components.swimlane.severityFieldLabel": "Sévérité", + "xpack.stackConnectors.components.teams.connectorTypeTitle": "Envoyer un message à un canal Microsoft Teams.", + "xpack.stackConnectors.components.teams.error.invalidWebhookUrlText": "L'URL de webhook n'est pas valide.", + "xpack.stackConnectors.components.teams.error.requiredMessageText": "Le message est requis.", + "xpack.stackConnectors.components.teams.error.webhookUrlTextLabel": "URL de webhook", + "xpack.stackConnectors.components.teams.messageTextAreaFieldLabel": "Message", + "xpack.stackConnectors.components.teams.selectMessageText": "Envoyer un message à un canal Microsoft Teams.", + "xpack.stackConnectors.components.teams.webhookUrlHelpLabel": "Créer une URL de webhook Microsoft Teams", + "xpack.stackConnectors.components.webhook.connectorTypeTitle": "Données de webhook", + "xpack.stackConnectors.components.webhook.addHeaderButtonLabel": "Ajouter un en-tête", + "xpack.stackConnectors.components.webhook.authenticationLabel": "Authentification", + "xpack.stackConnectors.components.webhook.bodyCodeEditorAriaLabel": "Éditeur de code", + "xpack.stackConnectors.components.webhook.bodyFieldLabel": "Corps", + "xpack.stackConnectors.components.webhook.error.invalidUrlTextField": "L'URL n'est pas valide.", + "xpack.stackConnectors.components.webhook.hasAuthSwitchLabel": "Demander une authentification pour ce webhook", + "xpack.stackConnectors.components.webhook.headerKeyTextFieldLabel": "Clé", + "xpack.stackConnectors.components.webhook.headerValueTextFieldLabel": "Valeur", + "xpack.stackConnectors.components.webhook.methodTextFieldLabel": "Méthode", + "xpack.stackConnectors.components.webhook.passwordTextFieldLabel": "Mot de passe", + "xpack.stackConnectors.components.webhook.removeHeaderIconLabel": "Clé", + "xpack.stackConnectors.components.webhook.selectMessageText": "Envoyer une requête à un service Web.", + "xpack.stackConnectors.components.webhook.urlTextFieldLabel": "URL", + "xpack.stackConnectors.components.webhook.userTextFieldLabel": "Nom d'utilisateur", + "xpack.stackConnectors.components.webhook.viewHeadersSwitch": "Ajouter un en-tête HTTP", + "xpack.stackConnectors.components.xmatters.connectorTypeTitle": "Données xMatters", + "xpack.stackConnectors.components.xmatters.authenticationLabel": "Authentification", + "xpack.stackConnectors.components.xmatters.basicAuthButtonGroupLegend": "Authentification de base", + "xpack.stackConnectors.components.xmatters.basicAuthLabel": "Authentification de base", + "xpack.stackConnectors.components.xmatters.connectorSettingsLabel": "Sélectionnez la méthode d'authentification utilisée pour la configuration du déclencheur xMatters.", + "xpack.stackConnectors.components.xmatters.error.invalidUrlTextField": "L'URL n'est pas valide.", + "xpack.stackConnectors.components.xmatters.error.invalidUsernameTextField": "Nom d'utilisateur non valide.", + "xpack.stackConnectors.components.xmatters.error.requiredUrlText": "L'URL est requise.", + "xpack.stackConnectors.components.xmatters.initiationUrlHelpText": "Spécifiez l'URL xMatters complète.", + "xpack.stackConnectors.components.xmatters.passwordTextFieldLabel": "Mot de passe", + "xpack.stackConnectors.components.xmatters.selectMessageText": "Déclenchez un workflow xMatters.", + "xpack.stackConnectors.components.xmatters.severity": "Sévérité", + "xpack.stackConnectors.components.xmatters.severitySelectCriticalOptionLabel": "Critique", + "xpack.stackConnectors.components.xmatters.severitySelectHighOptionLabel": "Élevé", + "xpack.stackConnectors.components.xmatters.severitySelectLowOptionLabel": "Bas", + "xpack.stackConnectors.components.xmatters.severitySelectMediumOptionLabel": "Moyenne", + "xpack.stackConnectors.components.xmatters.severitySelectMinimalOptionLabel": "Minimale", + "xpack.stackConnectors.components.xmatters.tags": "Balises", + "xpack.stackConnectors.components.xmatters.urlAuthLabel": "Authentification de l'URL", + "xpack.stackConnectors.components.xmatters.urlLabel": "URL d'initiation", + "xpack.stackConnectors.components.xmatters.userCredsLabel": "Identifiants d'utilisateur", + "xpack.stackConnectors.components.xmatters.userTextFieldLabel": "Nom d'utilisateur", + "xpack.stackConnectors.components.casesWebhook.createCommentWarningDesc": "Configurez les champs Create Comment URL et Create Comment Objects pour que le connecteur puisse partager les commentaires.", + "xpack.stackConnectors.components.casesWebhook.createCommentWarningTitle": "Impossible de partager les commentaires du cas", + "xpack.stackConnectors.components.serviceNow.deprecatedTooltipTitle": "Connecteur déclassé", + "xpack.stackConnectors.components.casesWebhook.error.requiredAuthUserNameText": "Le nom d'utilisateur est requis.", + "xpack.stackConnectors.components.casesWebhook.error.requiredCreateCommentMethodText": "La méthode de création de commentaire est requise.", + "xpack.stackConnectors.components.casesWebhook.error.requiredCreateIncidentResponseKeyText": "La clé d’ID de cas pour la réponse de création de cas est requise.", + "xpack.stackConnectors.components.casesWebhook.error.requiredCreateMethodText": "La méthode de création de cas est requise.", + "xpack.stackConnectors.components.casesWebhook.error.requiredGetIncidentResponseCreatedKeyText": "La clé de date de création de la réponse d’obtention de cas est requise.", + "xpack.stackConnectors.components.casesWebhook.error.requiredGetIncidentResponseExternalTitleKeyText": "La clé de titre du cas externe pour la réponse d’obtention de cas est requise.", + "xpack.stackConnectors.components.casesWebhook.error.requiredGetIncidentResponseUpdatedKeyText": "La clé de date de mise à jour de la réponse d’obtention de cas est requise.", + "xpack.stackConnectors.components.casesWebhook.error.requiredGetIncidentViewUrlKeyText": "L'URL de visualisation du cas est requise.", + "xpack.stackConnectors.components.casesWebhook.error.requiredUpdateMethodText": "La méthode de mise à jour du cas est requise.", + "xpack.stackConnectors.components.webhook.error.requiredAuthUserNameText": "Le nom d'utilisateur est requis.", + "xpack.stackConnectors.components.webhook.error.requiredMethodText": "La méthode est requise.", + "xpack.stackConnectors.components.email.addBccButton": "Cci", + "xpack.stackConnectors.components.email.addCcButton": "Cc", + "xpack.stackConnectors.components.email.authenticationLabel": "Authentification", + "xpack.stackConnectors.components.email.clientIdFieldLabel": "ID client", + "xpack.stackConnectors.components.email.clientSecretTextFieldLabel": "Identifiant client secret", + "xpack.stackConnectors.components.email.fromTextFieldLabel": "Expéditeur", + "xpack.stackConnectors.components.email.hasAuthSwitchLabel": "Demander une authentification pour ce serveur", + "xpack.stackConnectors.components.email.hostTextFieldLabel": "Hôte", + "xpack.stackConnectors.components.email.messageTextAreaFieldLabel": "Message", + "xpack.stackConnectors.components.email.passwordFieldLabel": "Mot de passe", + "xpack.stackConnectors.components.email.portTextFieldLabel": "Port", + "xpack.stackConnectors.components.email.recipientBccTextFieldLabel": "Cci", + "xpack.stackConnectors.components.email.recipientCopyTextFieldLabel": "Cc", + "xpack.stackConnectors.components.email.recipientTextFieldLabel": "À", + "xpack.stackConnectors.components.email.secureSwitchLabel": "Sécurisé", + "xpack.stackConnectors.components.email.serviceTextFieldLabel": "Service", + "xpack.stackConnectors.components.email.subjectTextFieldLabel": "Objet", + "xpack.stackConnectors.components.email.tenantIdFieldLabel": "ID locataire", + "xpack.stackConnectors.components.email.userTextFieldLabel": "Nom d'utilisateur", + "xpack.stackConnectors.components.index.resetDefaultIndexLabel": "Réinitialiser l'index par défaut", "xpack.aiops.explainLogRateSpikes.loadingState.identifiedFieldCandidates": "{fieldCandidatesCount, plural, one {# candidat de champ identifié} other {# candidats de champs identifiés}}.", "xpack.aiops.explainLogRateSpikes.loadingState.identifiedFieldValuePairs": "{fieldValuePairsCount, plural, one {# paire significative champ/valeur identifiée} other {# paires significatives champ/valeur identifiées}}.", "xpack.aiops.index.dataLoader.internalServerErrorMessage": "Erreur lors du chargement des données dans l'index {index}. {message}. La requête a peut-être expiré. Essayez d'utiliser un échantillon d'une taille inférieure ou de réduire la plage temporelle.", @@ -31824,20 +32198,7 @@ "xpack.triggersActionsUI.actionVariables.legacyTagsLabel": "Cet élément a été déclassé au profit de {variable}.", "xpack.triggersActionsUI.checkActionTypeEnabled.actionTypeDisabledByLicenseMessage": "Ce connecteur requiert une licence {minimumLicenseRequired}.", "xpack.triggersActionsUI.checkRuleTypeEnabled.ruleTypeDisabledByLicenseMessage": "Ce type de règle requiert une licence {minimumLicenseRequired}.", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.missingVariables": "{variableCount, plural, one {Variable obligatoire manquante} other {Variables obligatoires manquantes}} : {variables}", - "xpack.triggersActionsUI.components.builtinActionTypes.error.badIndexOverrideValue": "L'index d'historique d'alertes doit commencer par \"{alertHistoryPrefix}\".", - "xpack.triggersActionsUI.components.builtinActionTypes.error.invalidEmail": "L'adresse e-mail {email} n'est pas valide.", - "xpack.triggersActionsUI.components.builtinActionTypes.error.notAllowed": "L'adresse e-mail {email} n'est pas autorisée.", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.preconfiguredIndexHelpText": "Les documents sont indexés dans l'index {alertHistoryIndex}. ", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.unableToGetIssueMessage": "Impossible d'obtenir le problème ayant l'ID {id}", "xpack.triggersActionsUI.components.builtinActionTypes.missingSecretsValuesLabel": "Les informations sensibles ne sont pas importées. Veuillez entrer {encryptedFieldsLength, plural, one {la valeur} other {les valeurs}} pour {encryptedFieldsLength, plural, one {le champ suivant} other {les champs suivants}} {secretFieldsLabel}.", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.error.invalidTimestamp": "L'horodatage doit être une date valide, telle que {nowShortFormat} ou {nowLongFormat}.", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.apiInfoError": "Statut reçu : {status} lors de la tentative d'obtention d'informations sur l'application", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.appInstallationInfo": "{update} {create} ", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.updateSuccessToastTitle": "Connecteur {connectorName} mis à jour", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowAction.apiUrlHelpLabel": "Fournissez l'URL complète vers l'instance ServiceNow souhaitée. Si vous n'en avez pas, {instance}.", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowAction.serviceNowAppRunning": "L'application Elastic de l'app store ServiceNow doit être installée avant d'exécuter la mise à jour. {visitLink} pour installer l'application", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlane.unableToGetApplicationMessage": "Impossible d'obtenir l'application avec l'ID {id}", "xpack.triggersActionsUI.components.buttonGroupField.error.requiredField": "{label} est obligatoire.", "xpack.triggersActionsUI.components.deleteSelectedIdsErrorNotification.descriptionText": "Impossible de supprimer {numErrors, number} {numErrors, plural, one {{singleTitle}} other {{multipleTitle}}}", "xpack.triggersActionsUI.components.deleteSelectedIdsSuccessNotification.descriptionText": "Suppression de {numSuccesses, number} {numSuccesses, plural, one {{singleTitle}} other {{multipleTitle}}} effectuée", @@ -31993,340 +32354,6 @@ "xpack.triggersActionsUI.components.addMessageVariables.addRuleVariableTitle": "Ajouter une variable de règle", "xpack.triggersActionsUI.components.addMessageVariables.addVariablePopoverButton": "Ajouter une variable", "xpack.triggersActionsUI.components.alertTable.useFetchAlerts.errorMessageText": "Une erreur s'est produite lors de la recherche des alertes", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhook.commentsTextAreaFieldLabel": "Commentaires supplémentaires", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhook.descriptionTextAreaFieldLabel": "Description", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhook.tagsFieldLabel": "Balises", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhook.titleFieldLabel": "Résumé (requis)", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.actionTypeTitle": "Webhook - Données de gestion des cas", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.addHeaderButton": "Ajouter", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.addVariable": "Ajouter une variable", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.authenticationLabel": "Authentification", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.caseCommentDesc": "Commentaire de cas Kibana", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.caseDescriptionDesc": "Description de cas Kibana", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.caseTagsDesc": "Balises de cas Kibana", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.caseTitleDesc": "Titre de cas Kibana", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createCommentJsonHelp": "Objet JSON pour créer un commentaire. Utilisez le sélecteur de variable pour ajouter des données de cas à la charge de travail.", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createCommentJsonTextFieldLabel": "Objet de création de commentaire", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createCommentMethodTextFieldLabel": "Méthode de création de commentaire", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createCommentUrlHelp": "URL de l'API pour ajouter un commentaire au cas.", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createCommentUrlTextFieldLabel": "URL de création de commentaire", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createIncidentJsonHelpText": "Objet JSON pour créer un cas. Utilisez le sélecteur de variable pour ajouter des données de cas à la charge de travail.", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createIncidentJsonTextFieldLabel": "Objet de création de cas", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createIncidentMethodTextFieldLabel": "Méthode de création de cas", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createIncidentResponseKeyHelpText": "Clé JSON dans la réponse de création de cas qui contient l'ID de cas externe", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createIncidentResponseKeyTextFieldLabel": "Clé de cas pour la réponse de création de cas", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createIncidentUrlTextFieldLabel": "URL de création de cas", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.deleteHeaderButton": "Supprimer", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.docLink": "Configuration de Webhook - Connecteur de gestion des cas.", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.requiredCreateCommentIncidentText": "L'objet de création de commentaire doit être un JSON valide.", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.requiredCreateCommentUrlText": "L'URL de création de commentaire doit être au format URL.", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.requiredCreateIncidentText": "L'objet de création de cas est requis et doit être un JSON valide.", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.requiredCreateUrlText": "L'URL de création de cas est requise.", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.requiredGetIncidentUrlText": "L'URL d'obtention de cas est requise.", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.requiredUpdateIncidentText": "L'objet de mise à jour de cas est requis et doit être un JSON valide.", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.requiredUpdateUrlText": "L'URL de mise à jour de cas est requise.", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.externalIdDesc": "ID du système externe", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.externalTitleDesc": "Titre du système externe", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.getIncidentResponseExternalTitleKeyHelp": "Clé JSON dans la réponse d’obtention de cas qui contient le titre de cas externe", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.getIncidentResponseExternalTitleKeyTextFieldLabel": "Clé de titre externe pour la réponse d’obtention de cas", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.getIncidentUrlHelp": "URL d’API pour le JSON de détails d’obtention de cas provenant d’un système externe. Utilisez le sélecteur de variable pour ajouter à l’URL l'ID du système externe.", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.getIncidentUrlTextFieldLabel": "URL d’obtention de cas", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.hasAuthSwitchLabel": "Demander une authentification pour ce webhook", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.httpHeadersTitle": "En-têtes utilisés", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.jsonCodeEditorAriaLabel": "Éditeur de code", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.jsonFieldLabel": "JSON", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.keyTextFieldLabel": "Clé", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.next": "Suivant", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.passwordTextFieldLabel": "Mot de passe", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.previous": "Précédent", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.selectMessageText": "Envoyer une requête à un service web de gestion de cas.", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step1": "Configurer le connecteur", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step2": "Créer un cas", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step2Description": "Définissez les champs pour créer le cas dans le système externe. Consultez la documentation de l'API de votre service pour savoir quels sont les champs obligatoires", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step3": "Informations sur l’obtention de cas", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step3Description": "Définissez les champs pour ajouter des commentaires au cas dans le système externe. Pour certains systèmes, cela peut être la même méthode que pour la création de mises à jour dans les cas. Consultez la documentation de l'API de votre service pour savoir quels sont les champs obligatoires.", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step4": "Commentaires et mises à jour", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step4a": "Créer une mise à jour dans le cas", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step4aDescription": "Définissez les champs pour créer des mises à jour du cas dans le système externe. Pour certains systèmes, cela peut être la même méthode que pour l’ajout de commentaires aux cas.", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step4b": "Ajouter un commentaire dans le cas", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step4bDescription": "Définissez les champs pour ajouter des commentaires au cas dans le système externe. Pour certains systèmes, cela peut être la même méthode que pour la création de mises à jour dans les cas.", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.updateIncidentJsonHelpl": "Objet JSON pour mettre à jour le cas. Utilisez le sélecteur de variable pour ajouter des données de cas à la charge de travail.", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.updateIncidentJsonTextFieldLabel": "Objet de mise à jour de cas", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.updateIncidentMethodTextFieldLabel": "Méthode de mise à jour de cas", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.updateIncidentUrlHelp": "URL d’API pour mettre à jour le cas.", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.updateIncidentUrlTextFieldLabel": "URL de mise à jour du cas", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.userTextFieldLabel": "Nom d'utilisateur", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.valueTextFieldLabel": "Valeur", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.viewHeadersSwitch": "Ajouter un en-tête HTTP", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.viewIncidentUrlHelp": "URL pour voir le cas dans le système externe. Utilisez le sélecteur de variable pour ajouter à l’URL l'ID ou le titre du système externe.", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.viewIncidentUrlTextFieldLabel": "URL de visualisation de cas externe", - "xpack.triggersActionsUI.components.builtinActionTypes.common.requiredShortDescTextField": "Une brève description est requise.", - "xpack.triggersActionsUI.components.builtinActionTypes.email.exchangeForm.clientIdHelpLabel": "Configurer l'ID client", - "xpack.triggersActionsUI.components.builtinActionTypes.email.exchangeForm.clientSecretHelpLabel": "Configurer l'identifiant client secret", - "xpack.triggersActionsUI.components.builtinActionTypes.email.exchangeForm.tenantIdHelpLabel": "Configurer l'ID locataire", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.actionTypeTitle": "Envoyer vers la messagerie électronique", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.amazonSesServerTypeLabel": "Amazon SES", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.configureAccountsHelpLabel": "Configurer les comptes de messagerie électronique", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.elasticCloudServerTypeLabel": "Elastic Cloud", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.exchangeServerTypeLabel": "MS Exchange Server", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.gmailServerTypeLabel": "Gmail", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.otherServerTypeLabel": "Autre", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.outlookServerTypeLabel": "Outlook", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.selectMessageText": "Envoyez un e-mail à partir de votre serveur.", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.updateErrorNotificationText": "Impossible d’obtenir la configuration du service", - "xpack.triggersActionsUI.components.builtinActionTypes.error.badIndexOverrideSuffix": "L'index d'historique d'alertes doit contenir un suffixe valide.", - "xpack.triggersActionsUI.components.builtinActionTypes.error.invalidPortText": "Le port n'est pas valide.", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredAuthUserNameText": "Le nom d'utilisateur est requis.", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredClientIdText": "L'ID client est requis.", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredDocumentJson": "Le document est requis et doit être un objet JSON valide.", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredEntryText": "Aucune entrée À, Cc ou Cci. Au moins une entrée est requise.", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredFromText": "L'expéditeur est requis.", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredHostText": "L'hôte est requis.", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredMessageText": "Le message est requis.", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredPortText": "Le port est requis.", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredServerLogMessageText": "Le message est requis.", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredServiceText": "Le service est requis.", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredSlackMessageText": "Le message est requis.", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredSubjectText": "Le sujet est requis.", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredTenantIdText": "L'ID locataire est requis.", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredWebhookBodyText": "Le corps est requis.", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredWebhookSummaryText": "Le titre est requis.", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.actionTypeTitle": "Données d'index", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.chooseLabel": "Choisir…", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.configureIndexHelpLabel": "Configuration du connecteur d'index.", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.connectorSectionTitle": "Écrire dans l'index", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.definedateFieldTooltip": "Définissez ce champ temporel sur l'heure à laquelle le document a été indexé.", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.defineTimeFieldLabel": "Définissez l'heure pour chaque document", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.documentsFieldLabel": "Document à indexer", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.error.notValidIndexText": "L’index n’est pas valide.", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.executionTimeFieldLabel": "Champ temporel", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.howToBroadenSearchQueryDescription": "Utilisez le caractère * pour élargir votre recherche.", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.indexDocumentHelpLabel": "Exemple de document d'index.", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.indicesAndIndexPatternsLabel": "Basé sur vos vues de données", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.indicesToQueryLabel": "Index", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.jsonDocAriaLabel": "Éditeur de code", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.preconfiguredIndex": "Index Elasticsearch", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.preconfiguredIndexDocLink": "Affichez les documents.", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.refreshLabel": "Actualiser l'index", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.refreshTooltip": "Actualisez les partitions affectées pour rendre cette opération visible pour la recherche.", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.selectMessageText": "Indexez les données dans Elasticsearch.", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.actionTypeTitle": "Jira", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.apiTokenTextFieldLabel": "Token d'API", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.apiUrlTextFieldLabel": "URL", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.commentsTextAreaFieldLabel": "Commentaires supplémentaires", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.descriptionTextAreaFieldLabel": "Description", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.emailTextFieldLabel": "Adresse e-mail", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.impactSelectFieldLabel": "Étiquettes", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.labelsSpacesErrorMessage": "Les étiquettes ne peuvent pas contenir d'espaces.", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.parentIssueSearchLabel": "Problème parent", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.projectKey": "Clé de projet", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.requiredSummaryTextField": "Le résumé est requis.", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.searchIssuesComboBoxAriaLabel": "Taper pour rechercher", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.searchIssuesComboBoxPlaceholder": "Taper pour rechercher", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.searchIssuesLoading": "Chargement...", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.selectMessageText": "Créez un incident dans Jira.", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.severitySelectFieldLabel": "Priorité", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.summaryFieldLabel": "Résumé (requis)", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.unableToGetFieldsMessage": "Impossible d'obtenir les champs", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.unableToGetIssuesMessage": "Impossible d'obtenir les problèmes", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.unableToGetIssueTypesMessage": "Impossible d'obtenir les types d'erreurs", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.urgencySelectFieldLabel": "Type d'erreur", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.actionTypeTitle": "Envoyer à PagerDuty", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.apiUrlInvalid": "URL d’API non valide", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.apiUrlTextFieldLabel": "URL de l'API (facultative)", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.classFieldLabel": "Classe (facultative)", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.componentTextFieldLabel": "Composant (facultatif)", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.dedupKeyTextFieldLabel": "DedupKey (facultatif)", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.dedupKeyTextRequiredFieldLabel": "DedupKey", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.error.requiredDedupKeyText": "DedupKey est requis lors de la résolution ou de la reconnaissance d'un incident.", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.error.requiredRoutingKeyText": "Une clé d'intégration / clé de routage est requise.", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.error.requiredSummaryText": "Le résumé est requis.", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.eventActionSelectFieldLabel": "Action de l'événement", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.eventSelectAcknowledgeOptionLabel": "Reconnaissance", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.eventSelectResolveOptionLabel": "Résoudre", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.eventSelectTriggerOptionLabel": "Déclencher", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.groupTextFieldLabel": "Regrouper (facultatif)", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.routingKeyNameHelpLabel": "Configurer un compte PagerDuty", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.routingKeyTextFieldLabel": "Clé d'intégration", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.selectMessageText": "Envoyez un événement dans PagerDuty.", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.severitySelectCriticalOptionLabel": "Critique", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.severitySelectErrorOptionLabel": "Erreur", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.severitySelectFieldLabel": "Sévérité (facultative)", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.severitySelectInfoOptionLabel": "Info", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.severitySelectWarningOptionLabel": "Avertissement", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.sourceTextFieldLabel": "Source (facultative)", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.summaryFieldLabel": "Résumé", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.timestampTextFieldLabel": "Horodatage (facultatif)", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.actionTypeTitle": "Résilient", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.apiKeyId": "ID de clé d'API", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.apiKeySecret": "Secret de clé d'API", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.apiUrlTextFieldLabel": "URL", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.commentsTextAreaFieldLabel": "Commentaires supplémentaires", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.descriptionTextAreaFieldLabel": "Description", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.nameFieldLabel": "Nom (requis)", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.orgId": "ID d'organisation", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.requiredNameTextField": "Un nom est requis.", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.selectMessageText": "Créez un incident dans IBM Resilient.", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.severity": "Sévérité", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.unableToGetIncidentTypesMessage": "Impossible d'obtenir les types d'incidents", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.unableToGetSeverityMessage": "Impossible d'obtenir la sévérité", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.urgencySelectFieldLabel": "Type d'incident", - "xpack.triggersActionsUI.components.builtinActionTypes.serverLogAction.actionTypeTitle": "Envoyer vers le log de serveur", - "xpack.triggersActionsUI.components.builtinActionTypes.serverLogAction.logLevelFieldLabel": "Niveau", - "xpack.triggersActionsUI.components.builtinActionTypes.serverLogAction.logMessageFieldLabel": "Message", - "xpack.triggersActionsUI.components.builtinActionTypes.serverLogAction.selectMessageText": "Ajouter un message au log Kibana.", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.apiUrlTextFieldLabel": "URL d'instance ServiceNow", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.applicationRequiredCallout": "Application Elastic ServiceNow non installée", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.applicationRequiredCallout.content": "Veuillez vous rendre dans l'app store ServiceNow pour installer l'application", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.applicationRequiredCallout.errorMessage": "Message d'erreur", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.authenticationLabel": "Authentification", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.cancelButtonText": "Annuler", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.categoryTitle": "Catégorie", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.clientIdTextFieldLabel": "ID client", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.clientSecretTextFieldLabel": "Identifiant client secret", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.commentsTextAreaFieldLabel": "Commentaires supplémentaires", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.confirmButtonText": "Mettre à jour", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.correlationDisplay": "Affichage de la corrélation (facultatif)", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.correlationID": "ID corrélation (facultatif)", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.deprecatedCalloutCreate": "ou créez-en un nouveau.", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.deprecatedCalloutMigrate": "Supprimez ce connecteur", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.deprecatedCalloutTitle": "Ce type de connecteur est déclassé", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.descriptionTextAreaFieldLabel": "Description", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.eventClassTextAreaFieldLabel": "Instance source", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.fetchErrorMsg": "Impossible de récupérer. Vérifiez l'URL ou la configuration CORS de votre instance ServiceNow.", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.impactSelectFieldLabel": "Impact", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.installationCalloutTitle": "Pour utiliser ce connecteur, installez d'abord l'application Elastic à partir de l'app store ServiceNow.", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.invalidApiUrlTextField": "L'URL n'est pas valide.", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.keyIdTextFieldLabel": "ID de clé du vérificateur JWT", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.messageKeyTextAreaFieldLabel": "Clé de message", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.metricNameTextAreaFieldLabel": "Nom de l'indicateur", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.nodeTextAreaFieldLabel": "Nœud", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.passwordTextFieldLabel": "Mot de passe", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.prioritySelectFieldLabel": "Priorité", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.privateKeyPassLabelHelpText": "Il est requis uniquement si vous avez défini un mot de passe sur votre clé privée", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.privateKeyPassTextFieldLabel": "Mot de passe de clé privée", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.privateKeyTextFieldLabel": "Clé privée", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.requiredClientIdTextField": "L'ID client est requis.", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.requiredKeyIdTextField": "L'ID de clé du vérificateur JWT est requis.", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.requiredPrivateKeyTextField": "La clé privée est requise.", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.requiredSeverityTextField": "La sévérité est requise.", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.requiredUserIdentifierTextField": "L'identifiant de l'utilisateur est requis.", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.requiredUsernameTextField": "Le nom d'utilisateur est requis.", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.resourceTextAreaFieldLabel": "Ressource", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.setupDevInstance": "configurer une instance de développeur", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.severityRequiredSelectFieldLabel": "Sévérité (requise)", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.severitySelectFieldLabel": "Sévérité", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.snInstanceLabel": "Instance ServiceNow", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.sourceTextAreaFieldLabel": "Source", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.subcategoryTitle": "Sous-catégorie", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.title": "Incident", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.titleFieldLabel": "Brève description (requise)", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.typeTextAreaFieldLabel": "Type", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.unableToGetChoicesMessage": "Impossible d'obtenir les choix", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.unknown": "INCONNU", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.updateCalloutText": "Le connecteur a été mis à jour.", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.updateFormCredentialsTitle": "Fournir les informations d'authentification", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.updateFormInstallTitle": "Installer l'application Elastic ServiceNow", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.updateFormTitle": "Mettre à jour le connecteur ServiceNow", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.updateFormUrlTitle": "Entrer votre URL d'instance ServiceNow", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.urgencySelectFieldLabel": "Urgence", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.useOAuth": "Utiliser l'authentification OAuth", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.userEmailTextFieldLabel": "Identifiant de l'utilisateur", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.usernameTextFieldLabel": "Nom d'utilisateur", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.visitSNStore": "Visiter l'app store ServiceNow", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.warningMessage": "Cette action mettra à jour toutes les instances de ce connecteur et ne pourra pas être annulée.", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowAction.correlationIDHelpLabel": "Identificateur pour les incidents de mise à jour", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowITOM.actionTypeTitle": "ServiceNow ITOM", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenowITOM.event": "Événement", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowITOM.selectMessageText": "Créez un événement dans ServiceNow ITOM.", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowITSM.actionTypeTitle": "ServiceNow ITSM", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowITSM.selectMessageText": "Créez un incident dans ServiceNow ITSM.", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowSIR.actionTypeTitle": "ServiceNow SecOps", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowSIR.selectMessageText": "Créez un incident dans ServiceNow SecOps.", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenowSIR.title": "Incident de sécurité", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowSIRAction.correlationIDHelpLabel": "Identificateur pour les incidents de mise à jour", - "xpack.triggersActionsUI.components.builtinActionTypes.slackAction.actionTypeTitle": "Envoyer vers Slack", - "xpack.triggersActionsUI.components.builtinActionTypes.slackAction.error.invalidWebhookUrlText": "L'URL de webhook n'est pas valide.", - "xpack.triggersActionsUI.components.builtinActionTypes.slackAction.messageTextAreaFieldLabel": "Message", - "xpack.triggersActionsUI.components.builtinActionTypes.slackAction.selectMessageText": "Envoyez un message à un canal ou à un utilisateur Slack.", - "xpack.triggersActionsUI.components.builtinActionTypes.slackAction.webhookUrlHelpLabel": "Créer une URL de webhook Slack", - "xpack.triggersActionsUI.components.builtinActionTypes.slackAction.webhookUrlTextFieldLabel": "URL de webhook", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlane.unableToGetApplicationFieldsMessage": "Impossible d'obtenir les champs de l'application", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.actionTypeTitle": "Créer l'enregistrement Swimlane", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.alertIdFieldLabel": "ID de l'alerte", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.apiTokenNameHelpLabel": "Fournir un token d'API Swimlane", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.apiTokenTextFieldLabel": "Token d'API", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.apiUrlTextFieldLabel": "URL d'API", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.appIdTextFieldLabel": "ID d'application", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.caseIdFieldLabel": "ID de cas", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.caseNameFieldLabel": "Nom de cas", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.commentsFieldLabel": "Commentaires", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.configureConnectionLabel": "Configurer la connexion de l'API", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.connectorType": "Type de connecteur", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.descriptionFieldLabel": "Description", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.emptyMappingWarningDesc": "Ce connecteur ne peut pas être sélectionné, car il ne possède pas les mappings de champs d'alerte requis. Vous pouvez modifier ce connecteur pour ajouter les mappings de champs requis ou sélectionner un connecteur de type Alertes.", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.emptyMappingWarningTitle": "Ce connecteur ne possède pas de mappings de champs", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredAlertID": "L'ID d'alerte est requis.", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredAppIdText": "Un ID d'application est requis.", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredCaseID": "L'ID de cas est requis.", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredCaseName": "Le nom de cas est requis.", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredComments": "Les commentaires sont requis.", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredDescription": "La description est requise.", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredRuleName": "Le nom de règle est requis.", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredSeverity": "La sévérité est requise.", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.invalidApiUrlTextField": "L'URL n'est pas valide.", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.mappingTitleTextFieldLabel": "Configurer les mappings de champs", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.nextStep": "Suivant", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.nextStepHelpText": "Si les mappings de champs ne sont pas configurés, le type de connecteur Swimlane sera défini sur Tous.", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.prevStep": "Retour", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.ruleNameFieldLabel": "Nom de règle", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.selectMessageText": "Créer un enregistrement dans Swimlane", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.severityFieldLabel": "Sévérité", - "xpack.triggersActionsUI.components.builtinActionTypes.teamsAction.actionTypeTitle": "Envoyer un message à un canal Microsoft Teams.", - "xpack.triggersActionsUI.components.builtinActionTypes.teamsAction.error.invalidWebhookUrlText": "L'URL de webhook n'est pas valide.", - "xpack.triggersActionsUI.components.builtinActionTypes.teamsAction.error.requiredMessageText": "Le message est requis.", - "xpack.triggersActionsUI.components.builtinActionTypes.teamsAction.error.webhookUrlTextLabel": "URL de webhook", - "xpack.triggersActionsUI.components.builtinActionTypes.teamsAction.messageTextAreaFieldLabel": "Message", - "xpack.triggersActionsUI.components.builtinActionTypes.teamsAction.selectMessageText": "Envoyer un message à un canal Microsoft Teams.", - "xpack.triggersActionsUI.components.builtinActionTypes.teamsAction.webhookUrlHelpLabel": "Créer une URL de webhook Microsoft Teams", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.actionTypeTitle": "Données de webhook", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.addHeaderButtonLabel": "Ajouter un en-tête", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.authenticationLabel": "Authentification", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.bodyCodeEditorAriaLabel": "Éditeur de code", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.bodyFieldLabel": "Corps", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.error.invalidUrlTextField": "L'URL n'est pas valide.", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.hasAuthSwitchLabel": "Demander une authentification pour ce webhook", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.headerKeyTextFieldLabel": "Clé", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.headerValueTextFieldLabel": "Valeur", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.methodTextFieldLabel": "Méthode", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.passwordTextFieldLabel": "Mot de passe", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.removeHeaderIconLabel": "Clé", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.selectMessageText": "Envoyer une requête à un service Web.", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.urlTextFieldLabel": "URL", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.userTextFieldLabel": "Nom d'utilisateur", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.viewHeadersSwitch": "Ajouter un en-tête HTTP", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.actionTypeTitle": "Données xMatters", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.authenticationLabel": "Authentification", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.basicAuthButtonGroupLegend": "Authentification de base", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.basicAuthLabel": "Authentification de base", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.connectorSettingsLabel": "Sélectionnez la méthode d'authentification utilisée pour la configuration du déclencheur xMatters.", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.error.invalidUrlTextField": "L'URL n'est pas valide.", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.error.invalidUsernameTextField": "Nom d'utilisateur non valide.", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.error.requiredUrlText": "L'URL est requise.", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.initiationUrlHelpText": "Spécifiez l'URL xMatters complète.", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.passwordTextFieldLabel": "Mot de passe", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.selectMessageText": "Déclenchez un workflow xMatters.", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.severity": "Sévérité", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.severitySelectCriticalOptionLabel": "Critique", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.severitySelectHighOptionLabel": "Élevé", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.severitySelectLowOptionLabel": "Bas", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.severitySelectMediumOptionLabel": "Moyenne", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.severitySelectMinimalOptionLabel": "Minimale", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.tags": "Balises", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.urlAuthLabel": "Authentification de l'URL", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.urlLabel": "URL d'initiation", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.userCredsLabel": "Identifiants d'utilisateur", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.userTextFieldLabel": "Nom d'utilisateur", "xpack.triggersActionsUI.components.emptyConnectorsPrompt.addConnectorButtonLabel": "Créer un connecteur", "xpack.triggersActionsUI.components.emptyConnectorsPrompt.addConnectorEmptyBody": "Configurer les services de messagerie électronique, Slack, Elasticsearch et tiers que Kibana exécute.", "xpack.triggersActionsUI.components.emptyConnectorsPrompt.addConnectorEmptyTitle": "Créer votre premier connecteur", @@ -32348,8 +32375,6 @@ "xpack.triggersActionsUI.components.jsonEditorWithMessageVariable.noEditorErrorMessage": "L'éditeur est introuvable. Veuillez actualiser la page et réessayer", "xpack.triggersActionsUI.components.jsonEditorWithMessageVariable.noEditorErrorTitle": "Impossible d'ajouter une variable de message", "xpack.triggersActionsUI.components.simpleConnectorForm.secrets.authenticationLabel": "Authentification", - "xpack.triggersActionsUI.components.textAreaWithMessageVariable.createCommentWarningDesc": "Configurez les champs Create Comment URL et Create Comment Objects pour que le connecteur puisse partager les commentaires.", - "xpack.triggersActionsUI.components.textAreaWithMessageVariable.createCommentWarningTitle": "Impossible de partager les commentaires du cas", "xpack.triggersActionsUI.connectors.breadcrumbTitle": "Connecteurs", "xpack.triggersActionsUI.data.coreQueryParams.dateStartGTdateEndErrorMessage": "[dateStart] : est postérieure à [dateEnd]", "xpack.triggersActionsUI.data.coreQueryParams.intervalRequiredErrorMessage": "[interval] : doit être spécifié si [dateStart] n'est pas égale à [dateEnd]", @@ -32422,7 +32447,6 @@ "xpack.triggersActionsUI.sections.actionConnectorForm.loadingConnectorSettingsDescription": "Chargement des paramètres du connecteur…", "xpack.triggersActionsUI.sections.actionForm.actionSectionsTitle": "Actions", "xpack.triggersActionsUI.sections.actionForm.addActionButtonLabel": "Ajouter une action", - "xpack.triggersActionsUI.sections.actionForm.deprecatedTooltipTitle": "Connecteur déclassé", "xpack.triggersActionsUI.sections.actionForm.getMoreConnectorsTitle": "Obtenir davantage de connecteurs", "xpack.triggersActionsUI.sections.actionForm.getMoreRuleTypesTitle": "Obtenir davantage de types de règles", "xpack.triggersActionsUI.sections.actionForm.incidentManagementSystemLabel": "Système de gestion des incidents", @@ -32461,17 +32485,6 @@ "xpack.triggersActionsUI.sections.actionTypeForm.actionErrorToolTip": "L’action contient des erreurs.", "xpack.triggersActionsUI.sections.actionTypeForm.actionRunWhenInActionGroup": "Exécuter quand", "xpack.triggersActionsUI.sections.actionTypeForm.addNewConnectorEmptyButton": "Ajouter un connecteur", - "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredAuthUserNameText": "Le nom d'utilisateur est requis.", - "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredCreateCommentMethodText": "La méthode de création de commentaire est requise.", - "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredCreateIncidentResponseKeyText": "La clé d’ID de cas pour la réponse de création de cas est requise.", - "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredCreateMethodText": "La méthode de création de cas est requise.", - "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredGetIncidentResponseCreatedKeyText": "La clé de date de création de la réponse d’obtention de cas est requise.", - "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredGetIncidentResponseExternalTitleKeyText": "La clé de titre du cas externe pour la réponse d’obtention de cas est requise.", - "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredGetIncidentResponseUpdatedKeyText": "La clé de date de mise à jour de la réponse d’obtention de cas est requise.", - "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredGetIncidentViewUrlKeyText": "L'URL de visualisation du cas est requise.", - "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredUpdateMethodText": "La méthode de mise à jour du cas est requise.", - "xpack.triggersActionsUI.sections.addAction.webhookAction.error.requiredAuthUserNameText": "Le nom d'utilisateur est requis.", - "xpack.triggersActionsUI.sections.addAction.webhookAction.error.requiredMethodText": "La méthode est requise.", "xpack.triggersActionsUI.sections.addConnectorForm.selectConnectorFlyoutTitle": "Sélectionner un connecteur", "xpack.triggersActionsUI.sections.addConnectorForm.updateSuccessNotificationText": "Création de \"{connectorName}\" effectuée", "xpack.triggersActionsUI.sections.addModalConnectorForm.cancelButtonLabel": "Annuler", @@ -32481,25 +32494,6 @@ "xpack.triggersActionsUI.sections.alertsTable.alertsFlyout.reason": "Raison", "xpack.triggersActionsUI.sections.alertsTable.column.actions": "Actions", "xpack.triggersActionsUI.sections.alertsTable.leadingControl.viewDetails": "Afficher les détails", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.addBccButton": "Cci", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.addCcButton": "Cc", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.authenticationLabel": "Authentification", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.clientIdFieldLabel": "ID client", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.clientSecretTextFieldLabel": "Identifiant client secret", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.fromTextFieldLabel": "Expéditeur", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.hasAuthSwitchLabel": "Demander une authentification pour ce serveur", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.hostTextFieldLabel": "Hôte", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.messageTextAreaFieldLabel": "Message", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.passwordFieldLabel": "Mot de passe", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.portTextFieldLabel": "Port", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.recipientBccTextFieldLabel": "Cci", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.recipientCopyTextFieldLabel": "Cc", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.recipientTextFieldLabel": "À", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.secureSwitchLabel": "Sécurisé", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.serviceTextFieldLabel": "Service", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.subjectTextFieldLabel": "Objet", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.tenantIdFieldLabel": "ID locataire", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.userTextFieldLabel": "Nom d'utilisateur", "xpack.triggersActionsUI.sections.confirmRuleClose.confirmRuleCloseCancelButtonText": "Annuler", "xpack.triggersActionsUI.sections.confirmRuleClose.confirmRuleCloseConfirmButtonText": "Abandonner les modifications", "xpack.triggersActionsUI.sections.confirmRuleClose.confirmRuleCloseMessage": "Vous ne pouvez pas récupérer de modifications non enregistrées.", @@ -32689,7 +32683,6 @@ "xpack.triggersActionsUI.sections.rulesList.removeAllButton": "Tout supprimer", "xpack.triggersActionsUI.sections.rulesList.removeCancelButton": "Annuler", "xpack.triggersActionsUI.sections.rulesList.removeConfirmButton": "Tout supprimer", - "xpack.triggersActionsUI.sections.rulesList.resetDefaultIndexLabel": "Réinitialiser l'index par défaut", "xpack.triggersActionsUI.sections.rulesList.ruleErrorReasonDecrypting": "Une erreur s'est produite lors du déchiffrement de la règle.", "xpack.triggersActionsUI.sections.rulesList.ruleErrorReasonDisabled": "La règle n'a pas pu s'exécuter, car elle a été lancée après sa désactivation.", "xpack.triggersActionsUI.sections.rulesList.ruleErrorReasonLicense": "Impossible d'exécuter la règle", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 5458767e01efb..25c1c92f19b99 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -6371,9 +6371,383 @@ "xpack.stackConnectors.xmatters.shouldNotHaveSecretsUrl": "usesBasicがtrueのときには、secretsUrlを指定しないでください", "xpack.stackConnectors.xmatters.shouldNotHaveUsernamePassword": "usesBasicがfalseのときには、ユーザー名とパスワードを指定しないでください", "xpack.stackConnectors.xmatters.title": "xMatters", + "xpack.stackConnectors.components.index.error.badIndexOverrideValue": "アラート履歴インデックスの先頭は\"{alertHistoryPrefix}\"でなければなりません。", + "xpack.stackConnectors.components.email.error.invalidEmail": "電子メールアドレス{email}が無効です。", + "xpack.stackConnectors.components.email.error.notAllowed": "電子メールアドレス{email}が許可されていません。", + "xpack.stackConnectors.components.index.preconfiguredIndexHelpText": "ドキュメントは{alertHistoryIndex}インデックスにインデックスされます。", + "xpack.stackConnectors.components.jira.unableToGetIssueMessage": "ID {id}の問題を取得できません", + "xpack.stackConnectors.components.pagerDuty.error.invalidTimestamp": "タイムスタンプは、{nowShortFormat}や{nowLongFormat}などの有効な日付でなければなりません。", + "xpack.stackConnectors.components.serviceNow.apiInfoError": "アプリケーション情報の取得を試みるときの受信ステータス:{status}", + "xpack.stackConnectors.components.serviceNow.appInstallationInfo": "{update} {create} ", + "xpack.stackConnectors.components.serviceNow.updateSuccessToastTitle": "{connectorName}コネクターが更新されました", + "xpack.stackConnectors.components.serviceNow.apiUrlHelpLabel": "任意のServiceNowインスタンスへの完全なURLを入力します。ない場合は、{instance}。", + "xpack.stackConnectors.components.serviceNow.appRunning": "更新を実行する前に、ServiceNowアプリストアからElasticアプリをインストールする必要があります。アプリをインストールするには、{visitLink}", + "xpack.stackConnectors.components.swimlane.unableToGetApplicationMessage": "id {id}のアプリケーションフィールドを取得できません", + "xpack.stackConnectors.components.casesWebhook.commentsTextAreaFieldLabel": "追加のコメント", + "xpack.stackConnectors.components.casesWebhook.descriptionTextAreaFieldLabel": "説明", + "xpack.stackConnectors.components.casesWebhook.tagsFieldLabel": "タグ", + "xpack.stackConnectors.components.casesWebhook.titleFieldLabel": "概要(必須)", + "xpack.stackConnectors.components.casesWebhook.addHeaderButton": "追加", + "xpack.stackConnectors.components.casesWebhook.addVariable": "変数を追加", + "xpack.stackConnectors.components.casesWebhook.authenticationLabel": "認証", + "xpack.stackConnectors.components.casesWebhook.caseCommentDesc": "Kibanaケースコメント", + "xpack.stackConnectors.components.casesWebhook.caseDescriptionDesc": "Kibanaケース説明", + "xpack.stackConnectors.components.casesWebhook.caseTagsDesc": "Kibanaケースタグ", + "xpack.stackConnectors.components.casesWebhook.caseTitleDesc": "Kibanaケースタイトル", + "xpack.stackConnectors.components.casesWebhook.createCommentJsonHelp": "コメントを作成するJSONオブジェクト。変数セレクターを使用して、ケースデータをペイロードに追加します。", + "xpack.stackConnectors.components.casesWebhook.createCommentJsonTextFieldLabel": "コメントオブジェクトを作成", + "xpack.stackConnectors.components.casesWebhook.createCommentMethodTextFieldLabel": "コメントメソッドを作成", + "xpack.stackConnectors.components.casesWebhook.createCommentUrlHelp": "コメントをケースに追加するためのAPI URL。", + "xpack.stackConnectors.components.casesWebhook.createCommentUrlTextFieldLabel": "コメントURLを作成", + "xpack.stackConnectors.components.casesWebhook.createIncidentJsonHelpText": "ケースを作成するJSONオブジェクト。変数セレクターを使用して、ケースデータをペイロードに追加します。", + "xpack.stackConnectors.components.casesWebhook.createIncidentJsonTextFieldLabel": "ケースオブジェクトを作成", + "xpack.stackConnectors.components.casesWebhook.createIncidentMethodTextFieldLabel": "ケースメソッドを作成", + "xpack.stackConnectors.components.casesWebhook.createIncidentResponseKeyHelpText": "外部ケースIDを含むケース対応の作成のJSONキー", + "xpack.stackConnectors.components.casesWebhook.createIncidentResponseKeyTextFieldLabel": "ケース対応ケースキーを作成", + "xpack.stackConnectors.components.casesWebhook.createIncidentUrlTextFieldLabel": "ケースURLを作成", + "xpack.stackConnectors.components.casesWebhook.deleteHeaderButton": "削除", + "xpack.stackConnectors.components.casesWebhook.docLink": "Webフックの構成 - ケース管理コネクター。", + "xpack.stackConnectors.components.casesWebhook.error.requiredCreateCommentIncidentText": "コメントオブジェクトの作成は有効なJSONでなければなりません。", + "xpack.stackConnectors.components.casesWebhook.error.requiredCreateCommentUrlText": "コメントURLの作成はURL形式でなければなりません。", + "xpack.stackConnectors.components.casesWebhook.error.requiredCreateIncidentText": "ケースオブジェクトの作成は必須であり、有効なJSONでなければなりません。", + "xpack.stackConnectors.components.casesWebhook.error.requiredCreateUrlText": "ケースURLの作成は必須です。", + "xpack.stackConnectors.components.casesWebhook.error.requiredGetIncidentUrlText": "ケースURLの取得は必須です。", + "xpack.stackConnectors.components.casesWebhook.error.requiredUpdateIncidentText": "ケースオブジェクトの更新は必須であり、有効なJSONでなければなりません。", + "xpack.stackConnectors.components.casesWebhook.error.requiredUpdateUrlText": "ケースURLの更新は必須です。", + "xpack.stackConnectors.components.casesWebhook.externalIdDesc": "外部システムID", + "xpack.stackConnectors.components.casesWebhook.externalTitleDesc": "外部システムタイトル", + "xpack.stackConnectors.components.casesWebhook.getIncidentResponseExternalTitleKeyHelp": "外部ケースタイトルを含むケース対応の取得のJSONキー", + "xpack.stackConnectors.components.casesWebhook.getIncidentResponseExternalTitleKeyTextFieldLabel": "ケース対応の取得の外部タイトルキー", + "xpack.stackConnectors.components.casesWebhook.getIncidentUrlHelp": "外部システムからケース詳細JSONを取得するAPI URL。変数セレクターを使用して、外部システムIDをURLに追加します。", + "xpack.stackConnectors.components.casesWebhook.getIncidentUrlTextFieldLabel": "ケースURLを取得", + "xpack.stackConnectors.components.casesWebhook.hasAuthSwitchLabel": "この Web フックの認証が必要です", + "xpack.stackConnectors.components.casesWebhook.httpHeadersTitle": "使用中のヘッダー", + "xpack.stackConnectors.components.casesWebhook.jsonCodeEditorAriaLabel": "コードエディター", + "xpack.stackConnectors.components.casesWebhook.jsonFieldLabel": "JSON", + "xpack.stackConnectors.components.casesWebhook.keyTextFieldLabel": "キー", + "xpack.stackConnectors.components.casesWebhook.next": "次へ", + "xpack.stackConnectors.components.casesWebhook.passwordTextFieldLabel": "パスワード", + "xpack.stackConnectors.components.casesWebhook.previous": "前へ", + "xpack.stackConnectors.components.casesWebhook.selectMessageText": "ケース管理Webサービスにリクエストを送信します。", + "xpack.stackConnectors.components.casesWebhook.step1": "コネクターを設定", + "xpack.stackConnectors.components.casesWebhook.step2": "ケースを作成", + "xpack.stackConnectors.components.casesWebhook.step2Description": "外部システムでケースを作成するフィールドを設定します。必要なフィールドを判断するには、サービスのAPIドキュメントを確認してください", + "xpack.stackConnectors.components.casesWebhook.step3": "ケース情報を取得", + "xpack.stackConnectors.components.casesWebhook.step3Description": "外部システムでコメントをケースに追加するフィールドを設定します。一部のシステムでは、ケースでの更新の作成と同じメソッドの場合があります。必要なフィールドを判断するには、サービスのAPIドキュメントを確認してください。", + "xpack.stackConnectors.components.casesWebhook.step4": "コメントと更新", + "xpack.stackConnectors.components.casesWebhook.step4a": "ケースで更新を作成", + "xpack.stackConnectors.components.casesWebhook.step4aDescription": "外部システムでケースの更新を作成するフィールドを設定します。一部のシステムでは、ケースへのコメントの追加と同じメソッドの場合があります。", + "xpack.stackConnectors.components.casesWebhook.step4b": "ケースでコメントを追加", + "xpack.stackConnectors.components.casesWebhook.step4bDescription": "外部システムでコメントをケースに追加するフィールドを設定します。一部のシステムでは、ケースでの更新の作成と同じメソッドの場合があります。", + "xpack.stackConnectors.components.casesWebhook.updateIncidentJsonHelpl": "ケースを更新するJSONオブジェクト。変数セレクターを使用して、ケースデータをペイロードに追加します。", + "xpack.stackConnectors.components.casesWebhook.updateIncidentJsonTextFieldLabel": "ケースオブジェクトを更新", + "xpack.stackConnectors.components.casesWebhook.updateIncidentMethodTextFieldLabel": "ケースメソッドを更新", + "xpack.stackConnectors.components.casesWebhook.updateIncidentUrlHelp": "ケースを更新するAPI URL。", + "xpack.stackConnectors.components.casesWebhook.updateIncidentUrlTextFieldLabel": "ケースURLを更新", + "xpack.stackConnectors.components.casesWebhook.userTextFieldLabel": "ユーザー名", + "xpack.stackConnectors.components.casesWebhook.valueTextFieldLabel": "値", + "xpack.stackConnectors.components.casesWebhook.viewHeadersSwitch": "HTTP ヘッダーを追加", + "xpack.stackConnectors.components.casesWebhook.viewIncidentUrlHelp": "外部システムでケースを表示するURL。変数セレクターを使用して、外部システムIDまたは外部システムタイトルをURLに追加します。", + "xpack.stackConnectors.components.casesWebhook.viewIncidentUrlTextFieldLabel": "外部ケース表示URL", + "xpack.stackConnectors.components.serviceNow.requiredShortDescTextField": "短い説明が必要です。", + "xpack.stackConnectors.components.email.exchangeForm.clientIdHelpLabel": "クライアントIDの構成", + "xpack.stackConnectors.components.email.exchangeForm.clientSecretHelpLabel": "クライアントシークレットの構成", + "xpack.stackConnectors.components.email.exchangeForm.tenantIdHelpLabel": "テナントIDの構成", + "xpack.stackConnectors.components.email.connectorTypeTitle": "メールに送信", + "xpack.stackConnectors.components.email.amazonSesServerTypeLabel": "Amazon SES", + "xpack.stackConnectors.components.email.configureAccountsHelpLabel": "電子メールアカウントの構成", + "xpack.stackConnectors.components.email.elasticCloudServerTypeLabel": "Elastic Cloud", + "xpack.stackConnectors.components.email.exchangeServerTypeLabel": "MS Exchange Server", + "xpack.stackConnectors.components.email.gmailServerTypeLabel": "Gmail", + "xpack.stackConnectors.components.email.otherServerTypeLabel": "その他", + "xpack.stackConnectors.components.email.outlookServerTypeLabel": "Outlook", + "xpack.stackConnectors.components.email.selectMessageText": "サーバーからメールを送信します。", + "xpack.stackConnectors.components.email.updateErrorNotificationText": "サービス構成を取得できません", + "xpack.stackConnectors.components.index.error.badIndexOverrideSuffix": "アラート履歴インデックスには有効なサフィックスを含める必要があります。", + "xpack.stackConnectors.components.email.error.invalidPortText": "ポートが無効です。", + "xpack.stackConnectors.components.email.error.requiredAuthUserNameText": "ユーザー名が必要です。", + "xpack.stackConnectors.components.email.error.requiredClientIdText": "クライアントIDは必須です。", + "xpack.stackConnectors.components.index.error.requiredDocumentJson": "ドキュメントが必要です。有効なJSONオブジェクトにしてください。", + "xpack.stackConnectors.components.email.error.requiredEntryText": "To、Cc、または Bcc のエントリーがありません。 1 つ以上のエントリーが必要です。", + "xpack.stackConnectors.components.email.error.requiredFromText": "送信元が必要です。", + "xpack.stackConnectors.components.email.error.requiredHostText": "ホストが必要です。", + "xpack.stackConnectors.components.email.error.requiredMessageText": "メッセージが必要です。", + "xpack.stackConnectors.components.email.error.requiredPortText": "ポートが必要です。", + "xpack.stackConnectors.components.serverLog.error.requiredServerLogMessageText": "メッセージが必要です。", + "xpack.stackConnectors.components.email.error.requiredServiceText": "サービスは必須です。", + "xpack.stackConnectors.components.email.error.requiredSubjectText": "件名が必要です。", + "xpack.stackConnectors.components.email.error.requiredTenantIdText": "テナントIDは必須です。", + "xpack.stackConnectors.components.webhook.error.requiredWebhookBodyText": "本文が必要です。", + "xpack.stackConnectors.components.casesWebhook.error.requiredWebhookSummaryText": "タイトルが必要です。", + "xpack.stackConnectors.components.index.connectorTypeTitle": "データをインデックスする", + "xpack.stackConnectors.components.index.configureIndexHelpLabel": "インデックスコネクターを構成しています。", + "xpack.stackConnectors.components.index.connectorSectionTitle": "インデックスを書き出す", + "xpack.stackConnectors.components.index.definedateFieldTooltip": "この時間フィールドをドキュメントにインデックスが作成された時刻に設定します。", + "xpack.stackConnectors.components.index.defineTimeFieldLabel": "各ドキュメントの時刻フィールドを定義", + "xpack.stackConnectors.components.index.documentsFieldLabel": "インデックスするドキュメント", + "xpack.stackConnectors.components.index.error.notValidIndexText": "インデックスは有効ではありません。", + "xpack.stackConnectors.components.index.executionTimeFieldLabel": "時間フィールド", + "xpack.stackConnectors.components.index.howToBroadenSearchQueryDescription": "* で検索クエリの範囲を広げます。", + "xpack.stackConnectors.components.index.indexDocumentHelpLabel": "インデックスドキュメントの例。", + "xpack.stackConnectors.components.index.indicesToQueryLabel": "インデックス", + "xpack.stackConnectors.components.index.jsonDocAriaLabel": "コードエディター", + "xpack.stackConnectors.components.index.preconfiguredIndex": "Elasticsearchインデックス", + "xpack.stackConnectors.components.index.preconfiguredIndexDocLink": "ドキュメントを表示します。", + "xpack.stackConnectors.components.index.refreshLabel": "更新インデックス", + "xpack.stackConnectors.components.index.refreshTooltip": "影響を受けるシャードを更新し、この処理を検索できるようにします。", + "xpack.stackConnectors.components.index.selectMessageText": "データを Elasticsearch にインデックスしてください。", + "xpack.stackConnectors.components.jira.connectorTypeTitle": "Jira", + "xpack.stackConnectors.components.jira.apiTokenTextFieldLabel": "APIトークン", + "xpack.stackConnectors.components.jira.apiUrlTextFieldLabel": "URL", + "xpack.stackConnectors.components.jira.commentsTextAreaFieldLabel": "追加のコメント", + "xpack.stackConnectors.components.jira.descriptionTextAreaFieldLabel": "説明", + "xpack.stackConnectors.components.jira.emailTextFieldLabel": "メールアドレス", + "xpack.stackConnectors.components.jira.impactSelectFieldLabel": "ラベル", + "xpack.stackConnectors.components.jira.labelsSpacesErrorMessage": "ラベルにはスペースを使用できません。", + "xpack.stackConnectors.components.jira.parentIssueSearchLabel": "親問題", + "xpack.stackConnectors.components.jira.projectKey": "プロジェクトキー", + "xpack.stackConnectors.components.jira.requiredSummaryTextField": "概要が必要です。", + "xpack.stackConnectors.components.jira.searchIssuesComboBoxAriaLabel": "入力して検索", + "xpack.stackConnectors.components.jira.searchIssuesComboBoxPlaceholder": "入力して検索", + "xpack.stackConnectors.components.jira.searchIssuesLoading": "読み込み中...", + "xpack.stackConnectors.components.jira.selectMessageText": "Jira でインシデントを作成します。", + "xpack.stackConnectors.components.jira.severitySelectFieldLabel": "優先度", + "xpack.stackConnectors.components.jira.summaryFieldLabel": "概要(必須)", + "xpack.stackConnectors.components.jira.unableToGetFieldsMessage": "フィールドを取得できません", + "xpack.stackConnectors.components.jira.unableToGetIssuesMessage": "問題を取得できません", + "xpack.stackConnectors.components.jira.unableToGetIssueTypesMessage": "問題タイプを取得できません", + "xpack.stackConnectors.components.jira.urgencySelectFieldLabel": "問題タイプ", + "xpack.stackConnectors.components.pagerDuty.connectorTypeTitle": "PagerDuty に送信", + "xpack.stackConnectors.components.pagerDuty.apiUrlInvalid": "無効なAPI URL", + "xpack.stackConnectors.components.pagerDuty.apiUrlTextFieldLabel": "API URL(任意)", + "xpack.stackConnectors.components.pagerDuty.classFieldLabel": "クラス(任意)", + "xpack.stackConnectors.components.pagerDuty.componentTextFieldLabel": "コンポーネント(任意)", + "xpack.stackConnectors.components.pagerDuty.dedupKeyTextFieldLabel": "DedupKey(任意)", + "xpack.stackConnectors.components.pagerDuty.dedupKeyTextRequiredFieldLabel": "DedupKey", + "xpack.stackConnectors.components.pagerDuty.error.requiredDedupKeyText": "インシデントを解決または確認するときには、DedupKeyが必要です。", + "xpack.stackConnectors.components.pagerDuty.error.requiredRoutingKeyText": "統合キー/ルーティングキーが必要です。", + "xpack.stackConnectors.components.pagerDuty.error.requiredSummaryText": "概要が必要です。", + "xpack.stackConnectors.components.pagerDuty.eventActionSelectFieldLabel": "イベントアクション", + "xpack.stackConnectors.components.pagerDuty.eventSelectAcknowledgeOptionLabel": "承認", + "xpack.stackConnectors.components.pagerDuty.eventSelectResolveOptionLabel": "解決", + "xpack.stackConnectors.components.pagerDuty.eventSelectTriggerOptionLabel": "トリガー", + "xpack.stackConnectors.components.pagerDuty.groupTextFieldLabel": "グループ(任意)", + "xpack.stackConnectors.components.pagerDuty.routingKeyNameHelpLabel": "PagerDuty アカウントを構成します", + "xpack.stackConnectors.components.pagerDuty.routingKeyTextFieldLabel": "統合キー", + "xpack.stackConnectors.components.pagerDuty.selectMessageText": "PagerDuty でイベントを送信します。", + "xpack.stackConnectors.components.pagerDuty.severitySelectCriticalOptionLabel": "重大", + "xpack.stackConnectors.components.pagerDuty.severitySelectErrorOptionLabel": "エラー", + "xpack.stackConnectors.components.pagerDuty.severitySelectFieldLabel": "重要度(任意)", + "xpack.stackConnectors.components.pagerDuty.severitySelectInfoOptionLabel": "情報", + "xpack.stackConnectors.components.pagerDuty.severitySelectWarningOptionLabel": "警告", + "xpack.stackConnectors.components.pagerDuty.sourceTextFieldLabel": "ソース(任意)", + "xpack.stackConnectors.components.pagerDuty.summaryFieldLabel": "まとめ", + "xpack.stackConnectors.components.pagerDuty.timestampTextFieldLabel": "タイムスタンプ(任意)", + "xpack.stackConnectors.components.resilient.connectorTypeTitle": "Resilient", + "xpack.stackConnectors.components.resilient.apiKeyId": "APIキーID", + "xpack.stackConnectors.components.resilient.apiKeySecret": "APIキーシークレット", + "xpack.stackConnectors.components.resilient.apiUrlTextFieldLabel": "URL", + "xpack.stackConnectors.components.resilient.commentsTextAreaFieldLabel": "追加のコメント", + "xpack.stackConnectors.components.resilient.descriptionTextAreaFieldLabel": "説明", + "xpack.stackConnectors.components.resilient.nameFieldLabel": "名前(必須)", + "xpack.stackConnectors.components.resilient.orgId": "組織 ID", + "xpack.stackConnectors.components.resilient.requiredNameTextField": "名前が必要です。", + "xpack.stackConnectors.components.resilient.selectMessageText": "IBM Resilient でインシデントを作成します。", + "xpack.stackConnectors.components.resilient.severity": "深刻度", + "xpack.stackConnectors.components.resilient.unableToGetIncidentTypesMessage": "インシデントタイプを取得できません", + "xpack.stackConnectors.components.resilient.unableToGetSeverityMessage": "深刻度を取得できません", + "xpack.stackConnectors.components.resilient.urgencySelectFieldLabel": "インシデントタイプ", + "xpack.stackConnectors.components.serverLog.connectorTypeTitle": "サーバーログに送信", + "xpack.stackConnectors.components.serverLog.logLevelFieldLabel": "レベル", + "xpack.stackConnectors.components.serverLog.logMessageFieldLabel": "メッセージ", + "xpack.stackConnectors.components.serverLog.selectMessageText": "Kibana ログにメッセージを追加します。", + "xpack.stackConnectors.components.serviceNow.apiUrlTextFieldLabel": "ServiceNowインスタンスURL", + "xpack.stackConnectors.components.serviceNow.applicationRequiredCallout": "Elastic ServiceNowアプリがインストールされていません", + "xpack.stackConnectors.components.serviceNow.applicationRequiredCallout.content": "ServiceNowアプリストアに移動し、アプリケーションをインストールしてください", + "xpack.stackConnectors.components.serviceNow.applicationRequiredCallout.errorMessage": "エラーメッセージ", + "xpack.stackConnectors.components.serviceNow.authenticationLabel": "認証", + "xpack.stackConnectors.components.serviceNow.cancelButtonText": "キャンセル", + "xpack.stackConnectors.components.serviceNow.categoryTitle": "カテゴリー", + "xpack.stackConnectors.components.serviceNow.clientIdTextFieldLabel": "クライアントID", + "xpack.stackConnectors.components.serviceNow.clientSecretTextFieldLabel": "クライアントシークレット", + "xpack.stackConnectors.components.serviceNow.commentsTextAreaFieldLabel": "追加のコメント", + "xpack.stackConnectors.components.serviceNow.confirmButtonText": "更新", + "xpack.stackConnectors.components.serviceNow.correlationDisplay": "相関関係表示(オプション)", + "xpack.stackConnectors.components.serviceNow.correlationID": "相関関係ID(オプション)", + "xpack.stackConnectors.components.serviceNow.deprecatedCalloutCreate": "または新規作成します。", + "xpack.stackConnectors.components.serviceNow.deprecatedCalloutMigrate": "このコネクターを更新します", + "xpack.stackConnectors.components.serviceNow.deprecatedCalloutTitle": "このコネクターは廃止予定です", + "xpack.stackConnectors.components.serviceNow.descriptionTextAreaFieldLabel": "説明", + "xpack.stackConnectors.components.serviceNow.eventClassTextAreaFieldLabel": "ソースインスタンス", + "xpack.stackConnectors.components.serviceNow.fetchErrorMsg": "取得できませんでした。ServiceNowインスタンスのURLまたはCORS公正を確認します。", + "xpack.stackConnectors.components.serviceNow.impactSelectFieldLabel": "インパクト", + "xpack.stackConnectors.components.serviceNow.installationCalloutTitle": "このコネクターを使用するには、まずServiceNowアプリストアからElasticアプリをインストールします。", + "xpack.stackConnectors.components.serviceNow.invalidApiUrlTextField": "URL が無効です。", + "xpack.stackConnectors.components.serviceNow.keyIdTextFieldLabel": "JWT VerifierキーID", + "xpack.stackConnectors.components.serviceNow.messageKeyTextAreaFieldLabel": "メッセージキー", + "xpack.stackConnectors.components.serviceNow.metricNameTextAreaFieldLabel": "メトリック名", + "xpack.stackConnectors.components.serviceNow.nodeTextAreaFieldLabel": "ノード", + "xpack.stackConnectors.components.serviceNow.passwordTextFieldLabel": "パスワード", + "xpack.stackConnectors.components.serviceNow.prioritySelectFieldLabel": "優先度", + "xpack.stackConnectors.components.serviceNow.privateKeyPassLabelHelpText": "これは、秘密鍵でパスワードを設定した場合にのみ必要です", + "xpack.stackConnectors.components.serviceNow.privateKeyPassTextFieldLabel": "秘密鍵パスワード", + "xpack.stackConnectors.components.serviceNow.privateKeyTextFieldLabel": "秘密鍵", + "xpack.stackConnectors.components.serviceNow.requiredClientIdTextField": "クライアントIDは必須です。", + "xpack.stackConnectors.components.serviceNow.requiredKeyIdTextField": "JWT VerifierキーIDは必須です。", + "xpack.stackConnectors.components.serviceNow.requiredPrivateKeyTextField": "秘密鍵は必須です。", + "xpack.stackConnectors.components.serviceNow.requiredSeverityTextField": "重要度は必須です。", + "xpack.stackConnectors.components.serviceNow.requiredUserIdentifierTextField": "ユーザーIDは必須です。", + "xpack.stackConnectors.components.serviceNow.requiredUsernameTextField": "ユーザー名が必要です。", + "xpack.stackConnectors.components.serviceNow.resourceTextAreaFieldLabel": "リソース", + "xpack.stackConnectors.components.serviceNow.setupDevInstance": "開発者インスタンスを設定", + "xpack.stackConnectors.components.serviceNow.severityRequiredSelectFieldLabel": "重要度(必須)", + "xpack.stackConnectors.components.serviceNow.severitySelectFieldLabel": "深刻度", + "xpack.stackConnectors.components.serviceNow.snInstanceLabel": "ServiceNowインスタンス", + "xpack.stackConnectors.components.serviceNow.sourceTextAreaFieldLabel": "送信元", + "xpack.stackConnectors.components.serviceNow.subcategoryTitle": "サブカテゴリー", + "xpack.stackConnectors.components.serviceNow.title": "インシデント", + "xpack.stackConnectors.components.serviceNow.titleFieldLabel": "短い説明(必須)", + "xpack.stackConnectors.components.serviceNow.typeTextAreaFieldLabel": "型", + "xpack.stackConnectors.components.serviceNow.unableToGetChoicesMessage": "選択肢を取得できません", + "xpack.stackConnectors.components.serviceNow.unknown": "不明", + "xpack.stackConnectors.components.serviceNow.updateCalloutText": "コネクターが更新されました。", + "xpack.stackConnectors.components.serviceNow.updateFormCredentialsTitle": "認証資格情報を入力", + "xpack.stackConnectors.components.serviceNow.updateFormInstallTitle": "Elastic ServiceNowアプリをインストール", + "xpack.stackConnectors.components.serviceNow.updateFormTitle": "ServiceNowコネクターを更新", + "xpack.stackConnectors.components.serviceNow.updateFormUrlTitle": "ServiceNowインスタンスURLを入力", + "xpack.stackConnectors.components.serviceNow.urgencySelectFieldLabel": "緊急", + "xpack.stackConnectors.components.serviceNow.useOAuth": "OAuth認証を使用", + "xpack.stackConnectors.components.serviceNow.userEmailTextFieldLabel": "ユーザーID", + "xpack.stackConnectors.components.serviceNow.usernameTextFieldLabel": "ユーザー名", + "xpack.stackConnectors.components.serviceNow.visitSNStore": "ServiceNowアプリストアにアクセス", + "xpack.stackConnectors.components.serviceNow.warningMessage": "このコネクターのすべてのインスタンスが更新され、元に戻せません。", + "xpack.stackConnectors.components.serviceNow.correlationIDHelpLabel": "インシデントを更新するID", + "xpack.stackConnectors.components.serviceNowITOM.connectorTypeTitle": "ServiceNow ITOM", + "xpack.stackConnectors.components.serviceNowITOM.event": "イベント", + "xpack.stackConnectors.components.serviceNowITOM.selectMessageText": "ServiceNow ITOMでイベントを作成します。", + "xpack.stackConnectors.components.serviceNowITSM.connectorTypeTitle": "ServiceNow ITSM", + "xpack.stackConnectors.components.serviceNowITSM.selectMessageText": "ServiceNow ITSMでインシデントを作成します。", + "xpack.stackConnectors.components.serviceNowSIR.connectorTypeTitle": "ServiceNow SecOps", + "xpack.stackConnectors.components.serviceNowSIR.selectMessageText": "ServiceNow SecOpsでインシデントを作成します。", + "xpack.stackConnectors.components.serviceNowSIR.title": "セキュリティインシデント", + "xpack.stackConnectors.components.serviceNowSIR.correlationIDHelpLabel": "インシデントを更新するID", + "xpack.stackConnectors.components.slack.connectorTypeTitle": "Slack に送信", + "xpack.stackConnectors.components.slack.error.invalidWebhookUrlText": "Web フック URL が無効です。", + "xpack.stackConnectors.components.slack.messageTextAreaFieldLabel": "メッセージ", + "xpack.stackConnectors.components.slack.selectMessageText": "Slack チャネルにメッセージを送信します。", + "xpack.stackConnectors.components.slack.webhookUrlHelpLabel": "Slack Web フック URL を作成", + "xpack.stackConnectors.components.slack.webhookUrlTextFieldLabel": "Web フック URL", + "xpack.stackConnectors.components.swimlane.unableToGetApplicationFieldsMessage": "アプリケーションフィールドを取得できません", + "xpack.stackConnectors.components.swimlane.connectorTypeTitle": "Swimlaneレコードを作成", + "xpack.stackConnectors.components.swimlane.alertIdFieldLabel": "アラートID", + "xpack.stackConnectors.components.swimlane.apiTokenNameHelpLabel": "Swimlane APIトークンを指定", + "xpack.stackConnectors.components.swimlane.apiTokenTextFieldLabel": "APIトークン", + "xpack.stackConnectors.components.swimlane.apiUrlTextFieldLabel": "API Url", + "xpack.stackConnectors.components.swimlane.appIdTextFieldLabel": "アプリケーションID", + "xpack.stackConnectors.components.swimlane.caseIdFieldLabel": "ケースID", + "xpack.stackConnectors.components.swimlane.caseNameFieldLabel": "ケース名", + "xpack.stackConnectors.components.swimlane.commentsFieldLabel": "コメント", + "xpack.stackConnectors.components.swimlane.configureConnectionLabel": "API接続を構成", + "xpack.stackConnectors.components.swimlane.connectorType": "コネクタータイプ", + "xpack.stackConnectors.components.swimlane.descriptionFieldLabel": "説明", + "xpack.stackConnectors.components.swimlane.emptyMappingWarningDesc": "このコネクターを選択できません。必要なアラートフィールドマッピングがありません。このコネクターを編集して、必要なフィールドマッピングを追加するか、タイプがアラートのコネクターを選択できます。", + "xpack.stackConnectors.components.swimlane.emptyMappingWarningTitle": "このコネクターにはフィールドマッピングがありません。", + "xpack.stackConnectors.components.swimlane.error.requiredAlertID": "アラートIDは必須です。", + "xpack.stackConnectors.components.swimlane.error.requiredAppIdText": "アプリIDは必須です。", + "xpack.stackConnectors.components.swimlane.error.requiredCaseID": "ケースIDは必須です。", + "xpack.stackConnectors.components.swimlane.error.requiredCaseName": "ケース名は必須です。", + "xpack.stackConnectors.components.swimlane.error.requiredComments": "コメントは必須です。", + "xpack.stackConnectors.components.swimlane.error.requiredDescription": "説明が必要です。", + "xpack.stackConnectors.components.swimlane.error.requiredRuleName": "ルール名は必須です。", + "xpack.stackConnectors.components.swimlane.error.requiredSeverity": "重要度は必須です。", + "xpack.stackConnectors.components.swimlane.invalidApiUrlTextField": "URL が無効です。", + "xpack.stackConnectors.components.swimlane.mappingTitleTextFieldLabel": "フィールドマッピングを構成", + "xpack.stackConnectors.components.swimlane.nextStep": "次へ", + "xpack.stackConnectors.components.swimlane.nextStepHelpText": "フィールドマッピングが構成されていない場合、Swimlaneコネクタータイプはすべてに設定されます。", + "xpack.stackConnectors.components.swimlane.prevStep": "戻る", + "xpack.stackConnectors.components.swimlane.ruleNameFieldLabel": "ルール名", + "xpack.stackConnectors.components.swimlane.selectMessageText": "Swimlaneでレコードを作成", + "xpack.stackConnectors.components.swimlane.severityFieldLabel": "深刻度", + "xpack.stackConnectors.components.teams.connectorTypeTitle": "メッセージを Microsoft Teams チャネルに送信します。", + "xpack.stackConnectors.components.teams.error.invalidWebhookUrlText": "Web フック URL が無効です。", + "xpack.stackConnectors.components.teams.error.requiredMessageText": "メッセージが必要です。", + "xpack.stackConnectors.components.teams.error.webhookUrlTextLabel": "Web フック URL", + "xpack.stackConnectors.components.teams.messageTextAreaFieldLabel": "メッセージ", + "xpack.stackConnectors.components.teams.selectMessageText": "メッセージを Microsoft Teams チャネルに送信します。", + "xpack.stackConnectors.components.teams.webhookUrlHelpLabel": "Microsoft Teams Web フック URL を作成", + "xpack.stackConnectors.components.webhook.connectorTypeTitle": "Web フックデータ", + "xpack.stackConnectors.components.webhook.addHeaderButtonLabel": "ヘッダーを追加", + "xpack.stackConnectors.components.webhook.authenticationLabel": "認証", + "xpack.stackConnectors.components.webhook.bodyCodeEditorAriaLabel": "コードエディター", + "xpack.stackConnectors.components.webhook.bodyFieldLabel": "本文", + "xpack.stackConnectors.components.webhook.error.invalidUrlTextField": "URL が無効です。", + "xpack.stackConnectors.components.webhook.hasAuthSwitchLabel": "この Web フックの認証が必要です", + "xpack.stackConnectors.components.webhook.headerKeyTextFieldLabel": "キー", + "xpack.stackConnectors.components.webhook.headerValueTextFieldLabel": "値", + "xpack.stackConnectors.components.webhook.methodTextFieldLabel": "メソド", + "xpack.stackConnectors.components.webhook.passwordTextFieldLabel": "パスワード", + "xpack.stackConnectors.components.webhook.removeHeaderIconLabel": "キー", + "xpack.stackConnectors.components.webhook.selectMessageText": "Web サービスにリクエストを送信してください。", + "xpack.stackConnectors.components.webhook.urlTextFieldLabel": "URL", + "xpack.stackConnectors.components.webhook.userTextFieldLabel": "ユーザー名", + "xpack.stackConnectors.components.webhook.viewHeadersSwitch": "HTTP ヘッダーを追加", + "xpack.stackConnectors.components.xmatters.connectorTypeTitle": "xMattersデータ", + "xpack.stackConnectors.components.xmatters.authenticationLabel": "認証", + "xpack.stackConnectors.components.xmatters.basicAuthButtonGroupLegend": "基本認証", + "xpack.stackConnectors.components.xmatters.basicAuthLabel": "基本認証", + "xpack.stackConnectors.components.xmatters.connectorSettingsLabel": "xMattersトリガーを設定するときに使用される認証方法を選択します。", + "xpack.stackConnectors.components.xmatters.error.invalidUrlTextField": "URL が無効です。", + "xpack.stackConnectors.components.xmatters.error.invalidUsernameTextField": "ユーザー名が無効です。", + "xpack.stackConnectors.components.xmatters.error.requiredUrlText": "URL が必要です。", + "xpack.stackConnectors.components.xmatters.initiationUrlHelpText": "完全なxMatters URLを含めます。", + "xpack.stackConnectors.components.xmatters.passwordTextFieldLabel": "パスワード", + "xpack.stackConnectors.components.xmatters.selectMessageText": "xMattersワークフローをトリガーします。", + "xpack.stackConnectors.components.xmatters.severity": "深刻度", + "xpack.stackConnectors.components.xmatters.severitySelectCriticalOptionLabel": "重大", + "xpack.stackConnectors.components.xmatters.severitySelectHighOptionLabel": "高", + "xpack.stackConnectors.components.xmatters.severitySelectLowOptionLabel": "低", + "xpack.stackConnectors.components.xmatters.severitySelectMediumOptionLabel": "中", + "xpack.stackConnectors.components.xmatters.severitySelectMinimalOptionLabel": "最小", + "xpack.stackConnectors.components.xmatters.tags": "タグ", + "xpack.stackConnectors.components.xmatters.urlAuthLabel": "URL認証", + "xpack.stackConnectors.components.xmatters.urlLabel": "開始URL", + "xpack.stackConnectors.components.xmatters.userCredsLabel": "ユーザー認証情報", + "xpack.stackConnectors.components.xmatters.userTextFieldLabel": "ユーザー名", + "xpack.stackConnectors.components.casesWebhook.createCommentWarningDesc": "コメントを外部で共有するには、コネクターの[コメントURLを作成]および[コメントオブジェクトを作成]フィールドを構成します。", + "xpack.stackConnectors.components.casesWebhook.createCommentWarningTitle": "ケースコメントを共有できません", + "xpack.stackConnectors.components.serviceNow.deprecatedTooltipTitle": "廃止予定のコネクター", + "xpack.stackConnectors.components.casesWebhook.error.requiredAuthUserNameText": "ユーザー名が必要です。", + "xpack.stackConnectors.components.casesWebhook.error.requiredCreateCommentMethodText": "コメントメソッドを作成は必須です。", + "xpack.stackConnectors.components.casesWebhook.error.requiredCreateIncidentResponseKeyText": "ケース対応の作成ケースIDキーが必要です。", + "xpack.stackConnectors.components.casesWebhook.error.requiredCreateMethodText": "ケースメソッドの作成は必須です。", + "xpack.stackConnectors.components.casesWebhook.error.requiredGetIncidentResponseCreatedKeyText": "ケース対応の取得の作成日キーが必要です。", + "xpack.stackConnectors.components.casesWebhook.error.requiredGetIncidentResponseExternalTitleKeyText": "ケース対応の取得の外部タイトルキーが必要です。", + "xpack.stackConnectors.components.casesWebhook.error.requiredGetIncidentResponseUpdatedKeyText": "ケース対応の取得の更新日キーが必要です。", + "xpack.stackConnectors.components.casesWebhook.error.requiredGetIncidentViewUrlKeyText": "ケースURLの表示は必須です。", + "xpack.stackConnectors.components.casesWebhook.error.requiredUpdateMethodText": "ケースメソッドの更新は必須です。", + "xpack.stackConnectors.components.webhook.error.requiredAuthUserNameText": "ユーザー名が必要です。", + "xpack.stackConnectors.components.webhook.error.requiredMethodText": "メソッドが必要です。", + "xpack.stackConnectors.components.email.addBccButton": "Bcc", + "xpack.stackConnectors.components.email.addCcButton": "Cc", + "xpack.stackConnectors.components.email.authenticationLabel": "認証", + "xpack.stackConnectors.components.email.clientIdFieldLabel": "クライアントID", + "xpack.stackConnectors.components.email.clientSecretTextFieldLabel": "クライアントシークレット", + "xpack.stackConnectors.components.email.fromTextFieldLabel": "送信元", + "xpack.stackConnectors.components.email.hasAuthSwitchLabel": "このサーバーの認証が必要です", + "xpack.stackConnectors.components.email.hostTextFieldLabel": "ホスト", + "xpack.stackConnectors.components.email.messageTextAreaFieldLabel": "メッセージ", + "xpack.stackConnectors.components.email.passwordFieldLabel": "パスワード", + "xpack.stackConnectors.components.email.portTextFieldLabel": "ポート", + "xpack.stackConnectors.components.email.recipientBccTextFieldLabel": "Bcc", + "xpack.stackConnectors.components.email.recipientCopyTextFieldLabel": "Cc", + "xpack.stackConnectors.components.email.recipientTextFieldLabel": "終了:", + "xpack.stackConnectors.components.email.secureSwitchLabel": "セキュア", + "xpack.stackConnectors.components.email.serviceTextFieldLabel": "サービス", + "xpack.stackConnectors.components.email.subjectTextFieldLabel": "件名", + "xpack.stackConnectors.components.email.tenantIdFieldLabel": "テナントID", + "xpack.stackConnectors.components.email.userTextFieldLabel": "ユーザー名", + "xpack.stackConnectors.components.index.resetDefaultIndexLabel": "デフォルトのインデックスをリセット", "xpack.aiops.explainLogRateSpikes.loadingState.identifiedFieldCandidates": "{fieldCandidatesCount, plural, other {# 個のフィールド候補}}が特定されました。", - "xpack.aiops.explainLogRateSpikes.loadingState.identifiedFieldValuePairs": "{fieldValuePairsCount, plural, other {# 個の重要なフィールド/値のペア}}が特定されました。", - "xpack.aiops.index.dataLoader.internalServerErrorMessage": "インデックス {index} のデータの読み込み中にエラーが発生。{message}。リクエストがタイムアウトした可能性があります。小さなサンプルサイズを使うか、時間範囲を狭めてみてください。", "xpack.aiops.index.dataViewNotBasedOnTimeSeriesNotificationTitle": "データビュー{dataViewTitle}は時系列に基づいていません", "xpack.aiops.index.errorLoadingDataMessage": "インデックス {index} のデータの読み込み中にエラーが発生。{message}。", "xpack.aiops.progressTitle": "進行状況:{progress}% — {progressMessage}", @@ -31799,20 +32173,7 @@ "xpack.triggersActionsUI.actionVariables.legacyTagsLabel": "{variable}の導入により、これは廃止される予定です。", "xpack.triggersActionsUI.checkActionTypeEnabled.actionTypeDisabledByLicenseMessage": "このコネクターには {minimumLicenseRequired} ライセンスが必要です。", "xpack.triggersActionsUI.checkRuleTypeEnabled.ruleTypeDisabledByLicenseMessage": "このルールタイプには{minimumLicenseRequired}ライセンスが必要です。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.missingVariables": "必須の{variableCount, plural, other {個の変数}}が見つかりません:{variables}", - "xpack.triggersActionsUI.components.builtinActionTypes.error.badIndexOverrideValue": "アラート履歴インデックスの先頭は\"{alertHistoryPrefix}\"でなければなりません。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.invalidEmail": "電子メールアドレス{email}が無効です。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.notAllowed": "電子メールアドレス{email}が許可されていません。", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.preconfiguredIndexHelpText": "ドキュメントは{alertHistoryIndex}インデックスにインデックスされます。", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.unableToGetIssueMessage": "ID {id}の問題を取得できません", "xpack.triggersActionsUI.components.builtinActionTypes.missingSecretsValuesLabel": "機密情報はインポートされません。次のフィールド{encryptedFieldsLength, plural, other {}}の値{encryptedFieldsLength, plural, other {}} {secretFieldsLabel}を入力してください。", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.error.invalidTimestamp": "タイムスタンプは、{nowShortFormat}や{nowLongFormat}などの有効な日付でなければなりません。", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.apiInfoError": "アプリケーション情報の取得を試みるときの受信ステータス:{status}", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.appInstallationInfo": "{update} {create} ", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.updateSuccessToastTitle": "{connectorName}コネクターが更新されました", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowAction.apiUrlHelpLabel": "任意のServiceNowインスタンスへの完全なURLを入力します。ない場合は、{instance}。", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowAction.serviceNowAppRunning": "更新を実行する前に、ServiceNowアプリストアからElasticアプリをインストールする必要があります。アプリをインストールするには、{visitLink}", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlane.unableToGetApplicationMessage": "id {id}のアプリケーションフィールドを取得できません", "xpack.triggersActionsUI.components.buttonGroupField.error.requiredField": "{label}が必要です。", "xpack.triggersActionsUI.components.deleteSelectedIdsErrorNotification.descriptionText": "{numErrors, number} {numErrors, plural, one {{singleTitle}} other {{multipleTitle}}}を削除できませんでした", "xpack.triggersActionsUI.components.deleteSelectedIdsSuccessNotification.descriptionText": "{numSuccesses, number} {numSuccesses, plural, one {{singleTitle}} other {{multipleTitle}}}を削除しました", @@ -31967,340 +32328,6 @@ "xpack.triggersActionsUI.components.addMessageVariables.addRuleVariableTitle": "ルール変数を追加", "xpack.triggersActionsUI.components.addMessageVariables.addVariablePopoverButton": "変数を追加", "xpack.triggersActionsUI.components.alertTable.useFetchAlerts.errorMessageText": "アラート検索でエラーが発生しました", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhook.commentsTextAreaFieldLabel": "追加のコメント", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhook.descriptionTextAreaFieldLabel": "説明", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhook.tagsFieldLabel": "タグ", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhook.titleFieldLabel": "概要(必須)", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.actionTypeTitle": "Webフック - ケース管理データ", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.addHeaderButton": "追加", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.addVariable": "変数を追加", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.authenticationLabel": "認証", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.caseCommentDesc": "Kibanaケースコメント", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.caseDescriptionDesc": "Kibanaケース説明", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.caseTagsDesc": "Kibanaケースタグ", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.caseTitleDesc": "Kibanaケースタイトル", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createCommentJsonHelp": "コメントを作成するJSONオブジェクト。変数セレクターを使用して、ケースデータをペイロードに追加します。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createCommentJsonTextFieldLabel": "コメントオブジェクトを作成", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createCommentMethodTextFieldLabel": "コメントメソッドを作成", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createCommentUrlHelp": "コメントをケースに追加するためのAPI URL。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createCommentUrlTextFieldLabel": "コメントURLを作成", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createIncidentJsonHelpText": "ケースを作成するJSONオブジェクト。変数セレクターを使用して、ケースデータをペイロードに追加します。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createIncidentJsonTextFieldLabel": "ケースオブジェクトを作成", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createIncidentMethodTextFieldLabel": "ケースメソッドを作成", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createIncidentResponseKeyHelpText": "外部ケースIDを含むケース対応の作成のJSONキー", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createIncidentResponseKeyTextFieldLabel": "ケース対応ケースキーを作成", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createIncidentUrlTextFieldLabel": "ケースURLを作成", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.deleteHeaderButton": "削除", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.docLink": "Webフックの構成 - ケース管理コネクター。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.requiredCreateCommentIncidentText": "コメントオブジェクトの作成は有効なJSONでなければなりません。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.requiredCreateCommentUrlText": "コメントURLの作成はURL形式でなければなりません。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.requiredCreateIncidentText": "ケースオブジェクトの作成は必須であり、有効なJSONでなければなりません。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.requiredCreateUrlText": "ケースURLの作成は必須です。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.requiredGetIncidentUrlText": "ケースURLの取得は必須です。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.requiredUpdateIncidentText": "ケースオブジェクトの更新は必須であり、有効なJSONでなければなりません。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.requiredUpdateUrlText": "ケースURLの更新は必須です。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.externalIdDesc": "外部システムID", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.externalTitleDesc": "外部システムタイトル", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.getIncidentResponseExternalTitleKeyHelp": "外部ケースタイトルを含むケース対応の取得のJSONキー", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.getIncidentResponseExternalTitleKeyTextFieldLabel": "ケース対応の取得の外部タイトルキー", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.getIncidentUrlHelp": "外部システムからケース詳細JSONを取得するAPI URL。変数セレクターを使用して、外部システムIDをURLに追加します。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.getIncidentUrlTextFieldLabel": "ケースURLを取得", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.hasAuthSwitchLabel": "この Web フックの認証が必要です", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.httpHeadersTitle": "使用中のヘッダー", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.jsonCodeEditorAriaLabel": "コードエディター", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.jsonFieldLabel": "JSON", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.keyTextFieldLabel": "キー", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.next": "次へ", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.passwordTextFieldLabel": "パスワード", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.previous": "前へ", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.selectMessageText": "ケース管理Webサービスにリクエストを送信します。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step1": "コネクターを設定", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step2": "ケースを作成", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step2Description": "外部システムでケースを作成するフィールドを設定します。必要なフィールドを判断するには、サービスのAPIドキュメントを確認してください", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step3": "ケース情報を取得", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step3Description": "外部システムでコメントをケースに追加するフィールドを設定します。一部のシステムでは、ケースでの更新の作成と同じメソッドの場合があります。必要なフィールドを判断するには、サービスのAPIドキュメントを確認してください。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step4": "コメントと更新", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step4a": "ケースで更新を作成", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step4aDescription": "外部システムでケースの更新を作成するフィールドを設定します。一部のシステムでは、ケースへのコメントの追加と同じメソッドの場合があります。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step4b": "ケースでコメントを追加", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step4bDescription": "外部システムでコメントをケースに追加するフィールドを設定します。一部のシステムでは、ケースでの更新の作成と同じメソッドの場合があります。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.updateIncidentJsonHelpl": "ケースを更新するJSONオブジェクト。変数セレクターを使用して、ケースデータをペイロードに追加します。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.updateIncidentJsonTextFieldLabel": "ケースオブジェクトを更新", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.updateIncidentMethodTextFieldLabel": "ケースメソッドを更新", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.updateIncidentUrlHelp": "ケースを更新するAPI URL。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.updateIncidentUrlTextFieldLabel": "ケースURLを更新", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.userTextFieldLabel": "ユーザー名", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.valueTextFieldLabel": "値", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.viewHeadersSwitch": "HTTP ヘッダーを追加", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.viewIncidentUrlHelp": "外部システムでケースを表示するURL。変数セレクターを使用して、外部システムIDまたは外部システムタイトルをURLに追加します。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.viewIncidentUrlTextFieldLabel": "外部ケース表示URL", - "xpack.triggersActionsUI.components.builtinActionTypes.common.requiredShortDescTextField": "短い説明が必要です。", - "xpack.triggersActionsUI.components.builtinActionTypes.email.exchangeForm.clientIdHelpLabel": "クライアントIDの構成", - "xpack.triggersActionsUI.components.builtinActionTypes.email.exchangeForm.clientSecretHelpLabel": "クライアントシークレットの構成", - "xpack.triggersActionsUI.components.builtinActionTypes.email.exchangeForm.tenantIdHelpLabel": "テナントIDの構成", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.actionTypeTitle": "メールに送信", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.amazonSesServerTypeLabel": "Amazon SES", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.configureAccountsHelpLabel": "電子メールアカウントの構成", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.elasticCloudServerTypeLabel": "Elastic Cloud", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.exchangeServerTypeLabel": "MS Exchange Server", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.gmailServerTypeLabel": "Gmail", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.otherServerTypeLabel": "その他", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.outlookServerTypeLabel": "Outlook", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.selectMessageText": "サーバーからメールを送信します。", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.updateErrorNotificationText": "サービス構成を取得できません", - "xpack.triggersActionsUI.components.builtinActionTypes.error.badIndexOverrideSuffix": "アラート履歴インデックスには有効なサフィックスを含める必要があります。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.invalidPortText": "ポートが無効です。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredAuthUserNameText": "ユーザー名が必要です。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredClientIdText": "クライアントIDは必須です。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredDocumentJson": "ドキュメントが必要です。有効なJSONオブジェクトにしてください。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredEntryText": "To、Cc、または Bcc のエントリーがありません。 1 つ以上のエントリーが必要です。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredFromText": "送信元が必要です。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredHostText": "ホストが必要です。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredMessageText": "メッセージが必要です。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredPortText": "ポートが必要です。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredServerLogMessageText": "メッセージが必要です。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredServiceText": "サービスは必須です。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredSlackMessageText": "メッセージが必要です。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredSubjectText": "件名が必要です。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredTenantIdText": "テナントIDは必須です。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredWebhookBodyText": "本文が必要です。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredWebhookSummaryText": "タイトルが必要です。", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.actionTypeTitle": "データをインデックスする", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.chooseLabel": "選択…", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.configureIndexHelpLabel": "インデックスコネクターを構成しています。", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.connectorSectionTitle": "インデックスを書き出す", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.definedateFieldTooltip": "この時間フィールドをドキュメントにインデックスが作成された時刻に設定します。", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.defineTimeFieldLabel": "各ドキュメントの時刻フィールドを定義", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.documentsFieldLabel": "インデックスするドキュメント", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.error.notValidIndexText": "インデックスは有効ではありません。", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.executionTimeFieldLabel": "時間フィールド", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.howToBroadenSearchQueryDescription": "* で検索クエリの範囲を広げます。", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.indexDocumentHelpLabel": "インデックスドキュメントの例。", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.indicesAndIndexPatternsLabel": "データビューに基づく", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.indicesToQueryLabel": "インデックス", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.jsonDocAriaLabel": "コードエディター", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.preconfiguredIndex": "Elasticsearchインデックス", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.preconfiguredIndexDocLink": "ドキュメントを表示します。", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.refreshLabel": "更新インデックス", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.refreshTooltip": "影響を受けるシャードを更新し、この処理を検索できるようにします。", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.selectMessageText": "データを Elasticsearch にインデックスしてください。", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.actionTypeTitle": "Jira", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.apiTokenTextFieldLabel": "APIトークン", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.apiUrlTextFieldLabel": "URL", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.commentsTextAreaFieldLabel": "追加のコメント", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.descriptionTextAreaFieldLabel": "説明", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.emailTextFieldLabel": "メールアドレス", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.impactSelectFieldLabel": "ラベル", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.labelsSpacesErrorMessage": "ラベルにはスペースを使用できません。", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.parentIssueSearchLabel": "親問題", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.projectKey": "プロジェクトキー", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.requiredSummaryTextField": "概要が必要です。", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.searchIssuesComboBoxAriaLabel": "入力して検索", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.searchIssuesComboBoxPlaceholder": "入力して検索", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.searchIssuesLoading": "読み込み中...", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.selectMessageText": "Jira でインシデントを作成します。", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.severitySelectFieldLabel": "優先度", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.summaryFieldLabel": "概要(必須)", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.unableToGetFieldsMessage": "フィールドを取得できません", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.unableToGetIssuesMessage": "問題を取得できません", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.unableToGetIssueTypesMessage": "問題タイプを取得できません", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.urgencySelectFieldLabel": "問題タイプ", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.actionTypeTitle": "PagerDuty に送信", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.apiUrlInvalid": "無効なAPI URL", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.apiUrlTextFieldLabel": "API URL(任意)", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.classFieldLabel": "クラス(任意)", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.componentTextFieldLabel": "コンポーネント(任意)", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.dedupKeyTextFieldLabel": "DedupKey(任意)", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.dedupKeyTextRequiredFieldLabel": "DedupKey", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.error.requiredDedupKeyText": "インシデントを解決または確認するときには、DedupKeyが必要です。", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.error.requiredRoutingKeyText": "統合キー/ルーティングキーが必要です。", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.error.requiredSummaryText": "概要が必要です。", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.eventActionSelectFieldLabel": "イベントアクション", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.eventSelectAcknowledgeOptionLabel": "承認", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.eventSelectResolveOptionLabel": "解決", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.eventSelectTriggerOptionLabel": "トリガー", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.groupTextFieldLabel": "グループ(任意)", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.routingKeyNameHelpLabel": "PagerDuty アカウントを構成します", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.routingKeyTextFieldLabel": "統合キー", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.selectMessageText": "PagerDuty でイベントを送信します。", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.severitySelectCriticalOptionLabel": "重大", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.severitySelectErrorOptionLabel": "エラー", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.severitySelectFieldLabel": "重要度(任意)", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.severitySelectInfoOptionLabel": "情報", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.severitySelectWarningOptionLabel": "警告", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.sourceTextFieldLabel": "ソース(任意)", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.summaryFieldLabel": "まとめ", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.timestampTextFieldLabel": "タイムスタンプ(任意)", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.actionTypeTitle": "Resilient", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.apiKeyId": "APIキーID", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.apiKeySecret": "APIキーシークレット", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.apiUrlTextFieldLabel": "URL", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.commentsTextAreaFieldLabel": "追加のコメント", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.descriptionTextAreaFieldLabel": "説明", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.nameFieldLabel": "名前(必須)", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.orgId": "組織 ID", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.requiredNameTextField": "名前が必要です。", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.selectMessageText": "IBM Resilient でインシデントを作成します。", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.severity": "深刻度", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.unableToGetIncidentTypesMessage": "インシデントタイプを取得できません", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.unableToGetSeverityMessage": "深刻度を取得できません", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.urgencySelectFieldLabel": "インシデントタイプ", - "xpack.triggersActionsUI.components.builtinActionTypes.serverLogAction.actionTypeTitle": "サーバーログに送信", - "xpack.triggersActionsUI.components.builtinActionTypes.serverLogAction.logLevelFieldLabel": "レベル", - "xpack.triggersActionsUI.components.builtinActionTypes.serverLogAction.logMessageFieldLabel": "メッセージ", - "xpack.triggersActionsUI.components.builtinActionTypes.serverLogAction.selectMessageText": "Kibana ログにメッセージを追加します。", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.apiUrlTextFieldLabel": "ServiceNowインスタンスURL", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.applicationRequiredCallout": "Elastic ServiceNowアプリがインストールされていません", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.applicationRequiredCallout.content": "ServiceNowアプリストアに移動し、アプリケーションをインストールしてください", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.applicationRequiredCallout.errorMessage": "エラーメッセージ", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.authenticationLabel": "認証", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.cancelButtonText": "キャンセル", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.categoryTitle": "カテゴリー", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.clientIdTextFieldLabel": "クライアントID", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.clientSecretTextFieldLabel": "クライアントシークレット", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.commentsTextAreaFieldLabel": "追加のコメント", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.confirmButtonText": "更新", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.correlationDisplay": "相関関係表示(オプション)", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.correlationID": "相関関係ID(オプション)", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.deprecatedCalloutCreate": "または新規作成します。", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.deprecatedCalloutMigrate": "このコネクターを更新します", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.deprecatedCalloutTitle": "このコネクターは廃止予定です", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.descriptionTextAreaFieldLabel": "説明", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.eventClassTextAreaFieldLabel": "ソースインスタンス", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.fetchErrorMsg": "取得できませんでした。ServiceNowインスタンスのURLまたはCORS公正を確認します。", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.impactSelectFieldLabel": "インパクト", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.installationCalloutTitle": "このコネクターを使用するには、まずServiceNowアプリストアからElasticアプリをインストールします。", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.invalidApiUrlTextField": "URL が無効です。", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.keyIdTextFieldLabel": "JWT VerifierキーID", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.messageKeyTextAreaFieldLabel": "メッセージキー", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.metricNameTextAreaFieldLabel": "メトリック名", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.nodeTextAreaFieldLabel": "ノード", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.passwordTextFieldLabel": "パスワード", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.prioritySelectFieldLabel": "優先度", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.privateKeyPassLabelHelpText": "これは、秘密鍵でパスワードを設定した場合にのみ必要です", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.privateKeyPassTextFieldLabel": "秘密鍵パスワード", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.privateKeyTextFieldLabel": "秘密鍵", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.requiredClientIdTextField": "クライアントIDは必須です。", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.requiredKeyIdTextField": "JWT VerifierキーIDは必須です。", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.requiredPrivateKeyTextField": "秘密鍵は必須です。", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.requiredSeverityTextField": "重要度は必須です。", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.requiredUserIdentifierTextField": "ユーザーIDは必須です。", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.requiredUsernameTextField": "ユーザー名が必要です。", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.resourceTextAreaFieldLabel": "リソース", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.setupDevInstance": "開発者インスタンスを設定", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.severityRequiredSelectFieldLabel": "重要度(必須)", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.severitySelectFieldLabel": "深刻度", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.snInstanceLabel": "ServiceNowインスタンス", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.sourceTextAreaFieldLabel": "送信元", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.subcategoryTitle": "サブカテゴリー", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.title": "インシデント", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.titleFieldLabel": "短い説明(必須)", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.typeTextAreaFieldLabel": "型", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.unableToGetChoicesMessage": "選択肢を取得できません", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.unknown": "不明", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.updateCalloutText": "コネクターが更新されました。", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.updateFormCredentialsTitle": "認証資格情報を入力", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.updateFormInstallTitle": "Elastic ServiceNowアプリをインストール", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.updateFormTitle": "ServiceNowコネクターを更新", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.updateFormUrlTitle": "ServiceNowインスタンスURLを入力", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.urgencySelectFieldLabel": "緊急", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.useOAuth": "OAuth認証を使用", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.userEmailTextFieldLabel": "ユーザーID", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.usernameTextFieldLabel": "ユーザー名", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.visitSNStore": "ServiceNowアプリストアにアクセス", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.warningMessage": "このコネクターのすべてのインスタンスが更新され、元に戻せません。", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowAction.correlationIDHelpLabel": "インシデントを更新するID", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowITOM.actionTypeTitle": "ServiceNow ITOM", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenowITOM.event": "イベント", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowITOM.selectMessageText": "ServiceNow ITOMでイベントを作成します。", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowITSM.actionTypeTitle": "ServiceNow ITSM", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowITSM.selectMessageText": "ServiceNow ITSMでインシデントを作成します。", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowSIR.actionTypeTitle": "ServiceNow SecOps", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowSIR.selectMessageText": "ServiceNow SecOpsでインシデントを作成します。", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenowSIR.title": "セキュリティインシデント", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowSIRAction.correlationIDHelpLabel": "インシデントを更新するID", - "xpack.triggersActionsUI.components.builtinActionTypes.slackAction.actionTypeTitle": "Slack に送信", - "xpack.triggersActionsUI.components.builtinActionTypes.slackAction.error.invalidWebhookUrlText": "Web フック URL が無効です。", - "xpack.triggersActionsUI.components.builtinActionTypes.slackAction.messageTextAreaFieldLabel": "メッセージ", - "xpack.triggersActionsUI.components.builtinActionTypes.slackAction.selectMessageText": "Slack チャネルにメッセージを送信します。", - "xpack.triggersActionsUI.components.builtinActionTypes.slackAction.webhookUrlHelpLabel": "Slack Web フック URL を作成", - "xpack.triggersActionsUI.components.builtinActionTypes.slackAction.webhookUrlTextFieldLabel": "Web フック URL", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlane.unableToGetApplicationFieldsMessage": "アプリケーションフィールドを取得できません", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.actionTypeTitle": "Swimlaneレコードを作成", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.alertIdFieldLabel": "アラートID", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.apiTokenNameHelpLabel": "Swimlane APIトークンを指定", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.apiTokenTextFieldLabel": "APIトークン", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.apiUrlTextFieldLabel": "API Url", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.appIdTextFieldLabel": "アプリケーションID", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.caseIdFieldLabel": "ケースID", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.caseNameFieldLabel": "ケース名", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.commentsFieldLabel": "コメント", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.configureConnectionLabel": "API接続を構成", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.connectorType": "コネクタータイプ", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.descriptionFieldLabel": "説明", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.emptyMappingWarningDesc": "このコネクターを選択できません。必要なアラートフィールドマッピングがありません。このコネクターを編集して、必要なフィールドマッピングを追加するか、タイプがアラートのコネクターを選択できます。", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.emptyMappingWarningTitle": "このコネクターにはフィールドマッピングがありません。", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredAlertID": "アラートIDは必須です。", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredAppIdText": "アプリIDは必須です。", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredCaseID": "ケースIDは必須です。", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredCaseName": "ケース名は必須です。", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredComments": "コメントは必須です。", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredDescription": "説明が必要です。", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredRuleName": "ルール名は必須です。", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredSeverity": "重要度は必須です。", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.invalidApiUrlTextField": "URL が無効です。", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.mappingTitleTextFieldLabel": "フィールドマッピングを構成", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.nextStep": "次へ", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.nextStepHelpText": "フィールドマッピングが構成されていない場合、Swimlaneコネクタータイプはすべてに設定されます。", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.prevStep": "戻る", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.ruleNameFieldLabel": "ルール名", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.selectMessageText": "Swimlaneでレコードを作成", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.severityFieldLabel": "深刻度", - "xpack.triggersActionsUI.components.builtinActionTypes.teamsAction.actionTypeTitle": "メッセージを Microsoft Teams チャネルに送信します。", - "xpack.triggersActionsUI.components.builtinActionTypes.teamsAction.error.invalidWebhookUrlText": "Web フック URL が無効です。", - "xpack.triggersActionsUI.components.builtinActionTypes.teamsAction.error.requiredMessageText": "メッセージが必要です。", - "xpack.triggersActionsUI.components.builtinActionTypes.teamsAction.error.webhookUrlTextLabel": "Web フック URL", - "xpack.triggersActionsUI.components.builtinActionTypes.teamsAction.messageTextAreaFieldLabel": "メッセージ", - "xpack.triggersActionsUI.components.builtinActionTypes.teamsAction.selectMessageText": "メッセージを Microsoft Teams チャネルに送信します。", - "xpack.triggersActionsUI.components.builtinActionTypes.teamsAction.webhookUrlHelpLabel": "Microsoft Teams Web フック URL を作成", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.actionTypeTitle": "Web フックデータ", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.addHeaderButtonLabel": "ヘッダーを追加", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.authenticationLabel": "認証", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.bodyCodeEditorAriaLabel": "コードエディター", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.bodyFieldLabel": "本文", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.error.invalidUrlTextField": "URL が無効です。", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.hasAuthSwitchLabel": "この Web フックの認証が必要です", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.headerKeyTextFieldLabel": "キー", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.headerValueTextFieldLabel": "値", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.methodTextFieldLabel": "メソド", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.passwordTextFieldLabel": "パスワード", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.removeHeaderIconLabel": "キー", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.selectMessageText": "Web サービスにリクエストを送信してください。", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.urlTextFieldLabel": "URL", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.userTextFieldLabel": "ユーザー名", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.viewHeadersSwitch": "HTTP ヘッダーを追加", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.actionTypeTitle": "xMattersデータ", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.authenticationLabel": "認証", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.basicAuthButtonGroupLegend": "基本認証", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.basicAuthLabel": "基本認証", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.connectorSettingsLabel": "xMattersトリガーを設定するときに使用される認証方法を選択します。", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.error.invalidUrlTextField": "URL が無効です。", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.error.invalidUsernameTextField": "ユーザー名が無効です。", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.error.requiredUrlText": "URL が必要です。", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.initiationUrlHelpText": "完全なxMatters URLを含めます。", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.passwordTextFieldLabel": "パスワード", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.selectMessageText": "xMattersワークフローをトリガーします。", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.severity": "深刻度", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.severitySelectCriticalOptionLabel": "重大", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.severitySelectHighOptionLabel": "高", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.severitySelectLowOptionLabel": "低", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.severitySelectMediumOptionLabel": "中", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.severitySelectMinimalOptionLabel": "最小", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.tags": "タグ", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.urlAuthLabel": "URL認証", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.urlLabel": "開始URL", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.userCredsLabel": "ユーザー認証情報", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.userTextFieldLabel": "ユーザー名", "xpack.triggersActionsUI.components.emptyConnectorsPrompt.addConnectorButtonLabel": "コネクターを作成", "xpack.triggersActionsUI.components.emptyConnectorsPrompt.addConnectorEmptyBody": "Kibanaで実行するメール、Slack、Elasticsearch、およびサードパーティサービスを構成します。", "xpack.triggersActionsUI.components.emptyConnectorsPrompt.addConnectorEmptyTitle": "初めてのコネクターを作成する", @@ -32322,8 +32349,6 @@ "xpack.triggersActionsUI.components.jsonEditorWithMessageVariable.noEditorErrorMessage": "エディターが見つかりませんでした。ページを更新して再試行してください", "xpack.triggersActionsUI.components.jsonEditorWithMessageVariable.noEditorErrorTitle": "メッセージ変数を追加できません", "xpack.triggersActionsUI.components.simpleConnectorForm.secrets.authenticationLabel": "認証", - "xpack.triggersActionsUI.components.textAreaWithMessageVariable.createCommentWarningDesc": "コメントを外部で共有するには、コネクターの[コメントURLを作成]および[コメントオブジェクトを作成]フィールドを構成します。", - "xpack.triggersActionsUI.components.textAreaWithMessageVariable.createCommentWarningTitle": "ケースコメントを共有できません", "xpack.triggersActionsUI.connectors.breadcrumbTitle": "コネクター", "xpack.triggersActionsUI.data.coreQueryParams.dateStartGTdateEndErrorMessage": "[dateStart]が[dateEnd]よりも大です", "xpack.triggersActionsUI.data.coreQueryParams.intervalRequiredErrorMessage": "[interval]:[dateStart]が[dateEnd]と等しくない場合に指定する必要があります", @@ -32396,7 +32421,6 @@ "xpack.triggersActionsUI.sections.actionConnectorForm.loadingConnectorSettingsDescription": "コネクター設定を読み込んでいます...", "xpack.triggersActionsUI.sections.actionForm.actionSectionsTitle": "アクション", "xpack.triggersActionsUI.sections.actionForm.addActionButtonLabel": "アクションの追加", - "xpack.triggersActionsUI.sections.actionForm.deprecatedTooltipTitle": "廃止予定のコネクター", "xpack.triggersActionsUI.sections.actionForm.getMoreConnectorsTitle": "その他のコネクターを取得", "xpack.triggersActionsUI.sections.actionForm.getMoreRuleTypesTitle": "その他のルールタイプを取得", "xpack.triggersActionsUI.sections.actionForm.incidentManagementSystemLabel": "インシデント管理システム", @@ -32435,17 +32459,6 @@ "xpack.triggersActionsUI.sections.actionTypeForm.actionErrorToolTip": "アクションにはエラーがあります。", "xpack.triggersActionsUI.sections.actionTypeForm.actionRunWhenInActionGroup": "次のときに実行", "xpack.triggersActionsUI.sections.actionTypeForm.addNewConnectorEmptyButton": "コネクターの追加", - "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredAuthUserNameText": "ユーザー名が必要です。", - "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredCreateCommentMethodText": "コメントメソッドを作成は必須です。", - "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredCreateIncidentResponseKeyText": "ケース対応の作成ケースIDキーが必要です。", - "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredCreateMethodText": "ケースメソッドの作成は必須です。", - "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredGetIncidentResponseCreatedKeyText": "ケース対応の取得の作成日キーが必要です。", - "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredGetIncidentResponseExternalTitleKeyText": "ケース対応の取得の外部タイトルキーが必要です。", - "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredGetIncidentResponseUpdatedKeyText": "ケース対応の取得の更新日キーが必要です。", - "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredGetIncidentViewUrlKeyText": "ケースURLの表示は必須です。", - "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredUpdateMethodText": "ケースメソッドの更新は必須です。", - "xpack.triggersActionsUI.sections.addAction.webhookAction.error.requiredAuthUserNameText": "ユーザー名が必要です。", - "xpack.triggersActionsUI.sections.addAction.webhookAction.error.requiredMethodText": "メソッドが必要です。", "xpack.triggersActionsUI.sections.addConnectorForm.selectConnectorFlyoutTitle": "コネクターを選択", "xpack.triggersActionsUI.sections.addConnectorForm.updateSuccessNotificationText": "「{connectorName}」を作成しました", "xpack.triggersActionsUI.sections.addModalConnectorForm.cancelButtonLabel": "キャンセル", @@ -32455,25 +32468,6 @@ "xpack.triggersActionsUI.sections.alertsTable.alertsFlyout.reason": "理由", "xpack.triggersActionsUI.sections.alertsTable.column.actions": "アクション", "xpack.triggersActionsUI.sections.alertsTable.leadingControl.viewDetails": "詳細を表示", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.addBccButton": "Bcc", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.addCcButton": "Cc", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.authenticationLabel": "認証", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.clientIdFieldLabel": "クライアントID", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.clientSecretTextFieldLabel": "クライアントシークレット", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.fromTextFieldLabel": "送信元", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.hasAuthSwitchLabel": "このサーバーの認証が必要です", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.hostTextFieldLabel": "ホスト", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.messageTextAreaFieldLabel": "メッセージ", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.passwordFieldLabel": "パスワード", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.portTextFieldLabel": "ポート", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.recipientBccTextFieldLabel": "Bcc", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.recipientCopyTextFieldLabel": "Cc", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.recipientTextFieldLabel": "終了:", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.secureSwitchLabel": "セキュア", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.serviceTextFieldLabel": "サービス", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.subjectTextFieldLabel": "件名", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.tenantIdFieldLabel": "テナントID", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.userTextFieldLabel": "ユーザー名", "xpack.triggersActionsUI.sections.confirmRuleClose.confirmRuleCloseCancelButtonText": "キャンセル", "xpack.triggersActionsUI.sections.confirmRuleClose.confirmRuleCloseConfirmButtonText": "変更を破棄", "xpack.triggersActionsUI.sections.confirmRuleClose.confirmRuleCloseMessage": "保存されていない変更は回復できません。", @@ -32663,7 +32657,6 @@ "xpack.triggersActionsUI.sections.rulesList.removeAllButton": "すべて削除", "xpack.triggersActionsUI.sections.rulesList.removeCancelButton": "キャンセル", "xpack.triggersActionsUI.sections.rulesList.removeConfirmButton": "すべて削除", - "xpack.triggersActionsUI.sections.rulesList.resetDefaultIndexLabel": "デフォルトのインデックスをリセット", "xpack.triggersActionsUI.sections.rulesList.ruleErrorReasonDecrypting": "ルールの復号中にエラーが発生しました。", "xpack.triggersActionsUI.sections.rulesList.ruleErrorReasonDisabled": "ルールを実行できませんでした。ルールは無効化された後に実行されました。", "xpack.triggersActionsUI.sections.rulesList.ruleErrorReasonLicense": "ルールを実行できません", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index a4965101279af..cdec4730c09d3 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -6378,6 +6378,383 @@ "xpack.stackConnectors.xmatters.shouldNotHaveSecretsUrl": "usesBasic 为 true 时不得提供 secretsUrl", "xpack.stackConnectors.xmatters.shouldNotHaveUsernamePassword": "usesBasic 为 false 时不得提供用户名和密码", "xpack.stackConnectors.xmatters.title": "xMatters", + "xpack.stackConnectors.components.casesWebhook.error.missingVariables": "缺少所需{variableCount, plural, other {变量}}:{variables}", + "xpack.stackConnectors.components.index.error.badIndexOverrideValue": "告警历史记录索引必须以“{alertHistoryPrefix}”开头。", + "xpack.stackConnectors.components.email.error.invalidEmail": "电子邮件地址 {email} 无效。", + "xpack.stackConnectors.components.email.error.notAllowed": "不允许使用电子邮件地址 {email}。", + "xpack.stackConnectors.components.index.preconfiguredIndexHelpText": "文档已索引到 {alertHistoryIndex} 索引中。", + "xpack.stackConnectors.components.jira.unableToGetIssueMessage": "无法获取 ID 为 {id} 的问题", + "xpack.stackConnectors.components.pagerDuty.error.invalidTimestamp": "时间戳必须是有效的日期,例如 {nowShortFormat} 或 {nowLongFormat}。", + "xpack.stackConnectors.components.serviceNow.apiInfoError": "尝试获取应用程序信息时收到的状态:{status}", + "xpack.stackConnectors.components.serviceNow.appInstallationInfo": "{update} {create} ", + "xpack.stackConnectors.components.serviceNow.updateSuccessToastTitle": "{connectorName} 连接器已更新", + "xpack.stackConnectors.components.serviceNow.apiUrlHelpLabel": "提供所需 ServiceNow 实例的完整 URL。如果没有,{instance}。", + "xpack.stackConnectors.components.serviceNow.appRunning": "在运行更新之前,必须从 ServiceNow 应用商店安装 Elastic 应用。{visitLink} 以安装该应用", + "xpack.stackConnectors.components.swimlane.unableToGetApplicationMessage": "无法获取 ID 为 {id} 的应用程序", + "xpack.stackConnectors.components.casesWebhook.commentsTextAreaFieldLabel": "其他注释", + "xpack.stackConnectors.components.casesWebhook.descriptionTextAreaFieldLabel": "描述", + "xpack.stackConnectors.components.casesWebhook.tagsFieldLabel": "标签", + "xpack.stackConnectors.components.casesWebhook.titleFieldLabel": "摘要(必填)", + "xpack.stackConnectors.components.casesWebhook.addHeaderButton": "添加", + "xpack.stackConnectors.components.casesWebhook.addVariable": "添加变量", + "xpack.stackConnectors.components.casesWebhook.authenticationLabel": "身份验证", + "xpack.stackConnectors.components.casesWebhook.caseCommentDesc": "Kibana 案例注释", + "xpack.stackConnectors.components.casesWebhook.caseDescriptionDesc": "Kibana 案例描述", + "xpack.stackConnectors.components.casesWebhook.caseTagsDesc": "Kibana 案例标签", + "xpack.stackConnectors.components.casesWebhook.caseTitleDesc": "Kibana 案例标题", + "xpack.stackConnectors.components.casesWebhook.createCommentJsonHelp": "用于创建注释的 JSON 对象。使用变量选择器将案例数据添加到有效负载。", + "xpack.stackConnectors.components.casesWebhook.createCommentJsonTextFieldLabel": "创建注释对象", + "xpack.stackConnectors.components.casesWebhook.createCommentMethodTextFieldLabel": "创建注释方法", + "xpack.stackConnectors.components.casesWebhook.createCommentUrlHelp": "用于添加注释到案例的 API URL。", + "xpack.stackConnectors.components.casesWebhook.createCommentUrlTextFieldLabel": "创建注释 URL", + "xpack.stackConnectors.components.casesWebhook.createIncidentJsonHelpText": "用于创建案例的 JSON 对象。使用变量选择器将案例数据添加到有效负载。", + "xpack.stackConnectors.components.casesWebhook.createIncidentJsonTextFieldLabel": "创建案例对象", + "xpack.stackConnectors.components.casesWebhook.createIncidentMethodTextFieldLabel": "创建案例方法", + "xpack.stackConnectors.components.casesWebhook.createIncidentResponseKeyHelpText": "创建案例响应中包含外部案例 ID 的 JSON 键", + "xpack.stackConnectors.components.casesWebhook.createIncidentResponseKeyTextFieldLabel": "创建案例响应案例键", + "xpack.stackConnectors.components.casesWebhook.createIncidentUrlTextFieldLabel": "创建案例 URL", + "xpack.stackConnectors.components.casesWebhook.deleteHeaderButton": "删除", + "xpack.stackConnectors.components.casesWebhook.docLink": "正在配置 Webhook - 案例管理连接器。", + "xpack.stackConnectors.components.casesWebhook.error.requiredCreateCommentIncidentText": "创建注释对象必须为有效 JSON。", + "xpack.stackConnectors.components.casesWebhook.error.requiredCreateCommentUrlText": "创建注释 URL 必须为 URL 格式。", + "xpack.stackConnectors.components.casesWebhook.error.requiredCreateIncidentText": "“创建案例对象”必填并且必须为有效 JSON。", + "xpack.stackConnectors.components.casesWebhook.error.requiredCreateUrlText": "“创建案例 URL”必填。", + "xpack.stackConnectors.components.casesWebhook.error.requiredGetIncidentUrlText": "“获取案例 URL”必填。", + "xpack.stackConnectors.components.casesWebhook.error.requiredUpdateIncidentText": "“更新案例对象”必填并且必须为有效 JSON。", + "xpack.stackConnectors.components.casesWebhook.error.requiredUpdateUrlText": "“更新案例 URL”必填。", + "xpack.stackConnectors.components.casesWebhook.externalIdDesc": "外部系统 ID", + "xpack.stackConnectors.components.casesWebhook.externalTitleDesc": "外部系统标题", + "xpack.stackConnectors.components.casesWebhook.getIncidentResponseExternalTitleKeyHelp": "获取案例响应中包含外部案例标题的 JSON 键", + "xpack.stackConnectors.components.casesWebhook.getIncidentResponseExternalTitleKeyTextFieldLabel": "获取案例响应外部标题键", + "xpack.stackConnectors.components.casesWebhook.getIncidentUrlHelp": "用于从外部系统中获取案例详情 JSON 的 API URL。使用变量选择器添加外部系统 ID 到 URL。", + "xpack.stackConnectors.components.casesWebhook.getIncidentUrlTextFieldLabel": "获取案例 URL", + "xpack.stackConnectors.components.casesWebhook.hasAuthSwitchLabel": "此 Webhook 需要身份验证", + "xpack.stackConnectors.components.casesWebhook.httpHeadersTitle": "在用的标头", + "xpack.stackConnectors.components.casesWebhook.jsonCodeEditorAriaLabel": "代码编辑器", + "xpack.stackConnectors.components.casesWebhook.jsonFieldLabel": "JSON", + "xpack.stackConnectors.components.casesWebhook.keyTextFieldLabel": "钥匙", + "xpack.stackConnectors.components.casesWebhook.next": "下一步", + "xpack.stackConnectors.components.casesWebhook.passwordTextFieldLabel": "密码", + "xpack.stackConnectors.components.casesWebhook.previous": "上一步", + "xpack.stackConnectors.components.casesWebhook.selectMessageText": "发送请求到案例管理 Web 服务。", + "xpack.stackConnectors.components.casesWebhook.step1": "设置连接器", + "xpack.stackConnectors.components.casesWebhook.step2": "创建案例", + "xpack.stackConnectors.components.casesWebhook.step2Description": "设置字段以在外部系统中创建案例。查阅您服务的 API 文档以了解需要哪些字段", + "xpack.stackConnectors.components.casesWebhook.step3": "获取案例信息", + "xpack.stackConnectors.components.casesWebhook.step3Description": "设置字段以在外部系统中添加案例注释。对于某些系统,这可能采取与在案例中创建更新相同的方法。查阅您服务的 API 文档以了解需要哪些字段。", + "xpack.stackConnectors.components.casesWebhook.step4": "注释和更新", + "xpack.stackConnectors.components.casesWebhook.step4a": "在案例中创建更新", + "xpack.stackConnectors.components.casesWebhook.step4aDescription": "设置字段以在外部系统中创建案例更新。对于某些系统,这可能采取与添加案例注释相同的方法。", + "xpack.stackConnectors.components.casesWebhook.step4b": "在案例中添加注释", + "xpack.stackConnectors.components.casesWebhook.step4bDescription": "设置字段以在外部系统中添加案例注释。对于某些系统,这可能采取与在案例中创建更新相同的方法。", + "xpack.stackConnectors.components.casesWebhook.updateIncidentJsonHelpl": "用于更新案例的 JSON 对象。使用变量选择器将案例数据添加到有效负载。", + "xpack.stackConnectors.components.casesWebhook.updateIncidentJsonTextFieldLabel": "更新案例对象", + "xpack.stackConnectors.components.casesWebhook.updateIncidentMethodTextFieldLabel": "更新案例方法", + "xpack.stackConnectors.components.casesWebhook.updateIncidentUrlHelp": "用于更新案例的 API URL。", + "xpack.stackConnectors.components.casesWebhook.updateIncidentUrlTextFieldLabel": "更新案例 URL", + "xpack.stackConnectors.components.casesWebhook.userTextFieldLabel": "用户名", + "xpack.stackConnectors.components.casesWebhook.valueTextFieldLabel": "值", + "xpack.stackConnectors.components.casesWebhook.viewHeadersSwitch": "添加 HTTP 标头", + "xpack.stackConnectors.components.casesWebhook.viewIncidentUrlHelp": "用于查看外部系统中的案例的 URL。使用变量选择器添加外部系统 ID 或外部系统标题到 URL。", + "xpack.stackConnectors.components.casesWebhook.viewIncidentUrlTextFieldLabel": "外部案例查看 URL", + "xpack.stackConnectors.components.serviceNow.requiredShortDescTextField": "“简短描述”必填。", + "xpack.stackConnectors.components.email.exchangeForm.clientIdHelpLabel": "配置客户端 ID", + "xpack.stackConnectors.components.email.exchangeForm.clientSecretHelpLabel": "配置客户端密钥", + "xpack.stackConnectors.components.email.exchangeForm.tenantIdHelpLabel": "配置租户 ID", + "xpack.stackConnectors.components.email.connectorTypeTitle": "发送到电子邮件", + "xpack.stackConnectors.components.email.amazonSesServerTypeLabel": "Amazon SES", + "xpack.stackConnectors.components.email.configureAccountsHelpLabel": "配置电子邮件帐户", + "xpack.stackConnectors.components.email.elasticCloudServerTypeLabel": "Elastic Cloud", + "xpack.stackConnectors.components.email.exchangeServerTypeLabel": "MS Exchange Server", + "xpack.stackConnectors.components.email.gmailServerTypeLabel": "Gmail", + "xpack.stackConnectors.components.email.otherServerTypeLabel": "其他", + "xpack.stackConnectors.components.email.outlookServerTypeLabel": "Outlook", + "xpack.stackConnectors.components.email.selectMessageText": "从您的服务器发送电子邮件。", + "xpack.stackConnectors.components.email.updateErrorNotificationText": "无法获取服务配置", + "xpack.stackConnectors.components.index.error.badIndexOverrideSuffix": "告警历史记录索引必须包含有效的后缀。", + "xpack.stackConnectors.components.email.error.invalidPortText": "端口无效。", + "xpack.stackConnectors.components.email.error.requiredAuthUserNameText": "“用户名”必填。", + "xpack.stackConnectors.components.email.error.requiredClientIdText": "“客户端 ID”必填。", + "xpack.stackConnectors.components.index.error.requiredDocumentJson": "“文档”必填,并且应为有效的 JSON 对象。", + "xpack.stackConnectors.components.email.error.requiredEntryText": "未输入收件人、抄送、密送。 至少需要输入一个。", + "xpack.stackConnectors.components.email.error.requiredFromText": "“发送者”必填。", + "xpack.stackConnectors.components.email.error.requiredHostText": "“主机”必填。", + "xpack.stackConnectors.components.email.error.requiredMessageText": "“消息”必填。", + "xpack.stackConnectors.components.email.error.requiredPortText": "“端口”必填。", + "xpack.stackConnectors.components.serverLog.error.requiredServerLogMessageText": "“消息”必填。", + "xpack.stackConnectors.components.email.error.requiredServiceText": "“服务”必填。", + "xpack.stackConnectors.components.email.error.requiredSubjectText": "“主题”必填。", + "xpack.stackConnectors.components.email.error.requiredTenantIdText": "“租户 ID”必填。", + "xpack.stackConnectors.components.webhook.error.requiredWebhookBodyText": "“正文”必填。", + "xpack.stackConnectors.components.casesWebhook.error.requiredWebhookSummaryText": "“标题”必填。", + "xpack.stackConnectors.components.index.connectorTypeTitle": "索引数据", + "xpack.stackConnectors.components.index.configureIndexHelpLabel": "配置索引连接器。", + "xpack.stackConnectors.components.index.connectorSectionTitle": "写入到索引", + "xpack.stackConnectors.components.index.definedateFieldTooltip": "将此时间字段设置为索引文档的时间。", + "xpack.stackConnectors.components.index.defineTimeFieldLabel": "为每个文档定义时间字段", + "xpack.stackConnectors.components.index.documentsFieldLabel": "要索引的文档", + "xpack.stackConnectors.components.index.error.notValidIndexText": "索引无效。", + "xpack.stackConnectors.components.index.executionTimeFieldLabel": "时间字段", + "xpack.stackConnectors.components.index.howToBroadenSearchQueryDescription": "使用 * 可扩大您的查询范围。", + "xpack.stackConnectors.components.index.indexDocumentHelpLabel": "索引文档示例。", + "xpack.stackConnectors.components.index.indicesToQueryLabel": "索引", + "xpack.stackConnectors.components.index.jsonDocAriaLabel": "代码编辑器", + "xpack.stackConnectors.components.index.preconfiguredIndex": "Elasticsearch 索引", + "xpack.stackConnectors.components.index.preconfiguredIndexDocLink": "查看文档。", + "xpack.stackConnectors.components.index.refreshLabel": "刷新索引", + "xpack.stackConnectors.components.index.refreshTooltip": "刷新影响的分片以使此操作对搜索可见。", + "xpack.stackConnectors.components.index.selectMessageText": "将数据索引到 Elasticsearch 中。", + "xpack.stackConnectors.components.jira.connectorTypeTitle": "Jira", + "xpack.stackConnectors.components.jira.apiTokenTextFieldLabel": "API 令牌", + "xpack.stackConnectors.components.jira.apiUrlTextFieldLabel": "URL", + "xpack.stackConnectors.components.jira.commentsTextAreaFieldLabel": "其他注释", + "xpack.stackConnectors.components.jira.descriptionTextAreaFieldLabel": "描述", + "xpack.stackConnectors.components.jira.emailTextFieldLabel": "电子邮件地址", + "xpack.stackConnectors.components.jira.impactSelectFieldLabel": "标签", + "xpack.stackConnectors.components.jira.labelsSpacesErrorMessage": "标签不能包含空格。", + "xpack.stackConnectors.components.jira.parentIssueSearchLabel": "父问题", + "xpack.stackConnectors.components.jira.projectKey": "项目键", + "xpack.stackConnectors.components.jira.requiredSummaryTextField": "“摘要”必填。", + "xpack.stackConnectors.components.jira.searchIssuesComboBoxAriaLabel": "键入内容进行搜索", + "xpack.stackConnectors.components.jira.searchIssuesComboBoxPlaceholder": "键入内容进行搜索", + "xpack.stackConnectors.components.jira.searchIssuesLoading": "正在加载……", + "xpack.stackConnectors.components.jira.selectMessageText": "在 Jira 创建事件。", + "xpack.stackConnectors.components.jira.severitySelectFieldLabel": "优先级", + "xpack.stackConnectors.components.jira.summaryFieldLabel": "摘要(必填)", + "xpack.stackConnectors.components.jira.unableToGetFieldsMessage": "无法获取字段", + "xpack.stackConnectors.components.jira.unableToGetIssuesMessage": "无法获取问题", + "xpack.stackConnectors.components.jira.unableToGetIssueTypesMessage": "无法获取问题类型", + "xpack.stackConnectors.components.jira.urgencySelectFieldLabel": "问题类型", + "xpack.stackConnectors.components.pagerDuty.connectorTypeTitle": "发送到 PagerDuty", + "xpack.stackConnectors.components.pagerDuty.apiUrlInvalid": "API URL 无效", + "xpack.stackConnectors.components.pagerDuty.apiUrlTextFieldLabel": "API URL(可选)", + "xpack.stackConnectors.components.pagerDuty.classFieldLabel": "类(可选)", + "xpack.stackConnectors.components.pagerDuty.componentTextFieldLabel": "组件(可选)", + "xpack.stackConnectors.components.pagerDuty.dedupKeyTextFieldLabel": "DedupKey(可选)", + "xpack.stackConnectors.components.pagerDuty.dedupKeyTextRequiredFieldLabel": "DedupKey", + "xpack.stackConnectors.components.pagerDuty.error.requiredDedupKeyText": "解决或确认事件时需要 DedupKey。", + "xpack.stackConnectors.components.pagerDuty.error.requiredRoutingKeyText": "需要集成密钥/路由密钥。", + "xpack.stackConnectors.components.pagerDuty.error.requiredSummaryText": "“摘要”必填。", + "xpack.stackConnectors.components.pagerDuty.eventActionSelectFieldLabel": "事件操作", + "xpack.stackConnectors.components.pagerDuty.eventSelectAcknowledgeOptionLabel": "确认", + "xpack.stackConnectors.components.pagerDuty.eventSelectResolveOptionLabel": "解决", + "xpack.stackConnectors.components.pagerDuty.eventSelectTriggerOptionLabel": "触发", + "xpack.stackConnectors.components.pagerDuty.groupTextFieldLabel": "组(可选)", + "xpack.stackConnectors.components.pagerDuty.routingKeyNameHelpLabel": "配置 PagerDuty 帐户", + "xpack.stackConnectors.components.pagerDuty.routingKeyTextFieldLabel": "集成密钥", + "xpack.stackConnectors.components.pagerDuty.selectMessageText": "在 PagerDuty 中发送事件。", + "xpack.stackConnectors.components.pagerDuty.severitySelectCriticalOptionLabel": "紧急", + "xpack.stackConnectors.components.pagerDuty.severitySelectErrorOptionLabel": "错误", + "xpack.stackConnectors.components.pagerDuty.severitySelectFieldLabel": "严重性(可选)", + "xpack.stackConnectors.components.pagerDuty.severitySelectInfoOptionLabel": "信息", + "xpack.stackConnectors.components.pagerDuty.severitySelectWarningOptionLabel": "警告", + "xpack.stackConnectors.components.pagerDuty.sourceTextFieldLabel": "源(可选)", + "xpack.stackConnectors.components.pagerDuty.summaryFieldLabel": "摘要", + "xpack.stackConnectors.components.pagerDuty.timestampTextFieldLabel": "时间戳(可选)", + "xpack.stackConnectors.components.resilient.connectorTypeTitle": "Resilient", + "xpack.stackConnectors.components.resilient.apiKeyId": "API 密钥 ID", + "xpack.stackConnectors.components.resilient.apiKeySecret": "API 密钥密码", + "xpack.stackConnectors.components.resilient.apiUrlTextFieldLabel": "URL", + "xpack.stackConnectors.components.resilient.commentsTextAreaFieldLabel": "其他注释", + "xpack.stackConnectors.components.resilient.descriptionTextAreaFieldLabel": "描述", + "xpack.stackConnectors.components.resilient.nameFieldLabel": "名称(必填)", + "xpack.stackConnectors.components.resilient.orgId": "组织 ID", + "xpack.stackConnectors.components.resilient.requiredNameTextField": "“名称”必填。", + "xpack.stackConnectors.components.resilient.selectMessageText": "在 IBM Resilient 中创建事件。", + "xpack.stackConnectors.components.resilient.severity": "严重性", + "xpack.stackConnectors.components.resilient.unableToGetIncidentTypesMessage": "无法获取事件类型", + "xpack.stackConnectors.components.resilient.unableToGetSeverityMessage": "无法获取严重性", + "xpack.stackConnectors.components.resilient.urgencySelectFieldLabel": "事件类型", + "xpack.stackConnectors.components.serverLog.connectorTypeTitle": "发送到服务器日志", + "xpack.stackConnectors.components.serverLog.logLevelFieldLabel": "级别", + "xpack.stackConnectors.components.serverLog.logMessageFieldLabel": "消息", + "xpack.stackConnectors.components.serverLog.selectMessageText": "将消息添加到 Kibana 日志。", + "xpack.stackConnectors.components.serviceNow.apiUrlTextFieldLabel": "ServiceNow 实例 URL", + "xpack.stackConnectors.components.serviceNow.applicationRequiredCallout": "未安装 Elastic ServiceNow 应用", + "xpack.stackConnectors.components.serviceNow.applicationRequiredCallout.content": "请前往 ServiceNow 应用商店并安装该应用程序", + "xpack.stackConnectors.components.serviceNow.applicationRequiredCallout.errorMessage": "错误消息", + "xpack.stackConnectors.components.serviceNow.authenticationLabel": "身份验证", + "xpack.stackConnectors.components.serviceNow.cancelButtonText": "取消", + "xpack.stackConnectors.components.serviceNow.categoryTitle": "类别", + "xpack.stackConnectors.components.serviceNow.clientIdTextFieldLabel": "客户端 ID", + "xpack.stackConnectors.components.serviceNow.clientSecretTextFieldLabel": "客户端密钥", + "xpack.stackConnectors.components.serviceNow.commentsTextAreaFieldLabel": "其他注释", + "xpack.stackConnectors.components.serviceNow.confirmButtonText": "更新", + "xpack.stackConnectors.components.serviceNow.correlationDisplay": "相关性显示(可选)", + "xpack.stackConnectors.components.serviceNow.correlationID": "相关性 ID(可选)", + "xpack.stackConnectors.components.serviceNow.deprecatedCalloutCreate": "或新建一个。", + "xpack.stackConnectors.components.serviceNow.deprecatedCalloutMigrate": "更新此连接器,", + "xpack.stackConnectors.components.serviceNow.deprecatedCalloutTitle": "此连接器类型已过时", + "xpack.stackConnectors.components.serviceNow.descriptionTextAreaFieldLabel": "描述", + "xpack.stackConnectors.components.serviceNow.eventClassTextAreaFieldLabel": "源实例", + "xpack.stackConnectors.components.serviceNow.fetchErrorMsg": "无法提取。检查 ServiceNow 实例的 URL 或 CORS 配置。", + "xpack.stackConnectors.components.serviceNow.impactSelectFieldLabel": "影响", + "xpack.stackConnectors.components.serviceNow.installationCalloutTitle": "要使用此连接器,请先从 ServiceNow 应用商店安装 Elastic 应用。", + "xpack.stackConnectors.components.serviceNow.invalidApiUrlTextField": "URL 无效。", + "xpack.stackConnectors.components.serviceNow.keyIdTextFieldLabel": "JWT Verifier 密钥 ID", + "xpack.stackConnectors.components.serviceNow.messageKeyTextAreaFieldLabel": "消息密钥", + "xpack.stackConnectors.components.serviceNow.metricNameTextAreaFieldLabel": "指标名称", + "xpack.stackConnectors.components.serviceNow.nodeTextAreaFieldLabel": "节点", + "xpack.stackConnectors.components.serviceNow.passwordTextFieldLabel": "密码", + "xpack.stackConnectors.components.serviceNow.prioritySelectFieldLabel": "优先级", + "xpack.stackConnectors.components.serviceNow.privateKeyPassLabelHelpText": "仅在设置了私钥密码时才需要此项", + "xpack.stackConnectors.components.serviceNow.privateKeyPassTextFieldLabel": "私钥密码", + "xpack.stackConnectors.components.serviceNow.privateKeyTextFieldLabel": "私钥", + "xpack.stackConnectors.components.serviceNow.requiredClientIdTextField": "“客户端 ID”必填。", + "xpack.stackConnectors.components.serviceNow.requiredKeyIdTextField": "JWT Verifier 密钥 ID 必填。", + "xpack.stackConnectors.components.serviceNow.requiredPrivateKeyTextField": "“私钥”必填。", + "xpack.stackConnectors.components.serviceNow.requiredSeverityTextField": "“严重性”必填。", + "xpack.stackConnectors.components.serviceNow.requiredUserIdentifierTextField": "“用户标识符”必填。", + "xpack.stackConnectors.components.serviceNow.requiredUsernameTextField": "“用户名”必填。", + "xpack.stackConnectors.components.serviceNow.resourceTextAreaFieldLabel": "资源", + "xpack.stackConnectors.components.serviceNow.setupDevInstance": "设置开发者实例", + "xpack.stackConnectors.components.serviceNow.severityRequiredSelectFieldLabel": "严重性(必需)", + "xpack.stackConnectors.components.serviceNow.severitySelectFieldLabel": "严重性", + "xpack.stackConnectors.components.serviceNow.snInstanceLabel": "ServiceNow 实例", + "xpack.stackConnectors.components.serviceNow.sourceTextAreaFieldLabel": "源", + "xpack.stackConnectors.components.serviceNow.subcategoryTitle": "子类别", + "xpack.stackConnectors.components.serviceNow.title": "事件", + "xpack.stackConnectors.components.serviceNow.titleFieldLabel": "简短描述(必填)", + "xpack.stackConnectors.components.serviceNow.typeTextAreaFieldLabel": "类型", + "xpack.stackConnectors.components.serviceNow.unableToGetChoicesMessage": "无法获取选项", + "xpack.stackConnectors.components.serviceNow.unknown": "未知", + "xpack.stackConnectors.components.serviceNow.updateCalloutText": "连接器已更新。", + "xpack.stackConnectors.components.serviceNow.updateFormCredentialsTitle": "提供身份验证凭据", + "xpack.stackConnectors.components.serviceNow.updateFormInstallTitle": "安装 Elastic ServiceNow 应用", + "xpack.stackConnectors.components.serviceNow.updateFormTitle": "更新 ServiceNow 连接器", + "xpack.stackConnectors.components.serviceNow.updateFormUrlTitle": "输入 ServiceNow 实例 URL", + "xpack.stackConnectors.components.serviceNow.urgencySelectFieldLabel": "紧急性", + "xpack.stackConnectors.components.serviceNow.useOAuth": "使用 OAuth 身份验证", + "xpack.stackConnectors.components.serviceNow.userEmailTextFieldLabel": "用户标识符", + "xpack.stackConnectors.components.serviceNow.usernameTextFieldLabel": "用户名", + "xpack.stackConnectors.components.serviceNow.visitSNStore": "访问 ServiceNow 应用商店", + "xpack.stackConnectors.components.serviceNow.warningMessage": "这会更新此连接器的所有实例并且无法恢复。", + "xpack.stackConnectors.components.serviceNow.correlationIDHelpLabel": "用于更新事件的标识符", + "xpack.stackConnectors.components.serviceNowITOM.connectorTypeTitle": "ServiceNow ITOM", + "xpack.stackConnectors.components.serviceNowITOM.event": "事件", + "xpack.stackConnectors.components.serviceNowITOM.selectMessageText": "在 ServiceNow ITOM 中创建事件。", + "xpack.stackConnectors.components.serviceNowITSM.connectorTypeTitle": "ServiceNow ITSM", + "xpack.stackConnectors.components.serviceNowITSM.selectMessageText": "在 ServiceNow ITSM 中创建事件。", + "xpack.stackConnectors.components.serviceNowSIR.connectorTypeTitle": "ServiceNow SecOps", + "xpack.stackConnectors.components.serviceNowSIR.selectMessageText": "在 ServiceNow SecOps 中创建事件。", + "xpack.stackConnectors.components.serviceNowSIR.title": "安全事件", + "xpack.stackConnectors.components.serviceNowSIR.correlationIDHelpLabel": "用于更新事件的标识符", + "xpack.stackConnectors.components.slack.connectorTypeTitle": "发送到 Slack", + "xpack.stackConnectors.components.slack.error.invalidWebhookUrlText": "Webhook URL 无效。", + "xpack.stackConnectors.components.slack.messageTextAreaFieldLabel": "消息", + "xpack.stackConnectors.components.slack.selectMessageText": "向 Slack 频道或用户发送消息。", + "xpack.stackConnectors.components.slack.webhookUrlHelpLabel": "创建 Slack webhook URL", + "xpack.stackConnectors.components.slack.webhookUrlTextFieldLabel": "Webhook URL", + "xpack.stackConnectors.components.swimlane.unableToGetApplicationFieldsMessage": "无法获取应用程序字段", + "xpack.stackConnectors.components.swimlane.connectorTypeTitle": "创建泳道记录", + "xpack.stackConnectors.components.swimlane.alertIdFieldLabel": "告警 ID", + "xpack.stackConnectors.components.swimlane.apiTokenNameHelpLabel": "提供泳道 API 令牌", + "xpack.stackConnectors.components.swimlane.apiTokenTextFieldLabel": "API 令牌", + "xpack.stackConnectors.components.swimlane.apiUrlTextFieldLabel": "API URL", + "xpack.stackConnectors.components.swimlane.appIdTextFieldLabel": "应用程序 ID", + "xpack.stackConnectors.components.swimlane.caseIdFieldLabel": "案例 ID", + "xpack.stackConnectors.components.swimlane.caseNameFieldLabel": "案例名称", + "xpack.stackConnectors.components.swimlane.commentsFieldLabel": "注释", + "xpack.stackConnectors.components.swimlane.configureConnectionLabel": "配置 API 连接", + "xpack.stackConnectors.components.swimlane.connectorType": "连接器类型", + "xpack.stackConnectors.components.swimlane.descriptionFieldLabel": "描述", + "xpack.stackConnectors.components.swimlane.emptyMappingWarningDesc": "无法选择此连接器,因为其缺失所需的告警字段映射。您可以编辑此连接器以添加所需的字段映射或选择告警类型的连接器。", + "xpack.stackConnectors.components.swimlane.emptyMappingWarningTitle": "此连接器缺失字段映射", + "xpack.stackConnectors.components.swimlane.error.requiredAlertID": "“告警 ID”必填。", + "xpack.stackConnectors.components.swimlane.error.requiredAppIdText": "“应用 ID”必填。", + "xpack.stackConnectors.components.swimlane.error.requiredCaseID": "“案例 ID”必填。", + "xpack.stackConnectors.components.swimlane.error.requiredCaseName": "“案例名称”必填。", + "xpack.stackConnectors.components.swimlane.error.requiredComments": "“注释”必填。", + "xpack.stackConnectors.components.swimlane.error.requiredDescription": "“描述”必填。", + "xpack.stackConnectors.components.swimlane.error.requiredRuleName": "“规则名称”必填。", + "xpack.stackConnectors.components.swimlane.error.requiredSeverity": "“严重性”必填。", + "xpack.stackConnectors.components.swimlane.invalidApiUrlTextField": "URL 无效。", + "xpack.stackConnectors.components.swimlane.mappingTitleTextFieldLabel": "配置字段映射", + "xpack.stackConnectors.components.swimlane.nextStep": "下一步", + "xpack.stackConnectors.components.swimlane.nextStepHelpText": "如果未配置字段映射,泳道连接器类型将设置为 all。", + "xpack.stackConnectors.components.swimlane.prevStep": "返回", + "xpack.stackConnectors.components.swimlane.ruleNameFieldLabel": "规则名称", + "xpack.stackConnectors.components.swimlane.selectMessageText": "在泳道中创建记录", + "xpack.stackConnectors.components.swimlane.severityFieldLabel": "严重性", + "xpack.stackConnectors.components.teams.connectorTypeTitle": "向 Microsoft Teams 频道发送消息。", + "xpack.stackConnectors.components.teams.error.invalidWebhookUrlText": "Webhook URL 无效。", + "xpack.stackConnectors.components.teams.error.requiredMessageText": "“消息”必填。", + "xpack.stackConnectors.components.teams.error.webhookUrlTextLabel": "Webhook URL", + "xpack.stackConnectors.components.teams.messageTextAreaFieldLabel": "消息", + "xpack.stackConnectors.components.teams.selectMessageText": "向 Microsoft Teams 频道发送消息。", + "xpack.stackConnectors.components.teams.webhookUrlHelpLabel": "创建 Microsoft Teams Webhook URL", + "xpack.stackConnectors.components.webhook.connectorTypeTitle": "Webhook 数据", + "xpack.stackConnectors.components.webhook.addHeaderButtonLabel": "添加标头", + "xpack.stackConnectors.components.webhook.authenticationLabel": "身份验证", + "xpack.stackConnectors.components.webhook.bodyCodeEditorAriaLabel": "代码编辑器", + "xpack.stackConnectors.components.webhook.bodyFieldLabel": "正文", + "xpack.stackConnectors.components.webhook.error.invalidUrlTextField": "URL 无效。", + "xpack.stackConnectors.components.webhook.hasAuthSwitchLabel": "此 Webhook 需要身份验证", + "xpack.stackConnectors.components.webhook.headerKeyTextFieldLabel": "钥匙", + "xpack.stackConnectors.components.webhook.headerValueTextFieldLabel": "值", + "xpack.stackConnectors.components.webhook.methodTextFieldLabel": "方法", + "xpack.stackConnectors.components.webhook.passwordTextFieldLabel": "密码", + "xpack.stackConnectors.components.webhook.removeHeaderIconLabel": "钥匙", + "xpack.stackConnectors.components.webhook.selectMessageText": "将请求发送到 Web 服务。", + "xpack.stackConnectors.components.webhook.urlTextFieldLabel": "URL", + "xpack.stackConnectors.components.webhook.userTextFieldLabel": "用户名", + "xpack.stackConnectors.components.webhook.viewHeadersSwitch": "添加 HTTP 标头", + "xpack.stackConnectors.components.xmatters.connectorTypeTitle": "xMatters 数据", + "xpack.stackConnectors.components.xmatters.authenticationLabel": "身份验证", + "xpack.stackConnectors.components.xmatters.basicAuthButtonGroupLegend": "基本身份验证", + "xpack.stackConnectors.components.xmatters.basicAuthLabel": "基本身份验证", + "xpack.stackConnectors.components.xmatters.connectorSettingsLabel": "选择在设置 xMatters 触发器时使用的身份验证方法。", + "xpack.stackConnectors.components.xmatters.error.invalidUrlTextField": "URL 无效。", + "xpack.stackConnectors.components.xmatters.error.invalidUsernameTextField": "用户名无效。", + "xpack.stackConnectors.components.xmatters.error.requiredUrlText": "“URL”必填。", + "xpack.stackConnectors.components.xmatters.initiationUrlHelpText": "包括完整 xMatters url。", + "xpack.stackConnectors.components.xmatters.passwordTextFieldLabel": "密码", + "xpack.stackConnectors.components.xmatters.selectMessageText": "触发 xMatters 工作流。", + "xpack.stackConnectors.components.xmatters.severity": "严重性", + "xpack.stackConnectors.components.xmatters.severitySelectCriticalOptionLabel": "紧急", + "xpack.stackConnectors.components.xmatters.severitySelectHighOptionLabel": "高", + "xpack.stackConnectors.components.xmatters.severitySelectLowOptionLabel": "低", + "xpack.stackConnectors.components.xmatters.severitySelectMediumOptionLabel": "中", + "xpack.stackConnectors.components.xmatters.severitySelectMinimalOptionLabel": "最小", + "xpack.stackConnectors.components.xmatters.tags": "标签", + "xpack.stackConnectors.components.xmatters.urlAuthLabel": "URL 身份验证", + "xpack.stackConnectors.components.xmatters.urlLabel": "发起 URL", + "xpack.stackConnectors.components.xmatters.userCredsLabel": "用户凭据", + "xpack.stackConnectors.components.xmatters.userTextFieldLabel": "用户名", + "xpack.stackConnectors.components.casesWebhook.createCommentWarningDesc": "为连接器配置“创建注释 URL”和“创建注释对象”字段以在外部共享注释。", + "xpack.stackConnectors.components.casesWebhook.createCommentWarningTitle": "无法共享案例注释", + "xpack.stackConnectors.components.serviceNow.deprecatedTooltipTitle": "过时连接器", + "xpack.stackConnectors.components.casesWebhook.error.requiredAuthUserNameText": "“用户名”必填。", + "xpack.stackConnectors.components.casesWebhook.error.requiredCreateCommentMethodText": "“创建注释方法”必填。", + "xpack.stackConnectors.components.casesWebhook.error.requiredCreateIncidentResponseKeyText": "“创建案例响应案例 ID 键”必填。", + "xpack.stackConnectors.components.casesWebhook.error.requiredCreateMethodText": "“创建案例方法”必填。", + "xpack.stackConnectors.components.casesWebhook.error.requiredGetIncidentResponseCreatedKeyText": "“获取案例响应创建日期键”必填。", + "xpack.stackConnectors.components.casesWebhook.error.requiredGetIncidentResponseExternalTitleKeyText": "“获取案例响应外部案例标题键”必填。", + "xpack.stackConnectors.components.casesWebhook.error.requiredGetIncidentResponseUpdatedKeyText": "“获取案例响应更新日期键”必填。", + "xpack.stackConnectors.components.casesWebhook.error.requiredGetIncidentViewUrlKeyText": "“查看案例 URL”必填。", + "xpack.stackConnectors.components.casesWebhook.error.requiredUpdateMethodText": "“更新案例方法”必填。", + "xpack.stackConnectors.components.webhook.error.requiredAuthUserNameText": "“用户名”必填。", + "xpack.stackConnectors.components.webhook.error.requiredMethodText": "“方法”必填", + "xpack.stackConnectors.components.email.addBccButton": "密送", + "xpack.stackConnectors.components.email.addCcButton": "抄送", + "xpack.stackConnectors.components.email.authenticationLabel": "身份验证", + "xpack.stackConnectors.components.email.clientIdFieldLabel": "客户端 ID", + "xpack.stackConnectors.components.email.clientSecretTextFieldLabel": "客户端密钥", + "xpack.stackConnectors.components.email.fromTextFieldLabel": "发送者", + "xpack.stackConnectors.components.email.hasAuthSwitchLabel": "需要对此服务器进行身份验证", + "xpack.stackConnectors.components.email.hostTextFieldLabel": "主机", + "xpack.stackConnectors.components.email.messageTextAreaFieldLabel": "消息", + "xpack.stackConnectors.components.email.passwordFieldLabel": "密码", + "xpack.stackConnectors.components.email.portTextFieldLabel": "端口", + "xpack.stackConnectors.components.email.recipientBccTextFieldLabel": "密送", + "xpack.stackConnectors.components.email.recipientCopyTextFieldLabel": "抄送", + "xpack.stackConnectors.components.email.recipientTextFieldLabel": "至", + "xpack.stackConnectors.components.email.secureSwitchLabel": "安全", + "xpack.stackConnectors.components.email.serviceTextFieldLabel": "服务", + "xpack.stackConnectors.components.email.subjectTextFieldLabel": "主题", + "xpack.stackConnectors.components.email.tenantIdFieldLabel": "租户 ID", + "xpack.stackConnectors.components.email.userTextFieldLabel": "用户名", + "xpack.stackConnectors.components.index.resetDefaultIndexLabel": "重置默认索引", "xpack.aiops.explainLogRateSpikes.loadingState.identifiedFieldCandidates": "已识别 {fieldCandidatesCount, plural, other {# 个字段候选项}}。", "xpack.aiops.explainLogRateSpikes.loadingState.identifiedFieldValuePairs": "已识别 {fieldValuePairsCount, plural, other {# 个重要的字段/值对}}。", "xpack.aiops.index.dataLoader.internalServerErrorMessage": "加载索引 {index} 中的数据时出错。{message}。请求可能已超时。请尝试使用较小的样例大小或缩小时间范围。", @@ -31832,20 +32209,7 @@ "xpack.triggersActionsUI.actionVariables.legacyTagsLabel": "其已弃用,将由 {variable} 替代。", "xpack.triggersActionsUI.checkActionTypeEnabled.actionTypeDisabledByLicenseMessage": "此连接器需要{minimumLicenseRequired}许可证。", "xpack.triggersActionsUI.checkRuleTypeEnabled.ruleTypeDisabledByLicenseMessage": "此规则类型需要{minimumLicenseRequired}许可证。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.missingVariables": "缺少所需{variableCount, plural, other {变量}}:{variables}", - "xpack.triggersActionsUI.components.builtinActionTypes.error.badIndexOverrideValue": "告警历史记录索引必须以“{alertHistoryPrefix}”开头。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.invalidEmail": "电子邮件地址 {email} 无效。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.notAllowed": "不允许使用电子邮件地址 {email}。", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.preconfiguredIndexHelpText": "文档已索引到 {alertHistoryIndex} 索引中。", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.unableToGetIssueMessage": "无法获取 ID 为 {id} 的问题", "xpack.triggersActionsUI.components.builtinActionTypes.missingSecretsValuesLabel": "未导入敏感信息。请为以下字段{encryptedFieldsLength, plural, other {}} {secretFieldsLabel}输入值{encryptedFieldsLength, plural, other {}}。", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.error.invalidTimestamp": "时间戳必须是有效的日期,例如 {nowShortFormat} 或 {nowLongFormat}。", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.apiInfoError": "尝试获取应用程序信息时收到的状态:{status}", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.appInstallationInfo": "{update} {create} ", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.updateSuccessToastTitle": "{connectorName} 连接器已更新", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowAction.apiUrlHelpLabel": "提供所需 ServiceNow 实例的完整 URL。如果没有,{instance}。", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowAction.serviceNowAppRunning": "在运行更新之前,必须从 ServiceNow 应用商店安装 Elastic 应用。{visitLink} 以安装该应用", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlane.unableToGetApplicationMessage": "无法获取 ID 为 {id} 的应用程序", "xpack.triggersActionsUI.components.buttonGroupField.error.requiredField": "{label} 必填。", "xpack.triggersActionsUI.components.deleteSelectedIdsErrorNotification.descriptionText": "无法删除 {numErrors, number} 个{numErrors, plural, one {{singleTitle}} other {{multipleTitle}}}", "xpack.triggersActionsUI.components.passwordField.error.requiredNameText": "{label} 必填。", @@ -32001,340 +32365,6 @@ "xpack.triggersActionsUI.components.addMessageVariables.addRuleVariableTitle": "添加规则变量", "xpack.triggersActionsUI.components.addMessageVariables.addVariablePopoverButton": "添加变量", "xpack.triggersActionsUI.components.alertTable.useFetchAlerts.errorMessageText": "搜索告警时发生错误", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhook.commentsTextAreaFieldLabel": "其他注释", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhook.descriptionTextAreaFieldLabel": "描述", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhook.tagsFieldLabel": "标签", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhook.titleFieldLabel": "摘要(必填)", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.actionTypeTitle": "Webhook - 案例管理数据", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.addHeaderButton": "添加", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.addVariable": "添加变量", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.authenticationLabel": "身份验证", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.caseCommentDesc": "Kibana 案例注释", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.caseDescriptionDesc": "Kibana 案例描述", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.caseTagsDesc": "Kibana 案例标签", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.caseTitleDesc": "Kibana 案例标题", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createCommentJsonHelp": "用于创建注释的 JSON 对象。使用变量选择器将案例数据添加到有效负载。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createCommentJsonTextFieldLabel": "创建注释对象", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createCommentMethodTextFieldLabel": "创建注释方法", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createCommentUrlHelp": "用于添加注释到案例的 API URL。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createCommentUrlTextFieldLabel": "创建注释 URL", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createIncidentJsonHelpText": "用于创建案例的 JSON 对象。使用变量选择器将案例数据添加到有效负载。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createIncidentJsonTextFieldLabel": "创建案例对象", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createIncidentMethodTextFieldLabel": "创建案例方法", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createIncidentResponseKeyHelpText": "创建案例响应中包含外部案例 ID 的 JSON 键", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createIncidentResponseKeyTextFieldLabel": "创建案例响应案例键", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createIncidentUrlTextFieldLabel": "创建案例 URL", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.deleteHeaderButton": "删除", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.docLink": "正在配置 Webhook - 案例管理连接器。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.requiredCreateCommentIncidentText": "创建注释对象必须为有效 JSON。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.requiredCreateCommentUrlText": "创建注释 URL 必须为 URL 格式。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.requiredCreateIncidentText": "“创建案例对象”必填并且必须为有效 JSON。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.requiredCreateUrlText": "“创建案例 URL”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.requiredGetIncidentUrlText": "“获取案例 URL”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.requiredUpdateIncidentText": "“更新案例对象”必填并且必须为有效 JSON。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.requiredUpdateUrlText": "“更新案例 URL”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.externalIdDesc": "外部系统 ID", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.externalTitleDesc": "外部系统标题", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.getIncidentResponseExternalTitleKeyHelp": "获取案例响应中包含外部案例标题的 JSON 键", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.getIncidentResponseExternalTitleKeyTextFieldLabel": "获取案例响应外部标题键", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.getIncidentUrlHelp": "用于从外部系统中获取案例详情 JSON 的 API URL。使用变量选择器添加外部系统 ID 到 URL。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.getIncidentUrlTextFieldLabel": "获取案例 URL", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.hasAuthSwitchLabel": "此 Webhook 需要身份验证", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.httpHeadersTitle": "在用的标头", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.jsonCodeEditorAriaLabel": "代码编辑器", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.jsonFieldLabel": "JSON", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.keyTextFieldLabel": "钥匙", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.next": "下一步", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.passwordTextFieldLabel": "密码", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.previous": "上一步", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.selectMessageText": "发送请求到案例管理 Web 服务。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step1": "设置连接器", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step2": "创建案例", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step2Description": "设置字段以在外部系统中创建案例。查阅您服务的 API 文档以了解需要哪些字段", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step3": "获取案例信息", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step3Description": "设置字段以在外部系统中添加案例注释。对于某些系统,这可能采取与在案例中创建更新相同的方法。查阅您服务的 API 文档以了解需要哪些字段。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step4": "注释和更新", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step4a": "在案例中创建更新", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step4aDescription": "设置字段以在外部系统中创建案例更新。对于某些系统,这可能采取与添加案例注释相同的方法。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step4b": "在案例中添加注释", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step4bDescription": "设置字段以在外部系统中添加案例注释。对于某些系统,这可能采取与在案例中创建更新相同的方法。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.updateIncidentJsonHelpl": "用于更新案例的 JSON 对象。使用变量选择器将案例数据添加到有效负载。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.updateIncidentJsonTextFieldLabel": "更新案例对象", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.updateIncidentMethodTextFieldLabel": "更新案例方法", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.updateIncidentUrlHelp": "用于更新案例的 API URL。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.updateIncidentUrlTextFieldLabel": "更新案例 URL", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.userTextFieldLabel": "用户名", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.valueTextFieldLabel": "值", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.viewHeadersSwitch": "添加 HTTP 标头", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.viewIncidentUrlHelp": "用于查看外部系统中的案例的 URL。使用变量选择器添加外部系统 ID 或外部系统标题到 URL。", - "xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.viewIncidentUrlTextFieldLabel": "外部案例查看 URL", - "xpack.triggersActionsUI.components.builtinActionTypes.common.requiredShortDescTextField": "“简短描述”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.email.exchangeForm.clientIdHelpLabel": "配置客户端 ID", - "xpack.triggersActionsUI.components.builtinActionTypes.email.exchangeForm.clientSecretHelpLabel": "配置客户端密钥", - "xpack.triggersActionsUI.components.builtinActionTypes.email.exchangeForm.tenantIdHelpLabel": "配置租户 ID", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.actionTypeTitle": "发送到电子邮件", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.amazonSesServerTypeLabel": "Amazon SES", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.configureAccountsHelpLabel": "配置电子邮件帐户", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.elasticCloudServerTypeLabel": "Elastic Cloud", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.exchangeServerTypeLabel": "MS Exchange Server", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.gmailServerTypeLabel": "Gmail", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.otherServerTypeLabel": "其他", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.outlookServerTypeLabel": "Outlook", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.selectMessageText": "从您的服务器发送电子邮件。", - "xpack.triggersActionsUI.components.builtinActionTypes.emailAction.updateErrorNotificationText": "无法获取服务配置", - "xpack.triggersActionsUI.components.builtinActionTypes.error.badIndexOverrideSuffix": "告警历史记录索引必须包含有效的后缀。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.invalidPortText": "端口无效。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredAuthUserNameText": "“用户名”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredClientIdText": "“客户端 ID”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredDocumentJson": "“文档”必填,并且应为有效的 JSON 对象。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredEntryText": "未输入收件人、抄送、密送。 至少需要输入一个。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredFromText": "“发送者”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredHostText": "“主机”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredMessageText": "“消息”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredPortText": "“端口”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredServerLogMessageText": "“消息”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredServiceText": "“服务”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredSlackMessageText": "“消息”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredSubjectText": "“主题”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredTenantIdText": "“租户 ID”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredWebhookBodyText": "“正文”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.error.requiredWebhookSummaryText": "“标题”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.actionTypeTitle": "索引数据", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.chooseLabel": "选择……", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.configureIndexHelpLabel": "配置索引连接器。", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.connectorSectionTitle": "写入到索引", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.definedateFieldTooltip": "将此时间字段设置为索引文档的时间。", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.defineTimeFieldLabel": "为每个文档定义时间字段", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.documentsFieldLabel": "要索引的文档", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.error.notValidIndexText": "索引无效。", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.executionTimeFieldLabel": "时间字段", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.howToBroadenSearchQueryDescription": "使用 * 可扩大您的查询范围。", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.indexDocumentHelpLabel": "索引文档示例。", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.indicesAndIndexPatternsLabel": "基于您的数据视图", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.indicesToQueryLabel": "索引", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.jsonDocAriaLabel": "代码编辑器", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.preconfiguredIndex": "Elasticsearch 索引", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.preconfiguredIndexDocLink": "查看文档。", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.refreshLabel": "刷新索引", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.refreshTooltip": "刷新影响的分片以使此操作对搜索可见。", - "xpack.triggersActionsUI.components.builtinActionTypes.indexAction.selectMessageText": "将数据索引到 Elasticsearch 中。", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.actionTypeTitle": "Jira", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.apiTokenTextFieldLabel": "API 令牌", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.apiUrlTextFieldLabel": "URL", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.commentsTextAreaFieldLabel": "其他注释", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.descriptionTextAreaFieldLabel": "描述", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.emailTextFieldLabel": "电子邮件地址", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.impactSelectFieldLabel": "标签", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.labelsSpacesErrorMessage": "标签不能包含空格。", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.parentIssueSearchLabel": "父问题", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.projectKey": "项目键", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.requiredSummaryTextField": "“摘要”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.searchIssuesComboBoxAriaLabel": "键入内容进行搜索", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.searchIssuesComboBoxPlaceholder": "键入内容进行搜索", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.searchIssuesLoading": "正在加载……", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.selectMessageText": "在 Jira 创建事件。", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.severitySelectFieldLabel": "优先级", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.summaryFieldLabel": "摘要(必填)", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.unableToGetFieldsMessage": "无法获取字段", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.unableToGetIssuesMessage": "无法获取问题", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.unableToGetIssueTypesMessage": "无法获取问题类型", - "xpack.triggersActionsUI.components.builtinActionTypes.jira.urgencySelectFieldLabel": "问题类型", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.actionTypeTitle": "发送到 PagerDuty", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.apiUrlInvalid": "API URL 无效", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.apiUrlTextFieldLabel": "API URL(可选)", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.classFieldLabel": "类(可选)", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.componentTextFieldLabel": "组件(可选)", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.dedupKeyTextFieldLabel": "DedupKey(可选)", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.dedupKeyTextRequiredFieldLabel": "DedupKey", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.error.requiredDedupKeyText": "解决或确认事件时需要 DedupKey。", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.error.requiredRoutingKeyText": "需要集成密钥/路由密钥。", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.error.requiredSummaryText": "“摘要”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.eventActionSelectFieldLabel": "事件操作", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.eventSelectAcknowledgeOptionLabel": "确认", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.eventSelectResolveOptionLabel": "解决", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.eventSelectTriggerOptionLabel": "触发", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.groupTextFieldLabel": "组(可选)", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.routingKeyNameHelpLabel": "配置 PagerDuty 帐户", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.routingKeyTextFieldLabel": "集成密钥", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.selectMessageText": "在 PagerDuty 中发送事件。", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.severitySelectCriticalOptionLabel": "紧急", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.severitySelectErrorOptionLabel": "错误", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.severitySelectFieldLabel": "严重性(可选)", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.severitySelectInfoOptionLabel": "信息", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.severitySelectWarningOptionLabel": "警告", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.sourceTextFieldLabel": "源(可选)", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.summaryFieldLabel": "摘要", - "xpack.triggersActionsUI.components.builtinActionTypes.pagerDutyAction.timestampTextFieldLabel": "时间戳(可选)", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.actionTypeTitle": "Resilient", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.apiKeyId": "API 密钥 ID", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.apiKeySecret": "API 密钥密码", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.apiUrlTextFieldLabel": "URL", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.commentsTextAreaFieldLabel": "其他注释", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.descriptionTextAreaFieldLabel": "描述", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.nameFieldLabel": "名称(必填)", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.orgId": "组织 ID", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.requiredNameTextField": "“名称”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.selectMessageText": "在 IBM Resilient 中创建事件。", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.severity": "严重性", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.unableToGetIncidentTypesMessage": "无法获取事件类型", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.unableToGetSeverityMessage": "无法获取严重性", - "xpack.triggersActionsUI.components.builtinActionTypes.resilient.urgencySelectFieldLabel": "事件类型", - "xpack.triggersActionsUI.components.builtinActionTypes.serverLogAction.actionTypeTitle": "发送到服务器日志", - "xpack.triggersActionsUI.components.builtinActionTypes.serverLogAction.logLevelFieldLabel": "级别", - "xpack.triggersActionsUI.components.builtinActionTypes.serverLogAction.logMessageFieldLabel": "消息", - "xpack.triggersActionsUI.components.builtinActionTypes.serverLogAction.selectMessageText": "将消息添加到 Kibana 日志。", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.apiUrlTextFieldLabel": "ServiceNow 实例 URL", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.applicationRequiredCallout": "未安装 Elastic ServiceNow 应用", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.applicationRequiredCallout.content": "请前往 ServiceNow 应用商店并安装该应用程序", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.applicationRequiredCallout.errorMessage": "错误消息", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.authenticationLabel": "身份验证", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.cancelButtonText": "取消", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.categoryTitle": "类别", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.clientIdTextFieldLabel": "客户端 ID", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.clientSecretTextFieldLabel": "客户端密钥", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.commentsTextAreaFieldLabel": "其他注释", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.confirmButtonText": "更新", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.correlationDisplay": "相关性显示(可选)", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.correlationID": "相关性 ID(可选)", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.deprecatedCalloutCreate": "或新建一个。", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.deprecatedCalloutMigrate": "更新此连接器,", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.deprecatedCalloutTitle": "此连接器类型已过时", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.descriptionTextAreaFieldLabel": "描述", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.eventClassTextAreaFieldLabel": "源实例", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.fetchErrorMsg": "无法提取。检查 ServiceNow 实例的 URL 或 CORS 配置。", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.impactSelectFieldLabel": "影响", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.installationCalloutTitle": "要使用此连接器,请先从 ServiceNow 应用商店安装 Elastic 应用。", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.invalidApiUrlTextField": "URL 无效。", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.keyIdTextFieldLabel": "JWT Verifier 密钥 ID", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.messageKeyTextAreaFieldLabel": "消息密钥", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.metricNameTextAreaFieldLabel": "指标名称", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.nodeTextAreaFieldLabel": "节点", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.passwordTextFieldLabel": "密码", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.prioritySelectFieldLabel": "优先级", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.privateKeyPassLabelHelpText": "仅在设置了私钥密码时才需要此项", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.privateKeyPassTextFieldLabel": "私钥密码", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.privateKeyTextFieldLabel": "私钥", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.requiredClientIdTextField": "“客户端 ID”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.requiredKeyIdTextField": "JWT Verifier 密钥 ID 必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.requiredPrivateKeyTextField": "“私钥”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.requiredSeverityTextField": "“严重性”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.requiredUserIdentifierTextField": "“用户标识符”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.requiredUsernameTextField": "“用户名”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.resourceTextAreaFieldLabel": "资源", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.setupDevInstance": "设置开发者实例", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.severityRequiredSelectFieldLabel": "严重性(必需)", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.severitySelectFieldLabel": "严重性", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.snInstanceLabel": "ServiceNow 实例", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.sourceTextAreaFieldLabel": "源", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.subcategoryTitle": "子类别", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.title": "事件", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.titleFieldLabel": "简短描述(必填)", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.typeTextAreaFieldLabel": "类型", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.unableToGetChoicesMessage": "无法获取选项", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.unknown": "未知", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.updateCalloutText": "连接器已更新。", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.updateFormCredentialsTitle": "提供身份验证凭据", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.updateFormInstallTitle": "安装 Elastic ServiceNow 应用", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.updateFormTitle": "更新 ServiceNow 连接器", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.updateFormUrlTitle": "输入 ServiceNow 实例 URL", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.urgencySelectFieldLabel": "紧急性", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.useOAuth": "使用 OAuth 身份验证", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.userEmailTextFieldLabel": "用户标识符", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.usernameTextFieldLabel": "用户名", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenow.visitSNStore": "访问 ServiceNow 应用商店", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNow.warningMessage": "这会更新此连接器的所有实例并且无法恢复。", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowAction.correlationIDHelpLabel": "用于更新事件的标识符", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowITOM.actionTypeTitle": "ServiceNow ITOM", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenowITOM.event": "事件", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowITOM.selectMessageText": "在 ServiceNow ITOM 中创建事件。", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowITSM.actionTypeTitle": "ServiceNow ITSM", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowITSM.selectMessageText": "在 ServiceNow ITSM 中创建事件。", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowSIR.actionTypeTitle": "ServiceNow SecOps", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowSIR.selectMessageText": "在 ServiceNow SecOps 中创建事件。", - "xpack.triggersActionsUI.components.builtinActionTypes.servicenowSIR.title": "安全事件", - "xpack.triggersActionsUI.components.builtinActionTypes.serviceNowSIRAction.correlationIDHelpLabel": "用于更新事件的标识符", - "xpack.triggersActionsUI.components.builtinActionTypes.slackAction.actionTypeTitle": "发送到 Slack", - "xpack.triggersActionsUI.components.builtinActionTypes.slackAction.error.invalidWebhookUrlText": "Webhook URL 无效。", - "xpack.triggersActionsUI.components.builtinActionTypes.slackAction.messageTextAreaFieldLabel": "消息", - "xpack.triggersActionsUI.components.builtinActionTypes.slackAction.selectMessageText": "向 Slack 频道或用户发送消息。", - "xpack.triggersActionsUI.components.builtinActionTypes.slackAction.webhookUrlHelpLabel": "创建 Slack webhook URL", - "xpack.triggersActionsUI.components.builtinActionTypes.slackAction.webhookUrlTextFieldLabel": "Webhook URL", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlane.unableToGetApplicationFieldsMessage": "无法获取应用程序字段", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.actionTypeTitle": "创建泳道记录", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.alertIdFieldLabel": "告警 ID", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.apiTokenNameHelpLabel": "提供泳道 API 令牌", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.apiTokenTextFieldLabel": "API 令牌", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.apiUrlTextFieldLabel": "API URL", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.appIdTextFieldLabel": "应用程序 ID", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.caseIdFieldLabel": "案例 ID", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.caseNameFieldLabel": "案例名称", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.commentsFieldLabel": "注释", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.configureConnectionLabel": "配置 API 连接", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.connectorType": "连接器类型", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.descriptionFieldLabel": "描述", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.emptyMappingWarningDesc": "无法选择此连接器,因为其缺失所需的告警字段映射。您可以编辑此连接器以添加所需的字段映射或选择告警类型的连接器。", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.emptyMappingWarningTitle": "此连接器缺失字段映射", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredAlertID": "“告警 ID”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredAppIdText": "“应用 ID”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredCaseID": "“案例 ID”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredCaseName": "“案例名称”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredComments": "“注释”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredDescription": "“描述”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredRuleName": "“规则名称”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.error.requiredSeverity": "“严重性”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.invalidApiUrlTextField": "URL 无效。", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.mappingTitleTextFieldLabel": "配置字段映射", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.nextStep": "下一步", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.nextStepHelpText": "如果未配置字段映射,泳道连接器类型将设置为 all。", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.prevStep": "返回", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.ruleNameFieldLabel": "规则名称", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.selectMessageText": "在泳道中创建记录", - "xpack.triggersActionsUI.components.builtinActionTypes.swimlaneAction.severityFieldLabel": "严重性", - "xpack.triggersActionsUI.components.builtinActionTypes.teamsAction.actionTypeTitle": "向 Microsoft Teams 频道发送消息。", - "xpack.triggersActionsUI.components.builtinActionTypes.teamsAction.error.invalidWebhookUrlText": "Webhook URL 无效。", - "xpack.triggersActionsUI.components.builtinActionTypes.teamsAction.error.requiredMessageText": "“消息”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.teamsAction.error.webhookUrlTextLabel": "Webhook URL", - "xpack.triggersActionsUI.components.builtinActionTypes.teamsAction.messageTextAreaFieldLabel": "消息", - "xpack.triggersActionsUI.components.builtinActionTypes.teamsAction.selectMessageText": "向 Microsoft Teams 频道发送消息。", - "xpack.triggersActionsUI.components.builtinActionTypes.teamsAction.webhookUrlHelpLabel": "创建 Microsoft Teams Webhook URL", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.actionTypeTitle": "Webhook 数据", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.addHeaderButtonLabel": "添加标头", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.authenticationLabel": "身份验证", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.bodyCodeEditorAriaLabel": "代码编辑器", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.bodyFieldLabel": "正文", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.error.invalidUrlTextField": "URL 无效。", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.hasAuthSwitchLabel": "此 Webhook 需要身份验证", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.headerKeyTextFieldLabel": "钥匙", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.headerValueTextFieldLabel": "值", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.methodTextFieldLabel": "方法", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.passwordTextFieldLabel": "密码", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.removeHeaderIconLabel": "钥匙", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.selectMessageText": "将请求发送到 Web 服务。", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.urlTextFieldLabel": "URL", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.userTextFieldLabel": "用户名", - "xpack.triggersActionsUI.components.builtinActionTypes.webhookAction.viewHeadersSwitch": "添加 HTTP 标头", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.actionTypeTitle": "xMatters 数据", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.authenticationLabel": "身份验证", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.basicAuthButtonGroupLegend": "基本身份验证", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.basicAuthLabel": "基本身份验证", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.connectorSettingsLabel": "选择在设置 xMatters 触发器时使用的身份验证方法。", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.error.invalidUrlTextField": "URL 无效。", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.error.invalidUsernameTextField": "用户名无效。", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.error.requiredUrlText": "“URL”必填。", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.initiationUrlHelpText": "包括完整 xMatters url。", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.passwordTextFieldLabel": "密码", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.selectMessageText": "触发 xMatters 工作流。", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.severity": "严重性", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.severitySelectCriticalOptionLabel": "紧急", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.severitySelectHighOptionLabel": "高", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.severitySelectLowOptionLabel": "低", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.severitySelectMediumOptionLabel": "中", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.severitySelectMinimalOptionLabel": "最小", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.tags": "标签", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.urlAuthLabel": "URL 身份验证", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.urlLabel": "发起 URL", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.userCredsLabel": "用户凭据", - "xpack.triggersActionsUI.components.builtinActionTypes.xmattersAction.userTextFieldLabel": "用户名", "xpack.triggersActionsUI.components.emptyConnectorsPrompt.addConnectorButtonLabel": "创建连接器", "xpack.triggersActionsUI.components.emptyConnectorsPrompt.addConnectorEmptyBody": "配置电子邮件、Slack、Elasticsearch,以及 Kibana 运行的第三方服务。", "xpack.triggersActionsUI.components.emptyConnectorsPrompt.addConnectorEmptyTitle": "创建您的首个连接器", @@ -32356,8 +32386,6 @@ "xpack.triggersActionsUI.components.jsonEditorWithMessageVariable.noEditorErrorMessage": "找不到编辑器,请刷新页面并重试", "xpack.triggersActionsUI.components.jsonEditorWithMessageVariable.noEditorErrorTitle": "无法添加消息变量", "xpack.triggersActionsUI.components.simpleConnectorForm.secrets.authenticationLabel": "身份验证", - "xpack.triggersActionsUI.components.textAreaWithMessageVariable.createCommentWarningDesc": "为连接器配置“创建注释 URL”和“创建注释对象”字段以在外部共享注释。", - "xpack.triggersActionsUI.components.textAreaWithMessageVariable.createCommentWarningTitle": "无法共享案例注释", "xpack.triggersActionsUI.connectors.breadcrumbTitle": "连接器", "xpack.triggersActionsUI.data.coreQueryParams.dateStartGTdateEndErrorMessage": "[dateStart]:晚于 [dateEnd]", "xpack.triggersActionsUI.data.coreQueryParams.intervalRequiredErrorMessage": "[interval]:如果 [dateStart] 不等于 [dateEnd],则必须指定", @@ -32430,7 +32458,6 @@ "xpack.triggersActionsUI.sections.actionConnectorForm.loadingConnectorSettingsDescription": "正在加载连接器设置……", "xpack.triggersActionsUI.sections.actionForm.actionSectionsTitle": "操作", "xpack.triggersActionsUI.sections.actionForm.addActionButtonLabel": "添加操作", - "xpack.triggersActionsUI.sections.actionForm.deprecatedTooltipTitle": "过时连接器", "xpack.triggersActionsUI.sections.actionForm.getMoreConnectorsTitle": "获取更多连接器", "xpack.triggersActionsUI.sections.actionForm.getMoreRuleTypesTitle": "获取更多规则类型", "xpack.triggersActionsUI.sections.actionForm.incidentManagementSystemLabel": "事件管理系统", @@ -32469,17 +32496,6 @@ "xpack.triggersActionsUI.sections.actionTypeForm.actionErrorToolTip": "操作包含错误。", "xpack.triggersActionsUI.sections.actionTypeForm.actionRunWhenInActionGroup": "运行条件", "xpack.triggersActionsUI.sections.actionTypeForm.addNewConnectorEmptyButton": "添加连接器", - "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredAuthUserNameText": "“用户名”必填。", - "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredCreateCommentMethodText": "“创建注释方法”必填。", - "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredCreateIncidentResponseKeyText": "“创建案例响应案例 ID 键”必填。", - "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredCreateMethodText": "“创建案例方法”必填。", - "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredGetIncidentResponseCreatedKeyText": "“获取案例响应创建日期键”必填。", - "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredGetIncidentResponseExternalTitleKeyText": "“获取案例响应外部案例标题键”必填。", - "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredGetIncidentResponseUpdatedKeyText": "“获取案例响应更新日期键”必填。", - "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredGetIncidentViewUrlKeyText": "“查看案例 URL”必填。", - "xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredUpdateMethodText": "“更新案例方法”必填。", - "xpack.triggersActionsUI.sections.addAction.webhookAction.error.requiredAuthUserNameText": "“用户名”必填。", - "xpack.triggersActionsUI.sections.addAction.webhookAction.error.requiredMethodText": "“方法”必填", "xpack.triggersActionsUI.sections.addConnectorForm.selectConnectorFlyoutTitle": "选择连接器", "xpack.triggersActionsUI.sections.addConnectorForm.updateSuccessNotificationText": "已创建“{connectorName}”", "xpack.triggersActionsUI.sections.addModalConnectorForm.cancelButtonLabel": "取消", @@ -32489,25 +32505,6 @@ "xpack.triggersActionsUI.sections.alertsTable.alertsFlyout.reason": "原因", "xpack.triggersActionsUI.sections.alertsTable.column.actions": "操作", "xpack.triggersActionsUI.sections.alertsTable.leadingControl.viewDetails": "查看详情", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.addBccButton": "密送", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.addCcButton": "抄送", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.authenticationLabel": "身份验证", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.clientIdFieldLabel": "客户端 ID", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.clientSecretTextFieldLabel": "客户端密钥", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.fromTextFieldLabel": "发送者", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.hasAuthSwitchLabel": "需要对此服务器进行身份验证", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.hostTextFieldLabel": "主机", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.messageTextAreaFieldLabel": "消息", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.passwordFieldLabel": "密码", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.portTextFieldLabel": "端口", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.recipientBccTextFieldLabel": "密送", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.recipientCopyTextFieldLabel": "抄送", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.recipientTextFieldLabel": "至", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.secureSwitchLabel": "安全", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.serviceTextFieldLabel": "服务", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.subjectTextFieldLabel": "主题", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.tenantIdFieldLabel": "租户 ID", - "xpack.triggersActionsUI.sections.builtinActionTypes.emailAction.userTextFieldLabel": "用户名", "xpack.triggersActionsUI.sections.confirmRuleClose.confirmRuleCloseCancelButtonText": "取消", "xpack.triggersActionsUI.sections.confirmRuleClose.confirmRuleCloseConfirmButtonText": "放弃更改", "xpack.triggersActionsUI.sections.confirmRuleClose.confirmRuleCloseMessage": "您无法恢复未保存更改。", @@ -32697,7 +32694,6 @@ "xpack.triggersActionsUI.sections.rulesList.removeAllButton": "全部删除", "xpack.triggersActionsUI.sections.rulesList.removeCancelButton": "取消", "xpack.triggersActionsUI.sections.rulesList.removeConfirmButton": "全部删除", - "xpack.triggersActionsUI.sections.rulesList.resetDefaultIndexLabel": "重置默认索引", "xpack.triggersActionsUI.sections.rulesList.ruleErrorReasonDecrypting": "解密规则时发生错误。", "xpack.triggersActionsUI.sections.rulesList.ruleErrorReasonDisabled": "无法执行规则,因为在规则禁用之后已运行。", "xpack.triggersActionsUI.sections.rulesList.ruleErrorReasonLicense": "无法运行规则", diff --git a/x-pack/plugins/triggers_actions_ui/README.md b/x-pack/plugins/triggers_actions_ui/README.md index 999b7b00a13aa..0643a7d266a88 100644 --- a/x-pack/plugins/triggers_actions_ui/README.md +++ b/x-pack/plugins/triggers_actions_ui/README.md @@ -917,13 +917,13 @@ export function getActionType(): ActionTypeModel { id: '.email', iconClass: 'email', selectMessage: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.emailAction.selectMessageText', + 'xpack.stackConnectors.components.email.selectMessageText', { defaultMessage: 'Send email from your server.', } ), actionTypeTitle: i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.emailAction.actionTypeTitle', + 'xpack.stackConnectors.components.email.connectorTypeTitle', { defaultMessage: 'Send to email', } diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/translations.ts b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/translations.ts deleted file mode 100644 index 785840477af68..0000000000000 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/translations.ts +++ /dev/null @@ -1,510 +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 { i18n } from '@kbn/i18n'; - -export const CREATE_URL_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.requiredCreateUrlText', - { - defaultMessage: 'Create case URL is required.', - } -); -export const CREATE_INCIDENT_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.requiredCreateIncidentText', - { - defaultMessage: 'Create case object is required and must be valid JSON.', - } -); - -export const CREATE_METHOD_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredCreateMethodText', - { - defaultMessage: 'Create case method is required.', - } -); - -export const CREATE_RESPONSE_KEY_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredCreateIncidentResponseKeyText', - { - defaultMessage: 'Create case response case id key is required.', - } -); - -export const UPDATE_URL_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.requiredUpdateUrlText', - { - defaultMessage: 'Update case URL is required.', - } -); -export const UPDATE_INCIDENT_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.requiredUpdateIncidentText', - { - defaultMessage: 'Update case object is required and must be valid JSON.', - } -); - -export const UPDATE_METHOD_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredUpdateMethodText', - { - defaultMessage: 'Update case method is required.', - } -); - -export const CREATE_COMMENT_URL_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.requiredCreateCommentUrlText', - { - defaultMessage: 'Create comment URL must be URL format.', - } -); -export const CREATE_COMMENT_MESSAGE = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.requiredCreateCommentIncidentText', - { - defaultMessage: 'Create comment object must be valid JSON.', - } -); - -export const CREATE_COMMENT_METHOD_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredCreateCommentMethodText', - { - defaultMessage: 'Create comment method is required.', - } -); - -export const GET_INCIDENT_URL_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.requiredGetIncidentUrlText', - { - defaultMessage: 'Get case URL is required.', - } -); -export const GET_RESPONSE_EXTERNAL_TITLE_KEY_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredGetIncidentResponseExternalTitleKeyText', - { - defaultMessage: 'Get case response external case title key is re quired.', - } -); -export const GET_RESPONSE_EXTERNAL_CREATED_KEY_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredGetIncidentResponseCreatedKeyText', - { - defaultMessage: 'Get case response created date key is required.', - } -); -export const GET_RESPONSE_EXTERNAL_UPDATED_KEY_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredGetIncidentResponseUpdatedKeyText', - { - defaultMessage: 'Get case response updated date key is required.', - } -); -export const GET_INCIDENT_VIEW_URL_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredGetIncidentViewUrlKeyText', - { - defaultMessage: 'View case URL is required.', - } -); - -export const MISSING_VARIABLES = (variables: string[]) => - i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.error.missingVariables', - { - defaultMessage: - 'Missing required {variableCount, plural, one {variable} other {variables}}: {variables}', - values: { variableCount: variables.length, variables: variables.join(', ') }, - } - ); - -export const USERNAME_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.sections.addAction.casesWebhookAction.error.requiredAuthUserNameText', - { - defaultMessage: 'Username is required.', - } -); - -export const SUMMARY_REQUIRED = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.error.requiredWebhookSummaryText', - { - defaultMessage: 'Title is required.', - } -); - -export const KEY_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.keyTextFieldLabel', - { - defaultMessage: 'Key', - } -); - -export const VALUE_LABEL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.valueTextFieldLabel', - { - defaultMessage: 'Value', - } -); - -export const ADD_BUTTON = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.addHeaderButton', - { - defaultMessage: 'Add', - } -); - -export const DELETE_BUTTON = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.deleteHeaderButton', - { - defaultMessage: 'Delete', - description: 'Delete HTTP header', - } -); - -export const CREATE_INCIDENT_METHOD = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createIncidentMethodTextFieldLabel', - { - defaultMessage: 'Create Case Method', - } -); - -export const CREATE_INCIDENT_URL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createIncidentUrlTextFieldLabel', - { - defaultMessage: 'Create Case URL', - } -); - -export const CREATE_INCIDENT_JSON = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createIncidentJsonTextFieldLabel', - { - defaultMessage: 'Create Case Object', - } -); - -export const CREATE_INCIDENT_JSON_HELP = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createIncidentJsonHelpText', - { - defaultMessage: - 'JSON object to create case. Use the variable selector to add Cases data to the payload.', - } -); - -export const JSON = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.jsonFieldLabel', - { - defaultMessage: 'JSON', - } -); -export const CODE_EDITOR = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.jsonCodeEditorAriaLabel', - { - defaultMessage: 'Code editor', - } -); - -export const CREATE_INCIDENT_RESPONSE_KEY = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createIncidentResponseKeyTextFieldLabel', - { - defaultMessage: 'Create Case Response Case Key', - } -); - -export const CREATE_INCIDENT_RESPONSE_KEY_HELP = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createIncidentResponseKeyHelpText', - { - defaultMessage: 'JSON key in create case response that contains the external case id', - } -); - -export const ADD_CASES_VARIABLE = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.addVariable', - { - defaultMessage: 'Add variable', - } -); - -export const GET_INCIDENT_URL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.getIncidentUrlTextFieldLabel', - { - defaultMessage: 'Get Case URL', - } -); -export const GET_INCIDENT_URL_HELP = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.getIncidentUrlHelp', - { - defaultMessage: - 'API URL to GET case details JSON from external system. Use the variable selector to add external system id to the url.', - } -); - -export const GET_INCIDENT_TITLE_KEY = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.getIncidentResponseExternalTitleKeyTextFieldLabel', - { - defaultMessage: 'Get Case Response External Title Key', - } -); -export const GET_INCIDENT_TITLE_KEY_HELP = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.getIncidentResponseExternalTitleKeyHelp', - { - defaultMessage: 'JSON key in get case response that contains the external case title', - } -); - -export const EXTERNAL_INCIDENT_VIEW_URL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.viewIncidentUrlTextFieldLabel', - { - defaultMessage: 'External Case View URL', - } -); -export const EXTERNAL_INCIDENT_VIEW_URL_HELP = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.viewIncidentUrlHelp', - { - defaultMessage: - 'URL to view case in external system. Use the variable selector to add external system id or external system title to the url.', - } -); - -export const UPDATE_INCIDENT_METHOD = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.updateIncidentMethodTextFieldLabel', - { - defaultMessage: 'Update Case Method', - } -); - -export const UPDATE_INCIDENT_URL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.updateIncidentUrlTextFieldLabel', - { - defaultMessage: 'Update Case URL', - } -); -export const UPDATE_INCIDENT_URL_HELP = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.updateIncidentUrlHelp', - { - defaultMessage: 'API URL to update case.', - } -); - -export const UPDATE_INCIDENT_JSON = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.updateIncidentJsonTextFieldLabel', - { - defaultMessage: 'Update Case Object', - } -); -export const UPDATE_INCIDENT_JSON_HELP = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.updateIncidentJsonHelpl', - { - defaultMessage: - 'JSON object to update case. Use the variable selector to add Cases data to the payload.', - } -); - -export const CREATE_COMMENT_METHOD = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createCommentMethodTextFieldLabel', - { - defaultMessage: 'Create Comment Method', - } -); -export const CREATE_COMMENT_URL = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createCommentUrlTextFieldLabel', - { - defaultMessage: 'Create Comment URL', - } -); - -export const CREATE_COMMENT_URL_HELP = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createCommentUrlHelp', - { - defaultMessage: 'API URL to add comment to case.', - } -); - -export const CREATE_COMMENT_JSON = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createCommentJsonTextFieldLabel', - { - defaultMessage: 'Create Comment Object', - } -); -export const CREATE_COMMENT_JSON_HELP = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.createCommentJsonHelp', - { - defaultMessage: - 'JSON object to create a comment. Use the variable selector to add Cases data to the payload.', - } -); - -export const HAS_AUTH = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.hasAuthSwitchLabel', - { - defaultMessage: 'Require authentication for this webhook', - } -); - -export const USERNAME = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.userTextFieldLabel', - { - defaultMessage: 'Username', - } -); - -export const PASSWORD = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.passwordTextFieldLabel', - { - defaultMessage: 'Password', - } -); - -export const HEADERS_SWITCH = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.viewHeadersSwitch', - { - defaultMessage: 'Add HTTP header', - } -); - -export const HEADERS_TITLE = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.httpHeadersTitle', - { - defaultMessage: 'Headers in use', - } -); - -export const AUTH_TITLE = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.authenticationLabel', - { - defaultMessage: 'Authentication', - } -); - -export const STEP_1 = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step1', - { - defaultMessage: 'Set up connector', - } -); - -export const STEP_2 = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step2', - { - defaultMessage: 'Create case', - } -); - -export const STEP_2_DESCRIPTION = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step2Description', - { - defaultMessage: - 'Set fields to create the case in the external system. Check your service’s API documentation to understand what fields are required', - } -); - -export const STEP_3 = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step3', - { - defaultMessage: 'Get case information', - } -); - -export const STEP_3_DESCRIPTION = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step3Description', - { - defaultMessage: - 'Set fields to add comments to the case in external system. For some systems, this may be the same method as creating updates in cases. Check your service’s API documentation to understand what fields are required.', - } -); - -export const STEP_4 = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step4', - { - defaultMessage: 'Comments and updates', - } -); - -export const STEP_4A = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step4a', - { - defaultMessage: 'Create update in case', - } -); - -export const STEP_4A_DESCRIPTION = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step4aDescription', - { - defaultMessage: - 'Set fields to create updates to the case in external system. For some systems, this may be the same method as adding comments to cases.', - } -); - -export const STEP_4B = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step4b', - { - defaultMessage: 'Add comment in case', - } -); - -export const STEP_4B_DESCRIPTION = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.step4bDescription', - { - defaultMessage: - 'Set fields to add comments to the case in external system. For some systems, this may be the same method as creating updates in cases.', - } -); - -export const NEXT = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.next', - { - defaultMessage: 'Next', - } -); - -export const PREVIOUS = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.previous', - { - defaultMessage: 'Previous', - } -); - -export const CASE_TITLE_DESC = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.caseTitleDesc', - { - defaultMessage: 'Kibana case title', - } -); - -export const CASE_DESCRIPTION_DESC = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.caseDescriptionDesc', - { - defaultMessage: 'Kibana case description', - } -); - -export const CASE_TAGS_DESC = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.caseTagsDesc', - { - defaultMessage: 'Kibana case tags', - } -); - -export const CASE_COMMENT_DESC = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.caseCommentDesc', - { - defaultMessage: 'Kibana case comment', - } -); - -export const EXTERNAL_ID_DESC = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.externalIdDesc', - { - defaultMessage: 'External system id', - } -); - -export const EXTERNAL_TITLE_DESC = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.externalTitleDesc', - { - defaultMessage: 'External system title', - } -); - -export const DOC_LINK = i18n.translate( - 'xpack.triggersActionsUI.components.builtinActionTypes.casesWebhookAction.docLink', - { - defaultMessage: 'Configuring Webhook - Case Management connector.', - } -); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/webhook.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/webhook.test.tsx deleted file mode 100644 index 45169e0fcb032..0000000000000 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/cases_webhook/webhook.test.tsx +++ /dev/null @@ -1,54 +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 { TypeRegistry } from '../../../type_registry'; -import { registerBuiltInActionTypes } from '..'; -import { ActionTypeModel } from '../../../../types'; -import { registrationServicesMock } from '../../../../mocks'; - -const ACTION_TYPE_ID = '.cases-webhook'; -let actionTypeModel: ActionTypeModel; - -beforeAll(() => { - const actionTypeRegistry = new TypeRegistry(); - registerBuiltInActionTypes({ actionTypeRegistry, services: registrationServicesMock }); - const getResult = actionTypeRegistry.get(ACTION_TYPE_ID); - if (getResult !== null) { - actionTypeModel = getResult; - } -}); - -describe('actionTypeRegistry.get() works', () => { - test('action type static data is as expected', () => { - expect(actionTypeModel.id).toEqual(ACTION_TYPE_ID); - expect(actionTypeModel.iconClass).toEqual('logoWebhook'); - }); -}); - -describe('webhook action params validation', () => { - test('action params validation succeeds when action params is valid', async () => { - const actionParams = { - subActionParams: { incident: { title: 'some title {{test}}' }, comments: [] }, - }; - - expect(await actionTypeModel.validateParams(actionParams)).toEqual({ - errors: { 'subActionParams.incident.title': [] }, - }); - }); - - test('params validation fails when body is not valid', async () => { - const actionParams = { - subActionParams: { incident: { title: '' }, comments: [] }, - }; - - expect(await actionTypeModel.validateParams(actionParams)).toEqual({ - errors: { - 'subActionParams.incident.title': ['Title is required.'], - }, - }); - }); -}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/index.ts b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/index.ts deleted file mode 100644 index e5e5da50eca0b..0000000000000 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/index.ts +++ /dev/null @@ -1,58 +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 { ValidatedEmail, ValidateEmailAddressesOptions } from '@kbn/actions-plugin/common'; -import { getServerLogActionType } from './server_log'; -import { getSlackActionType } from './slack'; -import { getEmailActionType } from './email'; -import { getIndexActionType } from './es_index'; -import { getPagerDutyActionType } from './pagerduty'; -import { getSwimlaneActionType } from './swimlane'; -import { getCasesWebhookActionType } from './cases_webhook'; -import { getWebhookActionType } from './webhook'; -import { getXmattersActionType } from './xmatters'; -import { TypeRegistry } from '../../type_registry'; -import { ActionTypeModel } from '../../../types'; -import { - getServiceNowITSMActionType, - getServiceNowSIRActionType, - getServiceNowITOMActionType, -} from './servicenow'; -import { getJiraActionType } from './jira'; -import { getResilientActionType } from './resilient'; -import { getTeamsActionType } from './teams'; - -export interface RegistrationServices { - validateEmailAddresses: ( - addresses: string[], - options?: ValidateEmailAddressesOptions - ) => ValidatedEmail[]; -} - -export function registerBuiltInActionTypes({ - actionTypeRegistry, - services, -}: { - actionTypeRegistry: TypeRegistry; - services: RegistrationServices; -}) { - actionTypeRegistry.register(getServerLogActionType()); - actionTypeRegistry.register(getSlackActionType()); - actionTypeRegistry.register(getEmailActionType(services)); - actionTypeRegistry.register(getIndexActionType()); - actionTypeRegistry.register(getPagerDutyActionType()); - actionTypeRegistry.register(getSwimlaneActionType()); - actionTypeRegistry.register(getCasesWebhookActionType()); - actionTypeRegistry.register(getWebhookActionType()); - actionTypeRegistry.register(getXmattersActionType()); - actionTypeRegistry.register(getServiceNowITSMActionType()); - actionTypeRegistry.register(getServiceNowITOMActionType()); - actionTypeRegistry.register(getServiceNowSIRActionType()); - actionTypeRegistry.register(getJiraActionType()); - actionTypeRegistry.register(getResilientActionType()); - actionTypeRegistry.register(getTeamsActionType()); -} diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/index.ts b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/index.ts deleted file mode 100644 index 3db3aeaaaa66c..0000000000000 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/pagerduty/index.ts +++ /dev/null @@ -1,8 +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. - */ - -export { getActionType as getPagerDutyActionType } from './pagerduty'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/index.ts b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/index.ts deleted file mode 100644 index 2794a63d4a8b0..0000000000000 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/index.ts +++ /dev/null @@ -1,8 +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. - */ - -export { getActionType as getResilientActionType } from './resilient'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/resilient.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/resilient.test.tsx deleted file mode 100644 index c46bcd6a02c71..0000000000000 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/resilient/resilient.test.tsx +++ /dev/null @@ -1,53 +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 { TypeRegistry } from '../../../type_registry'; -import { registerBuiltInActionTypes } from '..'; -import { ActionTypeModel } from '../../../../types'; -import { registrationServicesMock } from '../../../../mocks'; - -const ACTION_TYPE_ID = '.resilient'; -let actionTypeModel: ActionTypeModel; - -beforeAll(() => { - const actionTypeRegistry = new TypeRegistry(); - registerBuiltInActionTypes({ actionTypeRegistry, services: registrationServicesMock }); - const getResult = actionTypeRegistry.get(ACTION_TYPE_ID); - if (getResult !== null) { - actionTypeModel = getResult; - } -}); - -describe('actionTypeRegistry.get() works', () => { - test('action type static data is as expected', () => { - expect(actionTypeModel.id).toEqual(ACTION_TYPE_ID); - }); -}); - -describe('resilient action params validation', () => { - test('action params validation succeeds when action params is valid', async () => { - const actionParams = { - subActionParams: { incident: { name: 'some title {{test}}' }, comments: [] }, - }; - - expect(await actionTypeModel.validateParams(actionParams)).toEqual({ - errors: { 'subActionParams.incident.name': [] }, - }); - }); - - test('params validation fails when body is not valid', async () => { - const actionParams = { - subActionParams: { incident: { name: '' }, comments: [] }, - }; - - expect(await actionTypeModel.validateParams(actionParams)).toEqual({ - errors: { - 'subActionParams.incident.name': ['Name is required.'], - }, - }); - }); -}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/index.ts b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/index.ts deleted file mode 100644 index 0edbef22ee9cb..0000000000000 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/index.ts +++ /dev/null @@ -1,8 +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. - */ - -export { getActionType as getServerLogActionType } from './server_log'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log.test.tsx deleted file mode 100644 index 098c65f294560..0000000000000 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/server_log/server_log.test.tsx +++ /dev/null @@ -1,55 +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 { TypeRegistry } from '../../../type_registry'; -import { registerBuiltInActionTypes } from '..'; -import { ActionTypeModel } from '../../../../types'; -import { registrationServicesMock } from '../../../../mocks'; - -const ACTION_TYPE_ID = '.server-log'; -let actionTypeModel: ActionTypeModel; - -beforeAll(() => { - const actionTypeRegistry = new TypeRegistry(); - registerBuiltInActionTypes({ actionTypeRegistry, services: registrationServicesMock }); - const getResult = actionTypeRegistry.get(ACTION_TYPE_ID); - if (getResult !== null) { - actionTypeModel = getResult; - } -}); - -describe('actionTypeRegistry.get() works', () => { - test('action type static data is as expected', () => { - expect(actionTypeModel.id).toEqual(ACTION_TYPE_ID); - expect(actionTypeModel.iconClass).toEqual('logsApp'); - }); -}); - -describe('action params validation', () => { - test('action params validation succeeds when action params is valid', async () => { - const actionParams = { - message: 'test message', - level: 'trace', - }; - - expect(await actionTypeModel.validateParams(actionParams)).toEqual({ - errors: { message: [] }, - }); - }); - - test('params validation fails when message is not valid', async () => { - const actionParams = { - message: '', - }; - - expect(await actionTypeModel.validateParams(actionParams)).toEqual({ - errors: { - message: ['Message is required.'], - }, - }); - }); -}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow.test.tsx deleted file mode 100644 index 9e786a189ec42..0000000000000 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/servicenow/servicenow.test.tsx +++ /dev/null @@ -1,80 +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 { TypeRegistry } from '../../../type_registry'; -import { registerBuiltInActionTypes } from '..'; -import { ActionTypeModel } from '../../../../types'; -import { registrationServicesMock } from '../../../../mocks'; - -const SERVICENOW_ITSM_ACTION_TYPE_ID = '.servicenow'; -const SERVICENOW_SIR_ACTION_TYPE_ID = '.servicenow-sir'; -const SERVICENOW_ITOM_ACTION_TYPE_ID = '.servicenow-itom'; -let actionTypeRegistry: TypeRegistry; - -beforeAll(() => { - actionTypeRegistry = new TypeRegistry(); - registerBuiltInActionTypes({ actionTypeRegistry, services: registrationServicesMock }); -}); - -describe('actionTypeRegistry.get() works', () => { - [ - SERVICENOW_ITSM_ACTION_TYPE_ID, - SERVICENOW_SIR_ACTION_TYPE_ID, - SERVICENOW_ITOM_ACTION_TYPE_ID, - ].forEach((id) => { - test(`${id}: action type static data is as expected`, () => { - const actionTypeModel = actionTypeRegistry.get(id); - expect(actionTypeModel.id).toEqual(id); - }); - }); -}); - -describe('servicenow action params validation', () => { - [SERVICENOW_ITSM_ACTION_TYPE_ID, SERVICENOW_SIR_ACTION_TYPE_ID].forEach((id) => { - test(`${id}: action params validation succeeds when action params is valid`, async () => { - const actionTypeModel = actionTypeRegistry.get(id); - const actionParams = { - subActionParams: { incident: { short_description: 'some title {{test}}' }, comments: [] }, - }; - - expect(await actionTypeModel.validateParams(actionParams)).toEqual({ - errors: { ['subActionParams.incident.short_description']: [] }, - }); - }); - - test(`${id}: params validation fails when short_description is not valid`, async () => { - const actionTypeModel = actionTypeRegistry.get(id); - const actionParams = { - subActionParams: { incident: { short_description: '' }, comments: [] }, - }; - - expect(await actionTypeModel.validateParams(actionParams)).toEqual({ - errors: { - ['subActionParams.incident.short_description']: ['Short description is required.'], - }, - }); - }); - }); - - test(`${SERVICENOW_ITOM_ACTION_TYPE_ID}: action params validation succeeds when action params is valid`, async () => { - const actionTypeModel = actionTypeRegistry.get(SERVICENOW_ITOM_ACTION_TYPE_ID); - const actionParams = { subActionParams: { severity: 'Critical' } }; - - expect(await actionTypeModel.validateParams(actionParams)).toEqual({ - errors: { ['severity']: [] }, - }); - }); - - test(`${SERVICENOW_ITOM_ACTION_TYPE_ID}: params validation fails when severity is not valid`, async () => { - const actionTypeModel = actionTypeRegistry.get(SERVICENOW_ITOM_ACTION_TYPE_ID); - const actionParams = { subActionParams: { severity: null } }; - - expect(await actionTypeModel.validateParams(actionParams)).toEqual({ - errors: { ['severity']: ['Severity is required.'] }, - }); - }); -}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack.test.tsx deleted file mode 100644 index 45689fbd50264..0000000000000 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/slack/slack.test.tsx +++ /dev/null @@ -1,54 +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 { TypeRegistry } from '../../../type_registry'; -import { registerBuiltInActionTypes } from '..'; -import { ActionTypeModel } from '../../../../types'; -import { registrationServicesMock } from '../../../../mocks'; - -const ACTION_TYPE_ID = '.slack'; -let actionTypeModel: ActionTypeModel; - -beforeAll(async () => { - const actionTypeRegistry = new TypeRegistry(); - registerBuiltInActionTypes({ actionTypeRegistry, services: registrationServicesMock }); - const getResult = actionTypeRegistry.get(ACTION_TYPE_ID); - if (getResult !== null) { - actionTypeModel = getResult; - } -}); - -describe('actionTypeRegistry.get() works', () => { - test('action type static data is as expected', () => { - expect(actionTypeModel.id).toEqual(ACTION_TYPE_ID); - expect(actionTypeModel.iconClass).toEqual('logoSlack'); - }); -}); - -describe('slack action params validation', () => { - test('if action params validation succeeds when action params is valid', async () => { - const actionParams = { - message: 'message {test}', - }; - - expect(await actionTypeModel.validateParams(actionParams)).toEqual({ - errors: { message: [] }, - }); - }); - - test('params validation fails when message is not valid', async () => { - const actionParams = { - message: '', - }; - - expect(await actionTypeModel.validateParams(actionParams)).toEqual({ - errors: { - message: ['Message is required.'], - }, - }); - }); -}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/index.ts b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/index.ts deleted file mode 100644 index 39a57e1bccb61..0000000000000 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/swimlane/index.ts +++ /dev/null @@ -1,8 +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. - */ - -export { getActionType as getSwimlaneActionType } from './swimlane'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/teams/index.ts b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/teams/index.ts deleted file mode 100644 index 84af06ff53bfc..0000000000000 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/teams/index.ts +++ /dev/null @@ -1,8 +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. - */ - -export { getActionType as getTeamsActionType } from './teams'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/teams/teams.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/teams/teams.test.tsx deleted file mode 100644 index e08853abf9c12..0000000000000 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/teams/teams.test.tsx +++ /dev/null @@ -1,53 +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 { TypeRegistry } from '../../../type_registry'; -import { registerBuiltInActionTypes } from '..'; -import { ActionTypeModel } from '../../../../types'; -import { registrationServicesMock } from '../../../../mocks'; - -const ACTION_TYPE_ID = '.teams'; -let actionTypeModel: ActionTypeModel; - -beforeAll(async () => { - const actionTypeRegistry = new TypeRegistry(); - registerBuiltInActionTypes({ actionTypeRegistry, services: registrationServicesMock }); - const getResult = actionTypeRegistry.get(ACTION_TYPE_ID); - if (getResult !== null) { - actionTypeModel = getResult; - } -}); - -describe('actionTypeRegistry.get() works', () => { - test('action type static data is as expected', () => { - expect(actionTypeModel.id).toEqual(ACTION_TYPE_ID); - }); -}); - -describe('teams action params validation', () => { - test('if action params validation succeeds when action params is valid', async () => { - const actionParams = { - message: 'message {test}', - }; - - expect(await actionTypeModel.validateParams(actionParams)).toEqual({ - errors: { message: [] }, - }); - }); - - test('params validation fails when message is not valid', async () => { - const actionParams = { - message: '', - }; - - expect(await actionTypeModel.validateParams(actionParams)).toEqual({ - errors: { - message: ['Message is required.'], - }, - }); - }); -}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook.test.tsx deleted file mode 100644 index dfc3aae39586d..0000000000000 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/webhook/webhook.test.tsx +++ /dev/null @@ -1,54 +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 { TypeRegistry } from '../../../type_registry'; -import { registerBuiltInActionTypes } from '..'; -import { ActionTypeModel } from '../../../../types'; -import { registrationServicesMock } from '../../../../mocks'; - -const ACTION_TYPE_ID = '.webhook'; -let actionTypeModel: ActionTypeModel; - -beforeAll(() => { - const actionTypeRegistry = new TypeRegistry(); - registerBuiltInActionTypes({ actionTypeRegistry, services: registrationServicesMock }); - const getResult = actionTypeRegistry.get(ACTION_TYPE_ID); - if (getResult !== null) { - actionTypeModel = getResult; - } -}); - -describe('actionTypeRegistry.get() works', () => { - test('action type static data is as expected', () => { - expect(actionTypeModel.id).toEqual(ACTION_TYPE_ID); - expect(actionTypeModel.iconClass).toEqual('logoWebhook'); - }); -}); - -describe('webhook action params validation', () => { - test('action params validation succeeds when action params is valid', async () => { - const actionParams = { - body: 'message {test}', - }; - - expect(await actionTypeModel.validateParams(actionParams)).toEqual({ - errors: { body: [] }, - }); - }); - - test('params validation fails when body is not valid', async () => { - const actionParams = { - body: '', - }; - - expect(await actionTypeModel.validateParams(actionParams)).toEqual({ - errors: { - body: ['Body is required.'], - }, - }); - }); -}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/xmatters/index.ts b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/xmatters/index.ts deleted file mode 100644 index 54bc4fd06acd4..0000000000000 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/xmatters/index.ts +++ /dev/null @@ -1,8 +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. - */ - -export { getActionType as getXmattersActionType } from './xmatters'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/xmatters/xmatters.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/xmatters/xmatters.test.tsx deleted file mode 100644 index 980fa90caf4bb..0000000000000 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/builtin_action_types/xmatters/xmatters.test.tsx +++ /dev/null @@ -1,48 +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 { TypeRegistry } from '../../../type_registry'; -import { registerBuiltInActionTypes } from '..'; -import { ActionTypeModel } from '../../../../types'; -import { registrationServicesMock } from '../../../../mocks'; - -const ACTION_TYPE_ID = '.xmatters'; -let actionTypeModel: ActionTypeModel; - -beforeAll(() => { - const actionTypeRegistry = new TypeRegistry(); - registerBuiltInActionTypes({ actionTypeRegistry, services: registrationServicesMock }); - const getResult = actionTypeRegistry.get(ACTION_TYPE_ID); - if (getResult !== null) { - actionTypeModel = getResult; - } -}); - -describe('actionTypeRegistry.get() works', () => { - test('action type static data is as expected', () => { - expect(actionTypeModel.id).toEqual(ACTION_TYPE_ID); - expect(actionTypeModel.actionTypeTitle).toEqual('xMatters data'); - }); -}); - -describe('xmatters action params validation', () => { - test('action params validation succeeds when action params is valid', async () => { - const actionParams = { - alertActionGroupName: 'Small t-shirt', - signalId: 'c9437cab-6a5b-45e8-bc8a-f4a8af440e97', - ruleName: 'Test xMatters', - date: '2022-01-18T19:01:08.818Z', - severity: 'high', - spaceId: 'default', - tags: 'test1, test2', - }; - - expect(await actionTypeModel.validateParams(actionParams)).toEqual({ - errors: { alertActionGroupName: [], signalId: [] }, - }); - }); -}); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/index.ts b/x-pack/plugins/triggers_actions_ui/public/application/components/index.ts new file mode 100644 index 0000000000000..3bc994313093b --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/index.ts @@ -0,0 +1,17 @@ +/* + * 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. + */ + +export { JsonEditorWithMessageVariables } from './json_editor_with_message_variables'; +export { HiddenField } from './hidden_field'; +export { PasswordField } from './password_field'; +export { TextFieldWithMessageVariables } from './text_field_with_message_variables'; +export { TextAreaWithMessageVariables } from './text_area_with_message_variables'; +export { SimpleConnectorForm } from './simple_connector_form'; +export type { ConfigFieldSchema, SecretsFieldSchema } from './simple_connector_form'; +export { ButtonGroupField } from './button_group_field'; +export { JsonFieldWrapper } from './json_field_wrapper'; +export { MustacheTextFieldWrapper } from './mustache_text_field_wrapper'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/simple_connector_form.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/simple_connector_form.test.tsx index 62745a6eb0995..36b3bf2cb153e 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/simple_connector_form.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/simple_connector_form.test.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { act, render, RenderResult } from '@testing-library/react'; -import { FormTestProvider } from './builtin_action_types/test_utils'; +import { FormTestProvider } from './test_utils'; import { ConfigFieldSchema, SecretsFieldSchema, diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/test_utils.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/test_utils.tsx new file mode 100644 index 0000000000000..39cff673908bd --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/test_utils.tsx @@ -0,0 +1,86 @@ +/* + * 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 React, { useCallback } from 'react'; +import { of } from 'rxjs'; +import { I18nProvider } from '@kbn/i18n-react'; +import { EuiButton } from '@elastic/eui'; +import { Form, useForm, FormData } from '@kbn/es-ui-shared-plugin/static/forms/hook_form_lib'; +import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; +import { render as reactRender, RenderOptions, RenderResult } from '@testing-library/react'; +import { KibanaThemeProvider } from '@kbn/kibana-react-plugin/public'; + +import { ConnectorServices } from '../../types'; +import { TriggersAndActionsUiServices } from '../..'; +import { createStartServicesMock } from '../../common/lib/kibana/kibana_react.mock'; +import { ConnectorProvider } from '../context/connector_context'; + +interface FormTestProviderProps { + children: React.ReactNode; + defaultValue?: Record; + onSubmit?: ({ data, isValid }: { data: FormData; isValid: boolean }) => Promise; + connectorServices?: ConnectorServices; +} + +const FormTestProviderComponent: React.FC = ({ + children, + defaultValue, + onSubmit, + connectorServices = { validateEmailAddresses: jest.fn() }, +}) => { + const { form } = useForm({ defaultValue }); + const { submit } = form; + + const onClick = useCallback(async () => { + const res = await submit(); + if (onSubmit) { + onSubmit(res); + } + }, [onSubmit, submit]); + + return ( + + +
{children}
+ +
+
+ ); +}; + +FormTestProviderComponent.displayName = 'FormTestProvider'; +export const FormTestProvider = React.memo(FormTestProviderComponent); + +type UiRender = (ui: React.ReactElement, options?: RenderOptions) => RenderResult; +export interface AppMockRenderer { + render: UiRender; + coreStart: TriggersAndActionsUiServices; +} + +export const createAppMockRenderer = (): AppMockRenderer => { + const services = createStartServicesMock(); + const theme$ = of({ darkMode: false }); + + const AppWrapper: React.FC<{ children: React.ReactElement }> = ({ children }) => ( + + + {children} + + + ); + AppWrapper.displayName = 'AppWrapper'; + const render: UiRender = (ui, options) => { + return reactRender(ui, { + wrapper: AppWrapper, + ...options, + }); + }; + return { + coreStart: services, + render, + }; +}; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/constants/index.ts b/x-pack/plugins/triggers_actions_ui/public/application/constants/index.ts index 113d274c7aeb9..19d3b038c6350 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/constants/index.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/constants/index.ts @@ -12,7 +12,6 @@ export { INTERNAL_BASE_ALERTING_API_PATH, } from '@kbn/alerting-plugin/common'; export { BASE_ACTION_API_PATH, INTERNAL_BASE_ACTION_API_PATH } from '@kbn/actions-plugin/common'; -export { INTERNAL_BASE_STACK_CONNECTORS_API_PATH } from '@kbn/stack-connectors-plugin/common'; export type Section = 'connectors' | 'rules' | 'alerts' | 'logs'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/lib/index.ts b/x-pack/plugins/triggers_actions_ui/public/application/lib/index.ts index 0e1a20c666ef6..8bb75e3cc4dbc 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/lib/index.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/lib/index.ts @@ -6,4 +6,7 @@ */ export { templateActionVariable } from './template_action_variable'; +export { hasMustacheTokens } from './has_mustache_tokens'; +export { AlertProvidedActionVariables } from './action_variables'; +export { updateActionConnector } from './action_connector_api'; export { isRuleSnoozed } from './is_rule_snoozed'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connector_form.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connector_form.test.tsx index b4cd8d1b979ac..5c2f9db816893 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connector_form.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connector_form.test.tsx @@ -6,10 +6,7 @@ */ import React, { lazy } from 'react'; -import { - AppMockRenderer, - createAppMockRenderer, -} from '../../components/builtin_action_types/test_utils'; +import { AppMockRenderer, createAppMockRenderer } from '../../components/test_utils'; import { ConnectorForm } from './connector_form'; import { actionTypeRegistryMock } from '../../action_type_registry.mock'; import userEvent from '@testing-library/user-event'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connector_form_fields.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connector_form_fields.test.tsx index 747a4925d35f8..dd99bbdbabed5 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connector_form_fields.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connector_form_fields.test.tsx @@ -11,7 +11,7 @@ import { AppMockRenderer, createAppMockRenderer, FormTestProvider, -} from '../../components/builtin_action_types/test_utils'; +} from '../../components/test_utils'; import { ConnectorFormFields } from './connector_form_fields'; import { actionTypeRegistryMock } from '../../action_type_registry.mock'; import { waitFor } from '@testing-library/dom'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connector_form_fields_global.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connector_form_fields_global.test.tsx index 9df345c45f1e1..04cbad726ead7 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connector_form_fields_global.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connector_form_fields_global.test.tsx @@ -8,7 +8,7 @@ import React from 'react'; import userEvent from '@testing-library/user-event'; import { render, act } from '@testing-library/react'; -import { FormTestProvider } from '../../components/builtin_action_types/test_utils'; +import { FormTestProvider } from '../../components/test_utils'; import { ConnectorFormFieldsGlobal } from './connector_form_fields_global'; describe('ConnectorFormFieldsGlobal', () => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/create_connector_flyout/index.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/create_connector_flyout/index.test.tsx index a0ca1a501dc9c..6256ee29aee40 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/create_connector_flyout/index.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/create_connector_flyout/index.test.tsx @@ -11,10 +11,7 @@ import { actionTypeRegistryMock } from '../../../action_type_registry.mock'; import userEvent from '@testing-library/user-event'; import { waitFor } from '@testing-library/dom'; import { act } from '@testing-library/react'; -import { - AppMockRenderer, - createAppMockRenderer, -} from '../../../components/builtin_action_types/test_utils'; +import { AppMockRenderer, createAppMockRenderer } from '../../../components/test_utils'; import CreateConnectorFlyout from '.'; import { betaBadgeProps } from '../beta_badge_props'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/edit_connector_flyout/index.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/edit_connector_flyout/index.test.tsx index 23793d3c5766b..715279fa67b1a 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/edit_connector_flyout/index.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/edit_connector_flyout/index.test.tsx @@ -11,10 +11,7 @@ import { actionTypeRegistryMock } from '../../../action_type_registry.mock'; import userEvent from '@testing-library/user-event'; import { waitFor } from '@testing-library/dom'; import { act } from '@testing-library/react'; -import { - AppMockRenderer, - createAppMockRenderer, -} from '../../../components/builtin_action_types/test_utils'; +import { AppMockRenderer, createAppMockRenderer } from '../../../components/test_utils'; import EditConnectorFlyout from '.'; import { ActionConnector, EditConnectorTabs, GenericValidationResult } from '../../../../types'; import { betaBadgeProps } from '../beta_badge_props'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/encrypted_fields_callout.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/encrypted_fields_callout.test.tsx index 6c55cd34c0655..41893e785f5bf 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/encrypted_fields_callout.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/encrypted_fields_callout.test.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { UseField } from '@kbn/es-ui-shared-plugin/static/forms/hook_form_lib'; -import { FormTestProvider } from '../../components/builtin_action_types/test_utils'; +import { FormTestProvider } from '../../components/test_utils'; import { EncryptedFieldsCallout } from './encrypted_fields_callout'; import { render, RenderResult } from '@testing-library/react'; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/index.ts b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/index.ts index 993139926b696..d832351538601 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/index.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/index.ts @@ -26,3 +26,5 @@ export const ConnectorAddModal = suspendedComponentWithProps import('./connector_add_inline')) ); + +export type { ConnectorFormSchema } from './types'; diff --git a/x-pack/plugins/triggers_actions_ui/public/common/index.ts b/x-pack/plugins/triggers_actions_ui/public/common/index.ts index fd43a6baf3f05..67677fa83b51d 100644 --- a/x-pack/plugins/triggers_actions_ui/public/common/index.ts +++ b/x-pack/plugins/triggers_actions_ui/public/common/index.ts @@ -21,7 +21,8 @@ export { builtInAggregationTypes, builtInGroupByTypes, } from './constants'; +export { connectorDeprecatedMessage, deprecatedMessage } from './connectors_selection'; export type { IOption } from './index_controls'; export { getFields, getIndexOptions, firstFieldOption } from './index_controls'; -export { getTimeFieldOptions } from './lib'; +export { getTimeFieldOptions, useKibana } from './lib'; export type { Comparator, AggregationType, GroupByType, RuleStatus } from './types'; diff --git a/x-pack/plugins/triggers_actions_ui/public/common/lib/index.ts b/x-pack/plugins/triggers_actions_ui/public/common/lib/index.ts index c8f7a6e468595..f7af1fbbde257 100644 --- a/x-pack/plugins/triggers_actions_ui/public/common/lib/index.ts +++ b/x-pack/plugins/triggers_actions_ui/public/common/lib/index.ts @@ -6,3 +6,4 @@ */ export { getTimeFieldOptions, getTimeOptions } from './get_time_options'; +export { useKibana } from './kibana'; diff --git a/x-pack/plugins/triggers_actions_ui/public/index.ts b/x-pack/plugins/triggers_actions_ui/public/index.ts index 12f45dcc31e41..7500a66b70f16 100644 --- a/x-pack/plugins/triggers_actions_ui/public/index.ts +++ b/x-pack/plugins/triggers_actions_ui/public/index.ts @@ -43,12 +43,51 @@ export type { RulesListVisibleColumns, } from './types'; +export type { + ActionConnectorFieldsProps, + ActionParamsProps, + ActionTypeModel, + GenericValidationResult, +} from './types'; + +export { + AlertHistoryDefaultIndexName, + ALERT_HISTORY_PREFIX, + AlertHistoryDocumentTemplate, + AlertHistoryEsIndexConnectorId, +} from './types'; + +export { useConnectorContext } from './application/context/use_connector_context'; + export { ActionForm, CreateConnectorFlyout, EditConnectorFlyout, } from './application/sections/action_connector_form'; +export type { ConnectorFormSchema } from './application/sections/action_connector_form'; + +export type { ConfigFieldSchema, SecretsFieldSchema } from './application/components'; + +export { + ButtonGroupField, + HiddenField, + JsonEditorWithMessageVariables, + JsonFieldWrapper, + MustacheTextFieldWrapper, + PasswordField, + SimpleConnectorForm, + TextAreaWithMessageVariables, + TextFieldWithMessageVariables, +} from './application/components'; + +export { + AlertProvidedActionVariables, + hasMustacheTokens, + templateActionVariable, + updateActionConnector, +} from './application/lib'; + export type { ActionGroupWithCondition } from './application/sections'; export { AlertConditions, AlertConditionsGroup } from './application/sections'; @@ -57,6 +96,7 @@ export function plugin(context: PluginInitializerContext) { return new Plugin(context); } +export { useKibana } from './common'; export type { AggregationType, Comparator } from './common'; export { @@ -74,6 +114,8 @@ export { getTimeFieldOptions, GroupByExpression, COMPARATORS, + connectorDeprecatedMessage, + deprecatedMessage, } from './common'; export type { diff --git a/x-pack/plugins/triggers_actions_ui/public/mocks.ts b/x-pack/plugins/triggers_actions_ui/public/mocks.ts index b44ef00c5f425..02722bc0ee73b 100644 --- a/x-pack/plugins/triggers_actions_ui/public/mocks.ts +++ b/x-pack/plugins/triggers_actions_ui/public/mocks.ts @@ -5,14 +5,12 @@ * 2.0. */ -import type { ValidatedEmail } from '@kbn/actions-plugin/common'; import type { TriggersAndActionsUIPublicPluginStart } from './plugin'; import { getAddConnectorFlyoutLazy } from './common/get_add_connector_flyout'; import { getEditConnectorFlyoutLazy } from './common/get_edit_connector_flyout'; import { getAddAlertFlyoutLazy } from './common/get_add_alert_flyout'; import { getEditAlertFlyoutLazy } from './common/get_edit_alert_flyout'; -import { RegistrationServices } from './application/components/builtin_action_types'; import { TypeRegistry } from './application/type_registry'; import { ActionTypeModel, @@ -132,9 +130,3 @@ function createStartMock(): TriggersAndActionsUIPublicPluginStart { export const triggersActionsUiMock = { createStart: createStartMock, }; - -function validateEmailAddresses(addresses: string[]): ValidatedEmail[] { - return addresses.map((address) => ({ address, valid: true })); -} - -export const registrationServicesMock: RegistrationServices = { validateEmailAddresses }; diff --git a/x-pack/plugins/triggers_actions_ui/public/plugin.ts b/x-pack/plugins/triggers_actions_ui/public/plugin.ts index 5cc4dbb0ece86..10c5e5637f159 100644 --- a/x-pack/plugins/triggers_actions_ui/public/plugin.ts +++ b/x-pack/plugins/triggers_actions_ui/public/plugin.ts @@ -23,7 +23,6 @@ import type { DataViewEditorStart } from '@kbn/data-view-editor-plugin/public'; import { Storage } from '@kbn/kibana-utils-plugin/public'; import type { SpacesPluginStart } from '@kbn/spaces-plugin/public'; import type { UnifiedSearchPublicPluginStart } from '@kbn/unified-search-plugin/public'; -import { registerBuiltInActionTypes } from './application/components/builtin_action_types'; import { TypeRegistry } from './application/type_registry'; import { getAddConnectorFlyoutLazy } from './common/get_add_connector_flyout'; @@ -248,13 +247,6 @@ export class Plugin }, }); - registerBuiltInActionTypes({ - actionTypeRegistry: this.actionTypeRegistry, - services: { - validateEmailAddresses: plugins.actions.validateEmailAddresses, - }, - }); - if (this.experimentalFeatures.internalAlertsTable) { registerAlertsTableConfiguration({ alertsTableConfigurationRegistry: this.alertsTableConfigurationRegistry, diff --git a/x-pack/plugins/triggers_actions_ui/tsconfig.json b/x-pack/plugins/triggers_actions_ui/tsconfig.json index 991cbc5b01216..8618be6c9c285 100644 --- a/x-pack/plugins/triggers_actions_ui/tsconfig.json +++ b/x-pack/plugins/triggers_actions_ui/tsconfig.json @@ -16,7 +16,6 @@ "references": [ { "path": "../../../src/core/tsconfig.json" }, { "path": "../alerting/tsconfig.json" }, - { "path": "../stack_connectors/tsconfig.json" }, { "path": "../features/tsconfig.json" }, { "path": "../rule_registry/tsconfig.json" }, { "path": "../../../src/plugins/data/tsconfig.json" }, diff --git a/yarn.lock b/yarn.lock index 0752e8a1611c4..f809bc0cac463 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8158,10 +8158,10 @@ "@types/node" "*" form-data "^2.3.3" -"@types/node-forge@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.0.4.tgz#82df44938848e111463080286876e4cbe2b297a0" - integrity sha512-UpX8LTRrarEZPQvQqF5/6KQAqZolOVckH7txWdlsWIJrhBFFtwEUTcqeDouhrJl6t0F7Wg5cyUOAqqF8a6hheg== +"@types/node-forge@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.0.tgz#c655e951e0fb5c4b53c9f4746c2128d4f93002fd" + integrity sha512-yUsIEHG3d81E2c+akGjZAMdVcjbfqMzpMjvpebnTO7pEGfqxCtBzpRV52kR1RETtwJ9fHkLdEjtaM+uMKWpwFA== dependencies: "@types/node" "*"