[Cases] Version configure domain object and API (#160605)

## Summary

This PR versions the `configure` domain object and its corresponding
APIs. Specifically:

- Initiate the folder structure for the other domain objects.

```
common
  types
    api
       configure
         latest.ts
         v1.ts
       index.ts
    domain
       configure
         latest.ts
         v1.ts
       index.ts
```

- Version the domain types of the `configure`
- Version the APIs of the `configure`

### Checklist

Delete any items that are not applicable to this PR.

- [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:
Christos Nasikas 2023-06-29 16:56:03 +03:00 committed by GitHub
parent 9f73f9479c
commit 1932c7936c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
27 changed files with 257 additions and 198 deletions

View file

@ -6,7 +6,6 @@
*/
export * from './case';
export * from './configure';
export * from './comment';
export * from './status';
export * from './user_actions';

View file

@ -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 * from './v1';

View file

@ -5,15 +5,13 @@
* 2.0.
*/
import { ConnectorTypes } from '../connectors';
import { ConnectorTypes } from '../../../api';
import {
ConfigurationAttributesRt,
CaseConfigureRequestParamsRt,
ConfigurationRt,
ConfigurationPatchRequestRt,
ConfigurationRequestRt,
GetConfigurationFindRequestRt,
} from './configure';
} from './v1';
describe('configure', () => {
const serviceNow = {
@ -23,13 +21,6 @@ describe('configure', () => {
fields: null,
};
const resilient = {
id: 'resilient-2',
name: 'Resilient',
type: ConnectorTypes.resilient,
fields: null,
};
describe('ConfigurationRequestRt', () => {
const defaultRequest = {
connector: serviceNow,
@ -82,100 +73,6 @@ describe('configure', () => {
});
});
describe('ConfigurationAttributesRt', () => {
const defaultRequest = {
connector: resilient,
closure_type: 'close-by-user',
owner: 'cases',
created_at: '2020-02-19T23:06:33.798Z',
created_by: {
full_name: 'Leslie Knope',
username: 'lknope',
email: 'leslie.knope@elastic.co',
},
updated_at: '2020-02-19T23:06:33.798Z',
updated_by: {
full_name: 'Leslie Knope',
username: 'lknope',
email: 'leslie.knope@elastic.co',
},
};
it('has expected attributes in request', () => {
const query = ConfigurationAttributesRt.decode(defaultRequest);
expect(query).toStrictEqual({
_tag: 'Right',
right: defaultRequest,
});
});
it('removes foo:bar attributes from request', () => {
const query = ConfigurationAttributesRt.decode({ ...defaultRequest, foo: 'bar' });
expect(query).toStrictEqual({
_tag: 'Right',
right: defaultRequest,
});
});
});
describe('ConfigurationRt', () => {
const defaultRequest = {
connector: serviceNow,
closure_type: 'close-by-user',
created_at: '2020-02-19T23:06:33.798Z',
created_by: {
full_name: 'Leslie Knope',
username: 'lknope',
email: 'leslie.knope@elastic.co',
},
updated_at: '2020-02-19T23:06:33.798Z',
updated_by: null,
mappings: [
{
source: 'description',
target: 'description',
action_type: 'overwrite',
},
],
owner: 'cases',
version: 'WzQ3LDFd',
id: 'case-id',
error: null,
};
it('has expected attributes in request', () => {
const query = ConfigurationRt.decode(defaultRequest);
expect(query).toStrictEqual({
_tag: 'Right',
right: defaultRequest,
});
});
it('removes foo:bar attributes from request', () => {
const query = ConfigurationRt.decode({ ...defaultRequest, foo: 'bar' });
expect(query).toStrictEqual({
_tag: 'Right',
right: defaultRequest,
});
});
it('removes foo:bar attributes from mappings', () => {
const query = ConfigurationRt.decode({
...defaultRequest,
mappings: [{ ...defaultRequest.mappings[0], foo: 'bar' }],
});
expect(query).toStrictEqual({
_tag: 'Right',
right: defaultRequest,
});
});
});
describe('GetConfigurationFindRequestRt', () => {
const defaultRequest = {
owner: ['cases'],

View file

@ -0,0 +1,38 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import * as rt from 'io-ts';
import type { Configurations, Configuration } from '../../domain/configure/v1';
import { ConfigurationBasicWithoutOwnerRt, CasesConfigureBasicRt } from '../../domain/configure/v1';
export const ConfigurationRequestRt = CasesConfigureBasicRt;
export const GetConfigurationFindRequestRt = rt.exact(
rt.partial({
/**
* The configuration plugin owner to filter the search by. If this is left empty the results will include all configurations
* that the user has permissions to access
*/
owner: rt.union([rt.array(rt.string), rt.string]),
})
);
export const CaseConfigureRequestParamsRt = rt.strict({
configuration_id: rt.string,
});
export const ConfigurationPatchRequestRt = rt.intersection([
rt.exact(rt.partial(ConfigurationBasicWithoutOwnerRt.type.props)),
rt.strict({ version: rt.string }),
]);
export type ConfigurationRequest = rt.TypeOf<typeof ConfigurationRequestRt>;
export type ConfigurationPatchRequest = rt.TypeOf<typeof ConfigurationPatchRequestRt>;
export type GetConfigurationFindRequest = rt.TypeOf<typeof GetConfigurationFindRequestRt>;
export type GetConfigureResponse = Configurations;
export type CreateConfigureResponse = Configuration;
export type UpdateConfigureResponse = Configuration;

View file

@ -0,0 +1,12 @@
/*
* 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.
*/
// Latest
export * from './configure/latest';
// V1
export * as configureApiV1 from './configure/v1';

View file

@ -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 * from './v1';

View file

@ -0,0 +1,119 @@
/*
* 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 { ConnectorTypes } from '../../../api';
import { ConfigurationAttributesRt, ConfigurationRt } from './v1';
describe('configure', () => {
const serviceNow = {
id: 'servicenow-1',
name: 'SN 1',
type: ConnectorTypes.serviceNowITSM,
fields: null,
};
const resilient = {
id: 'resilient-2',
name: 'Resilient',
type: ConnectorTypes.resilient,
fields: null,
};
describe('ConfigurationAttributesRt', () => {
const defaultRequest = {
connector: resilient,
closure_type: 'close-by-user',
owner: 'cases',
created_at: '2020-02-19T23:06:33.798Z',
created_by: {
full_name: 'Leslie Knope',
username: 'lknope',
email: 'leslie.knope@elastic.co',
},
updated_at: '2020-02-19T23:06:33.798Z',
updated_by: {
full_name: 'Leslie Knope',
username: 'lknope',
email: 'leslie.knope@elastic.co',
},
};
it('has expected attributes in request', () => {
const query = ConfigurationAttributesRt.decode(defaultRequest);
expect(query).toStrictEqual({
_tag: 'Right',
right: defaultRequest,
});
});
it('removes foo:bar attributes from request', () => {
const query = ConfigurationAttributesRt.decode({ ...defaultRequest, foo: 'bar' });
expect(query).toStrictEqual({
_tag: 'Right',
right: defaultRequest,
});
});
});
describe('ConfigurationRt', () => {
const defaultRequest = {
connector: serviceNow,
closure_type: 'close-by-user',
created_at: '2020-02-19T23:06:33.798Z',
created_by: {
full_name: 'Leslie Knope',
username: 'lknope',
email: 'leslie.knope@elastic.co',
},
updated_at: '2020-02-19T23:06:33.798Z',
updated_by: null,
mappings: [
{
source: 'description',
target: 'description',
action_type: 'overwrite',
},
],
owner: 'cases',
version: 'WzQ3LDFd',
id: 'case-id',
error: null,
};
it('has expected attributes in request', () => {
const query = ConfigurationRt.decode(defaultRequest);
expect(query).toStrictEqual({
_tag: 'Right',
right: defaultRequest,
});
});
it('removes foo:bar attributes from request', () => {
const query = ConfigurationRt.decode({ ...defaultRequest, foo: 'bar' });
expect(query).toStrictEqual({
_tag: 'Right',
right: defaultRequest,
});
});
it('removes foo:bar attributes from mappings', () => {
const query = ConfigurationRt.decode({
...defaultRequest,
mappings: [{ ...defaultRequest.mappings[0], foo: 'bar' }],
});
expect(query).toStrictEqual({
_tag: 'Right',
right: defaultRequest,
});
});
});
});

View file

@ -6,9 +6,7 @@
*/
import * as rt from 'io-ts';
import { CaseConnectorRt } from '../connectors/connector';
import { ConnectorMappingsRt } from '../connectors/mappings';
import { UserRt } from '../user';
import { CaseConnectorRt, UserRt, ConnectorMappingsRt } from '../../../api';
const ClosureTypeRt = rt.union([rt.literal('close-by-user'), rt.literal('close-by-pushing')]);
@ -23,7 +21,7 @@ export const ConfigurationBasicWithoutOwnerRt = rt.strict({
closure_type: ClosureTypeRt,
});
const CasesConfigureBasicRt = rt.intersection([
export const CasesConfigureBasicRt = rt.intersection([
ConfigurationBasicWithoutOwnerRt,
rt.strict({
/**
@ -33,12 +31,6 @@ const CasesConfigureBasicRt = rt.intersection([
}),
]);
export const ConfigurationRequestRt = CasesConfigureBasicRt;
export const ConfigurationPatchRequestRt = rt.intersection([
rt.exact(rt.partial(ConfigurationBasicWithoutOwnerRt.type.props)),
rt.strict({ version: rt.string }),
]);
export const ConfigurationActivityFieldsRt = rt.strict({
created_at: rt.string,
created_by: UserRt,
@ -62,27 +54,9 @@ export const ConfigurationRt = rt.intersection([
}),
]);
export const GetConfigurationFindRequestRt = rt.exact(
rt.partial({
/**
* The configuration plugin owner to filter the search by. If this is left empty the results will include all configurations
* that the user has permissions to access
*/
owner: rt.union([rt.array(rt.string), rt.string]),
})
);
export const CaseConfigureRequestParamsRt = rt.strict({
configuration_id: rt.string,
});
export const ConfigurationsRt = rt.array(ConfigurationRt);
export type ClosureType = rt.TypeOf<typeof ClosureTypeRt>;
export type ConfigurationRequest = rt.TypeOf<typeof ConfigurationRequestRt>;
export type ConfigurationPatchRequest = rt.TypeOf<typeof ConfigurationPatchRequestRt>;
export type ConfigurationAttributes = rt.TypeOf<typeof ConfigurationAttributesRt>;
export type Configuration = rt.TypeOf<typeof ConfigurationRt>;
export type Configurations = rt.TypeOf<typeof ConfigurationsRt>;
export type GetConfigurationFindRequest = rt.TypeOf<typeof GetConfigurationFindRequestRt>;

View file

@ -0,0 +1,12 @@
/*
* 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.
*/
// Latest
export * from './configure/latest';
// V1
export * as configureDomainV1 from './configure/v1';

View file

@ -5,17 +5,13 @@
* 2.0.
*/
import type {
ConfigurationPatchRequest,
ConfigurationRequest,
ActionConnector,
ActionTypeConnector,
} from '../../../../common/api';
import type { ActionConnector, ActionTypeConnector } from '../../../../common/api';
import type { ApiProps } from '../../types';
import type { CaseConfigure } from '../types';
import { caseConfigurationCamelCaseResponseMock } from '../mock';
import { actionTypesMock, connectorsMock } from '../../../common/mock/connectors';
import type { ConfigurationPatchRequest, ConfigurationRequest } from '../../../../common/types/api';
export const getSupportedActionConnectors = async ({
signal,

View file

@ -7,15 +7,10 @@
import { isEmpty } from 'lodash/fp';
import { CasesConnectorFeatureId } from '@kbn/actions-plugin/common';
import type { ConfigurationPatchRequest, ConfigurationRequest } from '../../../common/types/api';
import type { Configuration, Configurations } from '../../../common/types/domain';
import { getAllConnectorTypesUrl } from '../../../common/utils/connectors_api';
import type {
ActionConnector,
ActionTypeConnector,
ConfigurationPatchRequest,
ConfigurationRequest,
Configuration,
Configurations,
} from '../../../common/api';
import type { ActionConnector, ActionTypeConnector } from '../../../common/api';
import { getCaseConfigurationDetailsUrl } from '../../../common/api';
import { CASE_CONFIGURE_CONNECTORS_URL, CASE_CONFIGURE_URL } from '../../../common/constants';
import { KibanaServices } from '../../common/lib/kibana';

View file

@ -5,7 +5,8 @@
* 2.0.
*/
import type { Configuration, ConfigurationRequest } from '../../../common/api';
import type { ConfigurationRequest } from '../../../common/types/api';
import type { Configuration } from '../../../common/types/domain';
import { ConnectorTypes } from '../../../common/api';
import { SECURITY_SOLUTION_OWNER } from '../../../common/constants';
import type { CaseConfigure, CaseConnectorMapping } from './types';

View file

@ -5,6 +5,7 @@
* 2.0.
*/
import type { ClosureType, ConfigurationAttributes } from '../../../common/types/domain';
import type { CaseUser } from '../types';
import type {
ActionConnector,
@ -12,9 +13,7 @@ import type {
ActionType,
CaseConnector,
CaseField,
ClosureType,
ThirdPartyField,
ConfigurationAttributes,
} from '../../../common/api';
export type {

View file

@ -11,10 +11,10 @@ import { identity } from 'fp-ts/lib/function';
import { pipe } from 'fp-ts/lib/pipeable';
import type { ToastInputFields } from '@kbn/core/public';
import type { Configuration, Configurations } from '../../common/types/domain';
import { ConfigurationRt, ConfigurationsRt } from '../../common/types/domain';
import { NO_ASSIGNEES_FILTERING_KEYWORD } from '../../common/constants';
import type {
Configurations,
Configuration,
UserActions,
CasePatchRequest,
CaseResolveResponse,
@ -28,8 +28,6 @@ import {
CaseRt,
CasesRt,
throwErrors,
ConfigurationsRt,
ConfigurationRt,
UserActionsRt,
CommentType,
CaseResolveResponseRt,

View file

@ -12,11 +12,11 @@ import type { SavedObjectsFindResponse } from '@kbn/core/server';
import type { UserProfile } from '@kbn/security-plugin/common';
import type { SecurityPluginStart } from '@kbn/security-plugin/server';
import { asSavedObjectExecutionSource } from '@kbn/actions-plugin/server';
import type { ConfigurationAttributes } from '../../../common/types/domain';
import type {
ActionConnector,
Case,
ExternalServiceResponse,
ConfigurationAttributes,
CommentRequestAlertType,
CommentAttributes,
} from '../../../common/api';

View file

@ -14,24 +14,22 @@ import type { FindActionResult } from '@kbn/actions-plugin/server/types';
import type { ActionType } from '@kbn/actions-plugin/common';
import { CasesConnectorFeatureId } from '@kbn/actions-plugin/common';
import type {
Configurations,
Configuration,
ConfigurationAttributes,
Configurations,
} from '../../../common/types/domain';
import type {
ConfigurationPatchRequest,
ConfigurationRequest,
Configuration,
ConnectorMappings,
GetConfigurationFindRequest,
ConnectorMappingResponse,
} from '../../../common/api';
} from '../../../common/types/api';
import {
ConfigurationsRt,
ConfigurationPatchRequestRt,
GetConfigurationFindRequestRt,
ConfigurationRt,
FindActionConnectorResponseRt,
decodeWithExcessOrThrow,
ConfigurationRequestRt,
} from '../../../common/api';
GetConfigurationFindRequestRt,
} from '../../../common/types/api';
import type { ConnectorMappings, ConnectorMappingResponse } from '../../../common/api';
import { FindActionConnectorResponseRt, decodeWithExcessOrThrow } from '../../../common/api';
import { MAX_CONCURRENT_SEARCHES } from '../../../common/constants';
import { createCaseError } from '../../common/error';
import type { CasesClientInternal } from '../client_internal';
@ -44,6 +42,7 @@ import type { MappingsArgs, CreateMappingsArgs, UpdateMappingsArgs } from './typ
import { createMappings } from './create_mappings';
import { updateMappings } from './update_mappings';
import { decodeOrThrow } from '../../../common/api/runtime_types';
import { ConfigurationRt, ConfigurationsRt } from '../../../common/types/domain';
/**
* Defines the internal helper functions.
@ -63,7 +62,7 @@ export interface ConfigureSubClient {
/**
* Retrieves the external connector configuration for a particular case owner.
*/
get(params: GetConfigurationFindRequest): Promise<Configuration | {}>;
get(params: GetConfigurationFindRequest): Promise<Configurations>;
/**
* Retrieves the valid external connectors supported by the cases plugin.
*/

View file

@ -8,12 +8,12 @@
import * as rt from 'io-ts';
import type { SavedObject } from '@kbn/core/server';
import type { ConfigurationAttributes } from '../../../common/api';
import type { ConfigurationAttributes } from '../../../common/types/domain';
import {
ConfigurationActivityFieldsRt,
ConfigurationBasicWithoutOwnerRt,
ConfigurationAttributesRt,
} from '../../../common/api';
ConfigurationBasicWithoutOwnerRt,
} from '../../../common/types/domain';
import type { ConnectorPersisted } from './connectors';
import type { User } from './user';

View file

@ -6,9 +6,9 @@
*/
import { CASE_CONFIGURE_URL } from '../../../../common/constants';
import type { GetConfigurationFindRequest } from '../../../../common/api';
import { createCaseError } from '../../../common/error';
import { createCasesRoute } from '../create_cases_route';
import type { configureApiV1 } from '../../../../common/types/api';
export const getCaseConfigureRoute = createCasesRoute({
method: 'get',
@ -17,10 +17,12 @@ export const getCaseConfigureRoute = createCasesRoute({
try {
const caseContext = await context.cases;
const client = await caseContext.getCasesClient();
const options = request.query as GetConfigurationFindRequest;
const options = request.query as configureApiV1.GetConfigurationFindRequest;
const res: configureApiV1.GetConfigureResponse = await client.configure.get({ ...options });
return response.ok({
body: await client.configure.get({ ...options }),
body: res,
});
} catch (error) {
throw createCaseError({

View file

@ -5,11 +5,12 @@
* 2.0.
*/
import type { ConfigurationPatchRequest } from '../../../../common/api';
import { CaseConfigureRequestParamsRt, decodeWithExcessOrThrow } from '../../../../common/api';
import { CaseConfigureRequestParamsRt } from '../../../../common/types/api';
import { decodeWithExcessOrThrow } from '../../../../common/api';
import { CASE_CONFIGURE_DETAILS_URL } from '../../../../common/constants';
import { createCaseError } from '../../../common/error';
import { createCasesRoute } from '../create_cases_route';
import type { configureApiV1 } from '../../../../common/types/api';
export const patchCaseConfigureRoute = createCasesRoute({
method: 'patch',
@ -20,10 +21,14 @@ export const patchCaseConfigureRoute = createCasesRoute({
const caseContext = await context.cases;
const client = await caseContext.getCasesClient();
const configuration = request.body as ConfigurationPatchRequest;
const configuration = request.body as configureApiV1.ConfigurationPatchRequest;
const res: configureApiV1.UpdateConfigureResponse = await client.configure.update(
params.configuration_id,
configuration
);
return response.ok({
body: await client.configure.update(params.configuration_id, configuration),
body: res,
});
} catch (error) {
throw createCaseError({

View file

@ -5,10 +5,12 @@
* 2.0.
*/
import { ConfigurationRequestRt, decodeWithExcessOrThrow } from '../../../../common/api';
import { ConfigurationRequestRt } from '../../../../common/types/api';
import { decodeWithExcessOrThrow } from '../../../../common/api';
import { CASE_CONFIGURE_URL } from '../../../../common/constants';
import { createCaseError } from '../../../common/error';
import { createCasesRoute } from '../create_cases_route';
import type { configureApiV1 } from '../../../../common/types/api';
export const postCaseConfigureRoute = createCasesRoute({
method: 'post',
@ -19,9 +21,10 @@ export const postCaseConfigureRoute = createCasesRoute({
const caseContext = await context.cases;
const client = await caseContext.getCasesClient();
const res: configureApiV1.CreateConfigureResponse = await client.configure.create(query);
return response.ok({
body: await client.configure.create(query),
body: res,
});
} catch (error) {
throw createCaseError({

View file

@ -7,7 +7,6 @@
import type { SavedObjectSanitizedDoc, SavedObjectUnsanitizedDoc } from '@kbn/core/server';
import { ACTION_SAVED_OBJECT_TYPE } from '@kbn/actions-plugin/server';
import type { ConfigurationAttributes } from '../../../common/api';
import { ConnectorTypes } from '../../../common/api';
import { CASE_CONFIGURE_SAVED_OBJECT, SECURITY_SOLUTION_OWNER } from '../../../common/constants';
import { CONNECTOR_ID_REFERENCE_NAME } from '../../common/constants';
@ -16,6 +15,7 @@ import type { ESCaseConnectorWithId } from '../../services/test_utils';
import type { UnsanitizedConfigureConnector } from './configuration';
import { createConnectorAttributeMigration, configureConnectorIdMigration } from './configuration';
import type { ConfigurationPersistedAttributes } from '../../common/types/configure';
import type { ConfigurationAttributes } from '../../../common/types/domain';
// eslint-disable-next-line @typescript-eslint/naming-convention
const create_7_14_0_configSchema = (connector?: ESCaseConnectorWithId) => ({

View file

@ -5,11 +5,7 @@
* 2.0.
*/
import type {
CaseConnector,
ConfigurationAttributes,
ConfigurationPatchRequest,
} from '../../../common/api';
import type { CaseConnector } from '../../../common/api';
import { ConnectorTypes } from '../../../common/api';
import { CASE_CONFIGURE_SAVED_OBJECT, SECURITY_SOLUTION_OWNER } from '../../../common/constants';
import { savedObjectsClientMock } from '@kbn/core/server/mocks';
@ -30,6 +26,8 @@ import type { ESCaseConnectorWithId } from '../test_utils';
import { createESJiraConnector, createJiraConnector } from '../test_utils';
import type { ConfigurationPersistedAttributes } from '../../common/types/configure';
import { unset } from 'lodash';
import type { ConfigurationPatchRequest } from '../../../common/types/api';
import type { ConfigurationAttributes } from '../../../common/types/domain';
const basicConfigFields = {
closure_type: 'close-by-pushing' as const,

View file

@ -13,8 +13,8 @@ import type {
} from '@kbn/core/server';
import { ACTION_SAVED_OBJECT_TYPE } from '@kbn/actions-plugin/server';
import type { ConfigurationAttributes } from '../../../common/types/domain';
import { CONNECTOR_ID_REFERENCE_NAME } from '../../common/constants';
import type { ConfigurationAttributes } from '../../../common/api';
import { decodeOrThrow } from '../../../common/api';
import { CASE_CONFIGURE_SAVED_OBJECT } from '../../../common/constants';
import {

View file

@ -6,7 +6,7 @@
*/
import type { SavedObject, SavedObjectsClientContract } from '@kbn/core/server';
import type { ConfigurationAttributes } from '../../../common/api';
import type { ConfigurationAttributes } from '../../../common/types/domain';
import type { IndexRefresh } from '../types';
import type { SavedObjectFindOptionsKueryNode } from '../../common/types';

View file

@ -5,13 +5,10 @@
* 2.0.
*/
import {
CaseConnector,
ConfigurationRequest,
Configuration,
ConnectorTypes,
} from '@kbn/cases-plugin/common/api';
import { CaseConnector, ConnectorTypes } from '@kbn/cases-plugin/common/api';
import { CASE_CONFIGURE_URL } from '@kbn/cases-plugin/common/constants';
import { ConfigurationRequest } from '@kbn/cases-plugin/common/types/api';
import { Configuration } from '@kbn/cases-plugin/common/types/domain';
import type SuperTest from 'supertest';
import { User } from '../authentication/types';

View file

@ -11,7 +11,6 @@ import http from 'http';
import type SuperTest from 'supertest';
import { CASE_CONFIGURE_CONNECTORS_URL } from '@kbn/cases-plugin/common/constants';
import {
Configuration,
CaseConnector,
ConnectorTypes,
CasePostRequest,
@ -22,6 +21,7 @@ import {
import { ActionResult, FindActionResult } from '@kbn/actions-plugin/server/types';
import { getServiceNowServer } from '@kbn/actions-simulators-plugin/server/plugin';
import { RecordingServiceNowSimulator } from '@kbn/actions-simulators-plugin/server/servicenow_simulation';
import { Configuration } from '@kbn/cases-plugin/common/types/domain';
import { User } from '../authentication/types';
import { superUser } from '../authentication/users';
import { getPostCaseRequest } from '../mock';

View file

@ -27,15 +27,12 @@ import {
INTERNAL_GET_CASE_CATEGORIES_URL,
} from '@kbn/cases-plugin/common/constants';
import {
Configuration,
Case,
CaseStatuses,
Cases,
CasesFindResponse,
CasesPatchRequest,
ConfigurationPatchRequest,
CasesStatusResponse,
Configurations,
AlertResponse,
ConnectorMappingsAttributes,
CasesByAlertId,
@ -49,6 +46,8 @@ import { ActionResult } from '@kbn/actions-plugin/server/types';
import { CasePersistedAttributes } from '@kbn/cases-plugin/server/common/types/case';
import type { SavedObjectsRawDocSource } from '@kbn/core/server';
import type { ConfigurationPersistedAttributes } from '@kbn/cases-plugin/server/common/types/configure';
import { Configurations, Configuration } from '@kbn/cases-plugin/common/types/domain';
import { ConfigurationPatchRequest } from '@kbn/cases-plugin/common/types/api';
import { User } from '../authentication/types';
import { superUser } from '../authentication/users';
import { getSpaceUrlPrefix, setupAuth } from './helpers';