[Cases] Version metrics API types (#162817)

## Summary

This PR versions the `metrics` domain object and its corresponding APIs

### Checklist

- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios

### For maintainers

- [x] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
This commit is contained in:
Antonio 2023-08-03 10:55:30 +02:00 committed by GitHub
parent cb31a10822
commit 3b083b47a2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
65 changed files with 117 additions and 107 deletions

View file

@ -8,4 +8,3 @@
export * from './helpers';
export * from './runtime_types';
export * from './saved_object';
export * from './metrics';

View file

@ -58,4 +58,5 @@ export { getCasesFromAlertsUrl, getCaseFindUserActionsUrl, throwErrors } from '.
export { StatusAll } from './ui/types';
export { createUICapabilities } from './utils/capabilities';
export { getApiTags } from './utils/api_tags';
export { CaseMetricsFeature } from './api/metrics/case';
export { CaseMetricsFeature } from './types/api';
export type { SingleCaseMetricsResponse, CasesMetricsResponse } from './types/api';

View file

@ -15,6 +15,7 @@ export * from './stats/latest';
export * from './user/latest';
export * from './connector/latest';
export * from './attachment/latest';
export * from './metrics/latest';
// V1
export * as configureApiV1 from './configure/v1';
@ -26,3 +27,4 @@ export * as externalServiceApiV1 from './external_service/v1';
export * as userApiV1 from './user/v1';
export * as connectorApiV1 from './connector/v1';
export * as attachmentApiV1 from './attachment/v1';
export * as metricsApiV1 from './metrics/v1';

View file

@ -5,4 +5,4 @@
* 2.0.
*/
export * from './case';
export * from './v1';

View file

@ -12,7 +12,7 @@ import {
SingleCaseMetricsResponseRt,
CasesMetricsResponseRt,
CaseMetricsFeature,
} from './case';
} from './v1';
describe('Metrics case', () => {
describe('SingleCaseMetricsRequestRt', () => {

View file

@ -35,8 +35,10 @@ import type {
GetCaseUsersResponse,
UserActionFindRequestTypes,
UserActionFindResponse,
CaseMetricsFeature,
CasesMetricsResponse,
SingleCaseMetricsResponse,
} from '../types/api';
import type { CaseMetricsFeature, CasesMetricsResponse, SingleCaseMetricsResponse } from '../api';
type DeepRequired<T> = { [K in keyof T]: DeepRequired<T[K]> } & Required<T>;

View file

@ -5,11 +5,10 @@
* 2.0.
*/
import type { CasesMetricsRequest } from '../../../common/api';
import type { HTTPService } from '..';
import { casesMetrics, casesStatus } from '../../containers/mock';
import type { CasesMetrics, CasesStatus } from '../../containers/types';
import type { CasesFindRequest } from '../../../common/types/api';
import type { CasesFindRequest, CasesMetricsRequest } from '../../../common/types/api';
export const getCasesStatus = async ({
http,

View file

@ -13,16 +13,16 @@ import type {
CasesFindResponse,
CasesStatusResponse,
CasesBulkGetResponse,
CasesMetricsResponse,
} from '../../common/types/api';
import {
CasesFindResponseRt,
CasesStatusResponseRt,
CasesBulkGetResponseRt,
CasesMetricsResponseRt,
} from '../../common/types/api';
import { createToasterPlainError } from '../containers/utils';
import { throwErrors } from '../../common';
import type { CasesMetricsResponse } from '../../common/api';
import { CasesMetricsResponseRt } from '../../common/api';
export const decodeCasesFindResponse = (respCases?: CasesFindResponse) =>
pipe(CasesFindResponseRt.decode(respCases), fold(throwErrors(createToasterPlainError), identity));

View file

@ -5,7 +5,7 @@
* 2.0.
*/
import { CaseMetricsFeature } from '../../common/api/metrics/case';
import { CaseMetricsFeature } from '../../common/types/api';
import { httpServiceMock } from '@kbn/core/public/mocks';
import { bulkGetCases, getCases, getCasesMetrics } from '.';
import { allCases, allCasesSnake, casesSnake } from '../containers/mock';

View file

@ -13,6 +13,8 @@ import type {
CasesStatusResponse,
CasesBulkGetRequest,
CasesBulkGetResponse,
CasesMetricsRequest,
CasesMetricsResponse,
} from '../../common/types/api';
import type { CasesStatus, CasesMetrics, CasesFindResponseUI } from '../../common/ui';
import {
@ -21,7 +23,6 @@ import {
CASE_STATUS_URL,
INTERNAL_BULK_GET_CASES_URL,
} from '../../common/constants';
import type { CasesMetricsRequest, CasesMetricsResponse } from '../../common/api';
import { convertAllCasesToCamel, convertToCamelCase } from './utils';
import {
decodeCasesBulkGetResponse,

View file

@ -5,7 +5,7 @@
* 2.0.
*/
import { CaseMetricsFeature } from '../../../common/api/metrics/case';
import { CaseMetricsFeature } from '../../../common/types/api';
import { httpServiceMock } from '@kbn/core/public/mocks';
import { createClientAPI } from '.';
import { allCases, allCasesSnake, casesSnake } from '../../containers/mock';

View file

@ -11,8 +11,8 @@ import type {
GetRelatedCasesByAlertResponse,
CasesFindRequest,
CasesStatusRequest,
CasesMetricsRequest,
} from '../../../common/types/api';
import type { CasesMetricsRequest } from '../../../common/api';
import { getCasesFromAlertsUrl } from '../../../common/api';
import { bulkGetCases, getCases, getCasesMetrics, getCasesStatus } from '../../api';
import type { CasesFindResponseUI, CasesStatus, CasesMetrics } from '../../../common/ui';

View file

@ -14,7 +14,7 @@ import { useCasesFeatures } from './use_cases_features';
import { TestProviders } from './mock/test_providers';
import type { LicenseType } from '@kbn/licensing-plugin/common/types';
import { LICENSE_TYPE } from '@kbn/licensing-plugin/common/types';
import { CaseMetricsFeature } from '../../common/api/metrics/case';
import { CaseMetricsFeature } from '../../common/types/api';
describe('useCasesFeatures', () => {
// isAlertsEnabled, isSyncAlertsEnabled, alerts

View file

@ -22,7 +22,7 @@ import {
import { useGetCaseConnectors } from '../../containers/use_get_case_connectors';
import { useRefreshCaseViewPage } from '../case_view/use_on_refresh_case_view_page';
import { getCaseConnectorsMockResponse } from '../../common/mock/connectors';
import { CaseMetricsFeature } from '../../../common/api/metrics/case';
import { CaseMetricsFeature } from '../../../common/types/api';
jest.mock('../../containers/use_get_case_connectors');
jest.mock('../case_view/use_on_refresh_case_view_page');

View file

@ -18,7 +18,7 @@ import {
} from '@elastic/eui';
import type { CaseStatuses } from '../../../common/types/domain';
import type { CaseUI } from '../../../common/ui/types';
import { CaseMetricsFeature } from '../../../common/api';
import { CaseMetricsFeature } from '../../../common/types/api';
import * as i18n from '../case_view/translations';
import { Actions } from './actions';
import { StatusContextMenu } from './status_context_menu';

View file

@ -41,7 +41,7 @@ import { useInfiniteFindCaseUserActions } from '../../containers/use_infinite_fi
import { useGetCaseUserActionsStats } from '../../containers/use_get_case_user_actions_stats';
import { createQueryWithMarkup } from '../../common/test_utils';
import { useCasesFeatures } from '../../common/use_cases_features';
import { CaseMetricsFeature } from '../../../common/api/metrics/case';
import { CaseMetricsFeature } from '../../../common/types/api';
jest.mock('../../containers/use_get_action_license');
jest.mock('../../containers/use_update_case');

View file

@ -37,7 +37,7 @@ import { useInfiniteFindCaseUserActions } from '../../../containers/use_infinite
import { useOnUpdateField } from '../use_on_update_field';
import { useCasesFeatures } from '../../../common/use_cases_features';
import { ConnectorTypes, UserActionTypes } from '../../../../common/types/domain';
import { CaseMetricsFeature } from '../../../../common/api/metrics/case';
import { CaseMetricsFeature } from '../../../../common/types/api';
jest.mock('../../../containers/use_infinite_find_case_user_actions');
jest.mock('../../../containers/use_find_case_user_actions');

View file

@ -17,7 +17,7 @@ import type { SingleCaseMetrics, SingleCaseMetricsFeature } from '../../../../co
import { TestProviders } from '../../../common/mock';
import { useGetCaseMetrics } from '../../../containers/use_get_case_metrics';
import { useCasesFeatures } from '../../../common/use_cases_features';
import { CaseMetricsFeature } from '../../../../common/api/metrics/case';
import { CaseMetricsFeature } from '../../../../common/types/api';
jest.mock('../../../containers/use_get_case_metrics');
jest.mock('../../../common/use_cases_features');

View file

@ -9,7 +9,7 @@ import React, { useMemo } from 'react';
import prettyMilliseconds from 'pretty-ms';
import { EuiFlexGrid, EuiFlexGroup, EuiFlexItem, EuiIconTip, EuiSpacer } from '@elastic/eui';
import { euiStyled } from '@kbn/kibana-react-plugin/common';
import { CaseMetricsFeature } from '../../../../common/api/metrics/case';
import { CaseMetricsFeature } from '../../../../common/types/api';
import type { SingleCaseMetrics, SingleCaseMetricsFeature } from '../../../../common/ui';
import {
CASE_CREATED,

View file

@ -8,7 +8,7 @@
import React, { useMemo } from 'react';
import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
import { euiStyled } from '@kbn/kibana-react-plugin/common';
import { CaseMetricsFeature } from '../../../../common/api/metrics/case';
import { CaseMetricsFeature } from '../../../../common/types/api';
import type { SingleCaseMetrics, SingleCaseMetricsFeature } from '../../../../common/ui';
import {
ASSOCIATED_HOSTS_METRIC,

View file

@ -39,17 +39,17 @@ import type {
CaseUserActionsStats,
} from '../../../common/ui/types';
import { SeverityAll } from '../../../common/ui/types';
import type { SingleCaseMetricsResponse } from '../../../common/api';
import type {
SingleCaseMetricsResponse,
CasePostRequest,
CasePatchRequest,
AttachmentRequest,
} from '../../../common/types/api';
import { CaseStatuses } from '../../../common/types/domain';
import type { ValidFeatureId } from '@kbn/rule-data-utils';
import type { UserProfile } from '@kbn/security-plugin/common';
import { userProfiles } from '../user_profiles/api.mock';
import { getCaseConnectorsMockResponse } from '../../common/mock/connectors';
import type {
CasePostRequest,
CasePatchRequest,
AttachmentRequest,
} from '../../../common/types/api';
export const getCase = async (
caseId: string,

View file

@ -20,6 +20,7 @@ import type {
CaseUserActionStatsResponse,
GetCaseConnectorsResponse,
UserActionFindResponse,
SingleCaseMetricsResponse,
} from '../../common/types/api';
import type {
CaseConnectors,
@ -34,7 +35,6 @@ import type {
CasesUI,
} from '../../common/ui/types';
import { SeverityAll, SortFieldCase, StatusAll } from '../../common/ui/types';
import type { SingleCaseMetricsResponse } from '../../common/api';
import {
getCaseCommentsUrl,
getCasesDeleteFileAttachmentsUrl,

View file

@ -43,7 +43,7 @@ import type {
CasesUI,
AttachmentUI,
} from '../../common/ui/types';
import { CaseMetricsFeature } from '../../common/api';
import { CaseMetricsFeature } from '../../common/types/api';
import { SECURITY_SOLUTION_OWNER } from '../../common/constants';
import type { SnakeToCamelCase } from '../../common/types';
import { covertToSnakeCase } from './utils';

View file

@ -13,7 +13,7 @@ import { basicCase } from './mock';
import * as api from './api';
import { TestProviders } from '../common/mock';
import { useToasts } from '../common/lib/kibana';
import { CaseMetricsFeature } from '../../common/api/metrics/case';
import { CaseMetricsFeature } from '../../common/types/api';
jest.mock('./api');
jest.mock('../common/lib/kibana');

View file

@ -12,7 +12,7 @@ import { createAppMockRenderer } from '../common/mock';
import { useGetCasesMetrics } from './use_get_cases_metrics';
import { SECURITY_SOLUTION_OWNER } from '../../common/constants';
import { useToasts } from '../common/lib/kibana';
import { CaseMetricsFeature } from '../../common/api/metrics/case';
import { CaseMetricsFeature } from '../../common/types/api';
jest.mock('../api');
jest.mock('../common/lib/kibana');

View file

@ -6,7 +6,7 @@
*/
import { useQuery } from '@tanstack/react-query';
import { CaseMetricsFeature } from '../../common/api/metrics/case';
import { CaseMetricsFeature } from '../../common/types/api';
import { useCasesContext } from '../components/cases_context/use_cases_context';
import * as i18n from './translations';
import { useHttp } from '../common/lib/kibana';

View file

@ -23,8 +23,13 @@ import type {
CasePatchRequest,
CaseResolveResponse,
CaseUserActionStatsResponse,
SingleCaseMetricsResponse,
} from '../../common/types/api';
import {
CaseResolveResponseRt,
CaseUserActionStatsResponseRt,
SingleCaseMetricsResponseRt,
} from '../../common/types/api';
import { CaseResolveResponseRt, CaseUserActionStatsResponseRt } from '../../common/types/api';
import type {
Case,
Cases,
@ -34,8 +39,7 @@ import type {
UserActions,
} from '../../common/types/domain';
import { NO_ASSIGNEES_FILTERING_KEYWORD } from '../../common/constants';
import type { SingleCaseMetricsResponse } from '../../common/api';
import { throwErrors, SingleCaseMetricsResponseRt } from '../../common/api';
import { throwErrors } from '../../common/api';
import type { CaseUI, FilterOptions, UpdateByKey } from './types';
import * as i18n from './translations';

View file

@ -27,7 +27,6 @@ import type { SavedObjectsManagementPluginStart } from '@kbn/saved-objects-manag
import type { UiActionsStart } from '@kbn/ui-actions-plugin/public';
import type { ServerlessPluginSetup, ServerlessPluginStart } from '@kbn/serverless/public';
import type { CasesMetricsRequest } from '../common/api';
import type { UseCasesAddToExistingCaseModal } from './components/all_cases/selector_modal/use_cases_add_to_existing_case_modal';
import type { UseCasesAddToNewCaseFlyout } from './components/create/flyout/use_cases_add_to_new_case_flyout';
import type { canUseCases } from './client/helpers/can_use_cases';
@ -49,6 +48,7 @@ import type {
CasesStatusRequest,
CasesBulkGetRequest,
CasesBulkGetResponse,
CasesMetricsRequest,
} from '../common/types/api';
import type {
AlertAttachmentPayload,

View file

@ -5,7 +5,7 @@
* 2.0.
*/
import { CaseMetricsFeature } from '../../../../common/api';
import { CaseMetricsFeature } from '../../../../common/types/api';
import { createCasesClientMock } from '../../mocks';
import type { CasesClientArgs } from '../../types';
import { loggingSystemMock } from '@kbn/core/server/mocks';

View file

@ -6,8 +6,8 @@
*/
import { merge } from 'lodash';
import type { SingleCaseMetricsResponse } from '../../../../common/api';
import { CaseMetricsFeature } from '../../../../common/api';
import type { SingleCaseMetricsResponse } from '../../../../common/types/api';
import { CaseMetricsFeature } from '../../../../common/types/api';
import { Operations } from '../../../authorization';
import { createCaseError } from '../../../common/error';
import { SingleCaseAggregationHandler } from '../single_case_aggregation_handler';

View file

@ -6,7 +6,7 @@
*/
import { IsolateHostActionType } from '../../../../../common/types/domain';
import type { SingleCaseMetricsResponse } from '../../../../../common/api';
import type { SingleCaseMetricsResponse } from '../../../../../common/types/api';
import { CASE_COMMENT_SAVED_OBJECT } from '../../../../../common/constants';
import type { AggregationBuilder, AggregationResponse } from '../../types';

View file

@ -6,7 +6,7 @@
*/
import { merge } from 'lodash';
import type { CaseMetricsFeature } from '../../../common/api';
import type { CaseMetricsFeature } from '../../../common/types/api';
import { BaseHandler } from './base_handler';
import type { AggregationBuilder, AggregationResponse, BaseHandlerCommonOptions } from './types';

View file

@ -8,7 +8,7 @@
import { get } from 'lodash';
import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
import type { SingleCaseMetricsResponse } from '../../../../../common/api';
import type { SingleCaseMetricsResponse } from '../../../../../common/types/api';
import type { AggregationBuilder, AggregationResponse } from '../../types';
type HostsAggregate = HostsAggregateResponse | undefined;

View file

@ -5,7 +5,7 @@
* 2.0.
*/
import type { SingleCaseMetricsResponse } from '../../../../../common/api';
import type { SingleCaseMetricsResponse } from '../../../../../common/types/api';
import type { AggregationBuilder, AggregationResponse } from '../../types';
export class AlertUsers implements AggregationBuilder<SingleCaseMetricsResponse> {

View file

@ -5,8 +5,8 @@
* 2.0.
*/
import type { SingleCaseMetricsResponse } from '../../../../common/api';
import { CaseMetricsFeature } from '../../../../common/api';
import type { SingleCaseMetricsResponse } from '../../../../common/types/api';
import { CaseMetricsFeature } from '../../../../common/types/api';
import { Operations } from '../../../authorization';
import { createCaseError } from '../../../common/error';
import { SingleCaseBaseHandler } from '../single_case_base_handler';

View file

@ -13,7 +13,7 @@ import { loggingSystemMock } from '@kbn/core/server/mocks';
import { AlertDetails } from './details';
import { mockAlertsService } from '../test_utils/alerts';
import type { SingleCaseBaseHandlerCommonOptions } from '../types';
import { CaseMetricsFeature } from '../../../../common/api/metrics/case';
import { CaseMetricsFeature } from '../../../../common/types/api';
describe('AlertDetails', () => {
let client: CasesClientMock;

View file

@ -5,8 +5,8 @@
* 2.0.
*/
import type { SingleCaseMetricsResponse } from '../../../../common/api';
import { CaseMetricsFeature } from '../../../../common/api';
import type { SingleCaseMetricsResponse } from '../../../../common/types/api';
import { CaseMetricsFeature } from '../../../../common/types/api';
import { createCaseError } from '../../../common/error';
import { SingleCaseAggregationHandler } from '../single_case_aggregation_handler';

View file

@ -6,7 +6,7 @@
*/
import { CASE_SAVED_OBJECT } from '../../../../../common/constants';
import type { CasesMetricsResponse } from '../../../../../common/api';
import type { CasesMetricsResponse } from '../../../../../common/types/api';
import type { AggregationBuilder, AggregationResponse } from '../../types';
export class AverageDuration implements AggregationBuilder<CasesMetricsResponse> {

View file

@ -6,7 +6,7 @@
*/
import type { Case } from '../../../../common/types/domain';
import { CaseMetricsFeature } from '../../../../common/api';
import { CaseMetricsFeature } from '../../../../common/types/api';
import { createCasesClientMock } from '../../mocks';
import type { CasesClientArgs } from '../../types';
import { loggingSystemMock } from '@kbn/core/server/mocks';

View file

@ -5,7 +5,7 @@
* 2.0.
*/
import type { CasesMetricsResponse } from '../../../../common/api';
import type { CasesMetricsResponse } from '../../../../common/types/api';
import { Operations } from '../../../authorization';
import { createCaseError } from '../../../common/error';
import { constructQueryOptions } from '../../utils';

View file

@ -5,7 +5,7 @@
* 2.0.
*/
import type { CasesMetricsResponse } from '../../../common/api';
import type { CasesMetricsResponse } from '../../../common/types/api';
import { AggregationHandler } from './aggregation_handler';
import type { AggregationBuilder, AllCasesBaseHandlerCommonOptions } from './types';

View file

@ -5,7 +5,7 @@
* 2.0.
*/
import type { CaseMetricsFeature, CasesMetricsResponse } from '../../../common/api';
import type { CaseMetricsFeature, CasesMetricsResponse } from '../../../common/types/api';
import { BaseHandler } from './base_handler';
import type { AllCasesBaseHandlerCommonOptions } from './types';

View file

@ -5,7 +5,7 @@
* 2.0.
*/
import type { CasesMetricsFeatureField } from '../../../common/api/metrics/case';
import type { CasesMetricsFeatureField } from '../../../common/types/api';
import type { BaseHandlerCommonOptions, MetricsHandler } from './types';
export abstract class BaseHandler<R> implements MetricsHandler<R> {

View file

@ -5,12 +5,13 @@
* 2.0.
*/
import type { CasesStatusRequest, CasesStatusResponse } from '../../../common/types/api';
import type {
CasesStatusRequest,
CasesStatusResponse,
SingleCaseMetricsResponse,
CasesMetricsRequest,
CasesMetricsResponse,
} from '../../../common/api';
} from '../../../common/types/api';
import type { CasesClient } from '../client';
import type { CasesClientArgs } from '../types';

View file

@ -5,8 +5,8 @@
* 2.0.
*/
import type { SingleCaseMetricsResponse } from '../../../common/api';
import { CaseMetricsFeature } from '../../../common/api';
import type { SingleCaseMetricsResponse } from '../../../common/types/api';
import { CaseMetricsFeature } from '../../../common/types/api';
import { Operations } from '../../authorization';
import { createCaseError } from '../../common/error';
import { SingleCaseBaseHandler } from './single_case_base_handler';

View file

@ -8,7 +8,7 @@
import { loggingSystemMock, savedObjectsClientMock } from '@kbn/core/server/mocks';
import { getCaseMetrics } from './get_case_metrics';
import { CaseMetricsFeature } from '../../../common/api';
import { CaseMetricsFeature } from '../../../common/types/api';
import type { CasesClientMock } from '../mocks';
import { createCasesClientMock } from '../mocks';
import type { CasesClientArgs } from '../types';

View file

@ -6,12 +6,9 @@
*/
import { merge } from 'lodash';
import type { SingleCaseMetricsResponse } from '../../../common/api';
import {
SingleCaseMetricsResponseRt,
SingleCaseMetricsRequestRt,
decodeWithExcessOrThrow,
} from '../../../common/api';
import type { SingleCaseMetricsResponse } from '../../../common/types/api';
import { SingleCaseMetricsResponseRt, SingleCaseMetricsRequestRt } from '../../../common/types/api';
import { decodeWithExcessOrThrow } from '../../../common/api';
import { Operations } from '../../authorization';
import { createCaseError } from '../../common/error';
import type { CasesClient } from '../client';

View file

@ -5,7 +5,7 @@
* 2.0.
*/
import { CaseMetricsFeature } from '../../../common/api';
import { CaseMetricsFeature } from '../../../common/types/api';
import type { CasesClientMock } from '../mocks';
import { getCasesMetrics } from './get_cases_metrics';
import { createMockClientArgs, createMockClient } from './test_utils/client';

View file

@ -7,12 +7,9 @@
import { merge } from 'lodash';
import type { CasesMetricsRequest, CasesMetricsResponse } from '../../../common/api';
import {
CasesMetricsRequestRt,
CasesMetricsResponseRt,
decodeWithExcessOrThrow,
} from '../../../common/api';
import type { CasesMetricsRequest, CasesMetricsResponse } from '../../../common/types/api';
import { decodeWithExcessOrThrow } from '../../../common/api';
import { CasesMetricsRequestRt, CasesMetricsResponseRt } from '../../../common/types/api';
import { createCaseError } from '../../common/error';
import type { CasesClient } from '../client';
import type { CasesClientArgs } from '../types';

View file

@ -7,10 +7,13 @@
import type { SavedObject } from '@kbn/core/server';
import type { StatusUserAction, UserActionAttributes } from '../../../common/types/domain';
import type { UserActionWithResponse } from '../../../common/types/api';
import type {
UserActionWithResponse,
SingleCaseMetricsResponse,
StatusInfo,
} from '../../../common/types/api';
import { StatusUserActionRt, CaseStatuses } from '../../../common/types/domain';
import type { SingleCaseMetricsResponse, StatusInfo } from '../../../common/api';
import { CaseMetricsFeature } from '../../../common/api';
import { CaseMetricsFeature } from '../../../common/types/api';
import { Operations } from '../../authorization';
import { createCaseError } from '../../common/error';
import { SingleCaseBaseHandler } from './single_case_base_handler';

View file

@ -5,7 +5,7 @@
* 2.0.
*/
import type { SingleCaseMetricsResponse } from '../../../common/api';
import type { SingleCaseMetricsResponse } from '../../../common/types/api';
import { AggregationHandler } from './aggregation_handler';
import type { AggregationBuilder, SingleCaseBaseHandlerCommonOptions } from './types';

View file

@ -5,7 +5,7 @@
* 2.0.
*/
import type { CaseMetricsFeature, SingleCaseMetricsResponse } from '../../../common/api';
import type { CaseMetricsFeature, SingleCaseMetricsResponse } from '../../../common/types/api';
import { BaseHandler } from './base_handler';
import type { SingleCaseBaseHandlerCommonOptions } from './types';

View file

@ -9,7 +9,7 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
import type {
CasesMetricsFeatureField,
SingleCaseMetricsFeatureField,
} from '../../../common/api/metrics/case';
} from '../../../common/types/api';
import type { CasesClient } from '../client';
import type { CasesClientArgs } from '../types';

View file

@ -5,8 +5,8 @@
* 2.0.
*/
import type { CasesMetricsFeatureField } from '../../../common/api/metrics/case';
import { CaseMetricsFeature } from '../../../common/api/metrics/case';
import type { CasesMetricsFeatureField } from '../../../common/types/api';
import { CaseMetricsFeature } from '../../../common/types/api';
import { createMockClient, createMockClientArgs } from './test_utils/client';
import { buildHandlers } from './utils';

View file

@ -6,7 +6,7 @@
*/
import Boom from '@hapi/boom';
import type { CasesMetricsRequest, SingleCaseMetricsRequest } from '../../../common/api';
import type { CasesMetricsRequest, SingleCaseMetricsRequest } from '../../../common/types/api';
import type { CasesClient } from '../client';
import type { CasesClientArgs } from '../types';
import { AlertsCount } from './alerts/count';

View file

@ -6,7 +6,8 @@
*/
import { schema } from '@kbn/config-schema';
import type { SingleCaseMetricsFeatureField } from '../../../../common/api';
import type { metricsApiV1 } from '../../../../common/types/api';
import { INTERNAL_CASE_METRICS_DETAILS_URL } from '../../../../common/constants';
import { createCaseError } from '../../../common/error';
@ -30,15 +31,18 @@ export const getCaseMetricRoute = createCasesRoute({
try {
const caseContext = await context.cases;
const client = await caseContext.getCasesClient();
const { features } = request.query;
const { features } = request.query as metricsApiV1.SingleCaseMetricsRequest;
return response.ok({
body: await client.metrics.getCaseMetrics({
const responseBody: metricsApiV1.SingleCaseMetricsResponse =
await client.metrics.getCaseMetrics({
caseId: request.params.case_id,
features: Array.isArray(features)
? (features as SingleCaseMetricsFeatureField[])
: [features as SingleCaseMetricsFeatureField],
}),
? (features as metricsApiV1.SingleCaseMetricsFeatureField[])
: [features as metricsApiV1.SingleCaseMetricsFeatureField],
});
return response.ok({
body: responseBody,
});
} catch (error) {
throw createCaseError({

View file

@ -7,8 +7,9 @@
import { schema } from '@kbn/config-schema';
import type { metricsApiV1 } from '../../../../common/types/api';
import { INTERNAL_CASE_METRICS_URL } from '../../../../common/constants';
import type { CasesMetricsFeatureField } from '../../../../common/api/metrics/case';
import { createCaseError } from '../../../common/error';
import { createCasesRoute } from '../create_cases_route';
@ -30,15 +31,17 @@ export const getCasesMetricRoute = createCasesRoute({
try {
const caseContext = await context.cases;
const client = await caseContext.getCasesClient();
const { features } = request.query;
const { features } = request.query as metricsApiV1.CasesMetricsRequest;
const responseBody: metricsApiV1.CasesMetricsResponse = await client.metrics.getCasesMetrics({
...request.query,
features: Array.isArray(features)
? (features as metricsApiV1.CasesMetricsFeatureField[])
: [features as metricsApiV1.CasesMetricsFeatureField],
});
return response.ok({
body: await client.metrics.getCasesMetrics({
...request.query,
features: Array.isArray(features)
? (features as CasesMetricsFeatureField[])
: [features as CasesMetricsFeatureField],
}),
body: responseBody,
});
} catch (error) {
throw createCaseError({

View file

@ -5,7 +5,7 @@
* 2.0.
*/
import { CaseMetricsFeature } from '@kbn/cases-plugin/common/api';
import { CaseMetricsFeature } from '@kbn/cases-plugin/common';
export const CASE_ACTIONS = '[data-test-subj="property-actions-ellipses"]';

View file

@ -27,11 +27,8 @@ import {
INTERNAL_CASE_METRICS_URL,
INTERNAL_GET_CASE_CATEGORIES_URL,
} from '@kbn/cases-plugin/common/constants';
import {
SingleCaseMetricsResponse,
CasesMetricsResponse,
CaseMetricsFeature,
} from '@kbn/cases-plugin/common/api';
import { CaseMetricsFeature } from '@kbn/cases-plugin/common';
import type { SingleCaseMetricsResponse, CasesMetricsResponse } from '@kbn/cases-plugin/common';
import { SignalHit } from '@kbn/security-solution-plugin/server/lib/detection_engine/rule_types/types';
import { ActionResult } from '@kbn/actions-plugin/server/types';
import { CasePersistedAttributes } from '@kbn/cases-plugin/server/common/types/case';

View file

@ -5,8 +5,8 @@
* 2.0.
*/
import { CaseMetricsFeature } from '@kbn/cases-plugin/common/api/metrics/case';
import expect from '@kbn/expect';
import { CaseMetricsFeature } from '@kbn/cases-plugin/common';
import { FtrProviderContext } from '../../../../../common/ftr_provider_context';
import { createCase, deleteAllCaseItems, getCaseMetrics } from '../../../../../common/lib/api';

View file

@ -6,7 +6,7 @@
*/
import expect from '@kbn/expect';
import { CaseMetricsFeature } from '@kbn/cases-plugin/common/api/metrics/case';
import { CaseMetricsFeature } from '@kbn/cases-plugin/common';
import { getPostCaseRequest, postCommentActionsReq } from '../../../../../common/lib/mock';
import { FtrProviderContext } from '../../../../../common/ftr_provider_context';

View file

@ -6,7 +6,7 @@
*/
import expect from '@kbn/expect';
import { CaseMetricsFeature } from '@kbn/cases-plugin/common/api/metrics/case';
import { CaseMetricsFeature } from '@kbn/cases-plugin/common';
import { getPostCaseRequest, postCommentAlertReq } from '../../../../../common/lib/mock';
import { FtrProviderContext } from '../../../../../common/ftr_provider_context';

View file

@ -7,7 +7,7 @@
import expect from '@kbn/expect';
import { ConnectorTypes } from '@kbn/cases-plugin/common/types/domain';
import { CaseMetricsFeature } from '@kbn/cases-plugin/common/api/metrics/case';
import { CaseMetricsFeature } from '@kbn/cases-plugin/common';
import { getPostCaseRequest } from '../../../../../common/lib/mock';
import { ObjectRemover as ActionsRemover } from '../../../../../../alerting_api_integration/common/lib';

View file

@ -5,7 +5,7 @@
* 2.0.
*/
import { CaseMetricsFeature } from '@kbn/cases-plugin/common/api/metrics/case';
import { CaseMetricsFeature } from '@kbn/cases-plugin/common';
import expect from '@kbn/expect';
import { FtrProviderContext } from '../../../../common/ftr_provider_context';