diff --git a/x-pack/plugins/security_solution/public/common/components/import_data_modal/index.tsx b/x-pack/plugins/security_solution/public/common/components/import_data_modal/index.tsx index 038c116c9fc8c..65dcdf8a6f9cb 100644 --- a/x-pack/plugins/security_solution/public/common/components/import_data_modal/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/import_data_modal/index.tsx @@ -23,6 +23,8 @@ import React, { useCallback, useState } from 'react'; import { ImportDataResponse, ImportDataProps, + ImportRulesResponseError, + ImportResponseError, } from '../../../detections/containers/detection_engine/rules'; import { displayErrorToast, @@ -48,6 +50,12 @@ interface ImportDataModalProps { title: string; } +const isImportRulesResponseError = ( + error: ImportRulesResponseError | ImportResponseError +): error is ImportRulesResponseError => { + return (error as ImportRulesResponseError).rule_id !== undefined; +}; + /** * Modal component for importing Rules from a json file */ @@ -96,7 +104,11 @@ export const ImportDataModalComponent = ({ } if (importResponse.errors.length > 0) { const formattedErrors = importResponse.errors.map((e) => - failedDetailed(e.rule_id, e.error.status_code, e.error.message) + failedDetailed( + isImportRulesResponseError(e) ? e.rule_id : e.id, + e.error.status_code, + e.error.message + ) ); displayErrorToast(errorMessage, formattedErrors, dispatchToaster); } diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/types.ts b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/types.ts index 78d2e2a5b0c2f..a5bbc0465ccc1 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/types.ts +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/types.ts @@ -234,10 +234,18 @@ export interface ImportRulesResponseError { }; } +export interface ImportResponseError { + id: string; + error: { + status_code: number; + message: string; + }; +} + export interface ImportDataResponse { success: boolean; success_count: number; - errors: ImportRulesResponseError[]; + errors: Array; } export interface ExportDocumentsProps {