From a3fa269e262f68d9d5bde7b6206f8f6c1e9ad834 Mon Sep 17 00:00:00 2001 From: Mark Hopkin Date: Wed, 22 Mar 2023 22:05:14 +0000 Subject: [PATCH 01/40] [Fleet] Remove text saying file uploads are deleted after 30 days (#153499) ## Summary We are having to remove the ILM policies that delete data after 30 days from 8.7.0 in https://github.com/elastic/elasticsearch/pull/94651, so removing this text as well: "Fleet will automatically remove old diagnostics files after 30 days." How they look now: Screenshot 2023-03-22 at 20 57 40 Screenshot 2023-03-22 at 20 57 33 --- .../agent_details_page/components/agent_diagnostics/index.tsx | 2 +- .../agents/components/agent_request_diagnostics_modal/index.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_diagnostics/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_diagnostics/index.tsx index de3600142d8ca..c52eddd3cafb9 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_diagnostics/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_diagnostics/index.tsx @@ -249,7 +249,7 @@ export const AgentDiagnosticsTab: React.FunctionComponent > diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_request_diagnostics_modal/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_request_diagnostics_modal/index.tsx index d5bb9adf040b2..0d3ccbd804e52 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_request_diagnostics_modal/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_request_diagnostics_modal/index.tsx @@ -119,7 +119,7 @@ export const AgentRequestDiagnosticsModal: React.FunctionComponent = ({

From 6eb5d8d401a443aec032c1fa1e1035926b5e2ef1 Mon Sep 17 00:00:00 2001 From: Tim Sullivan Date: Wed, 22 Mar 2023 16:03:52 -0700 Subject: [PATCH 02/40] [Reporting] Fix download of files with multi-byte filenames (#153158) ## Summary Closes https://github.com/elastic/kibana/issues/152963 ### 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 ### Release note Fixed an issue where it was unable to create a report based on a dashboard with multi-byte characters in the title. --- .../routes/lib/get_document_payload.test.ts | 4 +- .../server/routes/lib/get_document_payload.ts | 5 +- .../management/integration_tests/jobs.test.ts | 61 +++++++++++++------ .../server/routes/management/jobs.ts | 26 ++++---- x-pack/test/functional/apps/canvas/reports.ts | 2 +- .../__snapshots__/csv_v2.snap | 4 +- 6 files changed, 65 insertions(+), 37 deletions(-) diff --git a/x-pack/plugins/reporting/server/routes/lib/get_document_payload.test.ts b/x-pack/plugins/reporting/server/routes/lib/get_document_payload.test.ts index b342b52cdb9bb..efe22f0111c63 100644 --- a/x-pack/plugins/reporting/server/routes/lib/get_document_payload.test.ts +++ b/x-pack/plugins/reporting/server/routes/lib/get_document_payload.test.ts @@ -57,8 +57,8 @@ describe('getDocumentPayload', () => { expect.objectContaining({ contentType: 'application/pdf', content: expect.any(Readable), + filename: 'Some PDF report.pdf', headers: expect.objectContaining({ - 'Content-Disposition': 'attachment; filename="Some PDF report.pdf"', 'Content-Length': '1024', }), statusCode: 200, @@ -85,8 +85,8 @@ describe('getDocumentPayload', () => { expect.objectContaining({ contentType: 'text/csv', content: expect.any(Readable), + filename: 'Some CSV report.csv', headers: expect.objectContaining({ - 'Content-Disposition': 'attachment; filename="Some CSV report.csv"', 'Content-Length': '1024', 'kbn-csv-contains-formulas': true, 'kbn-max-size-reached': true, diff --git a/x-pack/plugins/reporting/server/routes/lib/get_document_payload.ts b/x-pack/plugins/reporting/server/routes/lib/get_document_payload.ts index 52dec4467a7a0..58f878e7a29d7 100644 --- a/x-pack/plugins/reporting/server/routes/lib/get_document_payload.ts +++ b/x-pack/plugins/reporting/server/routes/lib/get_document_payload.ts @@ -24,8 +24,11 @@ export interface Payload { content: string | Stream | ErrorFromPayload; contentType: string | null; headers: ResponseHeaders; + filename?: string; } +export type PayloadCompleted = Payload & { filename: string }; + type TaskRunResult = Required['output']; const DEFAULT_TITLE = 'report'; @@ -67,12 +70,12 @@ export function getDocumentPayloadFactory(reporting: ReportingCore) { const contentType = output.content_type ?? 'text/plain'; return { + filename, content, statusCode: 200, contentType, headers: { ...headers, - 'Content-Disposition': `attachment; filename="${filename}"`, 'Content-Length': `${output.size ?? ''}`, }, }; diff --git a/x-pack/plugins/reporting/server/routes/management/integration_tests/jobs.test.ts b/x-pack/plugins/reporting/server/routes/management/integration_tests/jobs.test.ts index 9f6e3e0fe235b..e5b326df56f56 100644 --- a/x-pack/plugins/reporting/server/routes/management/integration_tests/jobs.test.ts +++ b/x-pack/plugins/reporting/server/routes/management/integration_tests/jobs.test.ts @@ -8,13 +8,14 @@ jest.mock('../../../lib/content_stream', () => ({ getContentStream: jest.fn(), })); +import { estypes } from '@elastic/elasticsearch'; +import { setupServer } from '@kbn/core-test-helpers-test-utils'; import type { ElasticsearchClientMock } from '@kbn/core/server/mocks'; +import { licensingMock } from '@kbn/licensing-plugin/server/mocks'; import { BehaviorSubject } from 'rxjs'; -import { setupServer } from '@kbn/core-test-helpers-test-utils'; import { Readable } from 'stream'; import supertest from 'supertest'; import { ReportingCore } from '../../..'; -import { licensingMock } from '@kbn/licensing-plugin/server/mocks'; import { ReportingInternalSetup, ReportingInternalStart } from '../../../core'; import { ContentStream, ExportTypesRegistry, getContentStream } from '../../../lib'; import { @@ -44,7 +45,7 @@ describe('GET /api/reporting/jobs/download', () => { hits: { hits: sources.map((source: object) => ({ _source: source })), }, - }; + } as estypes.SearchResponseBody; }; const mockConfigSchema = createMockConfigSchema({ roles: { enabled: false } }); @@ -113,7 +114,7 @@ describe('GET /api/reporting/jobs/download', () => { }); it('fails on malformed download IDs', async () => { - mockEsClient.search.mockResponseOnce(getHits() as any); + mockEsClient.search.mockResponseOnce(getHits()); registerJobInfoRoutes(core); await server.start(); @@ -153,7 +154,7 @@ describe('GET /api/reporting/jobs/download', () => { }); it('returns 404 if job not found', async () => { - mockEsClient.search.mockResponseOnce(getHits() as any); + mockEsClient.search.mockResponseOnce(getHits()); registerJobInfoRoutes(core); await server.start(); @@ -166,7 +167,7 @@ describe('GET /api/reporting/jobs/download', () => { getHits({ jobtype: 'invalidJobType', payload: { title: 'invalid!' }, - }) as any + }) ); registerJobInfoRoutes(core); @@ -180,7 +181,7 @@ describe('GET /api/reporting/jobs/download', () => { getHits({ jobtype: 'base64EncodedJobType', payload: {}, // payload is irrelevant - }) as any + }) ); registerJobInfoRoutes(core); @@ -195,7 +196,7 @@ describe('GET /api/reporting/jobs/download', () => { getHits({ jobtype: 'customForbiddenJobType', payload: {}, // payload is irrelevant - }) as any + }) ); registerJobInfoRoutes(core); @@ -211,7 +212,7 @@ describe('GET /api/reporting/jobs/download', () => { jobtype: 'unencodedJobType', status: 'pending', payload: { title: 'incomplete!' }, - }) as any + }) ); registerJobInfoRoutes(core); @@ -231,7 +232,7 @@ describe('GET /api/reporting/jobs/download', () => { status: 'failed', output: { content: 'job failure message' }, payload: { title: 'failing job!' }, - }) as any + }) ); registerJobInfoRoutes(core); @@ -256,23 +257,23 @@ describe('GET /api/reporting/jobs/download', () => { status: 'completed', output: { content_type: outputContentType }, payload: { title }, - }); + }) as estypes.SearchResponseBody; }; it('when a known job-type is complete', async () => { - mockEsClient.search.mockResponseOnce(getCompleteHits() as any); + mockEsClient.search.mockResponseOnce(getCompleteHits()); registerJobInfoRoutes(core); await server.start(); await supertest(httpSetup.server.listener) .get('/api/reporting/jobs/download/dank') .expect(200) - .expect('Content-Type', 'text/plain; charset=utf-8') - .expect('content-disposition', 'attachment; filename="report.csv"'); + .expect('Content-Type', 'text/csv; charset=utf-8') + .expect('content-disposition', 'attachment; filename=report.csv'); }); it('succeeds when security is not there or disabled', async () => { - mockEsClient.search.mockResponseOnce(getCompleteHits() as any); + mockEsClient.search.mockResponseOnce(getCompleteHits()); // @ts-ignore core.pluginSetupDeps.security = null; @@ -284,15 +285,15 @@ describe('GET /api/reporting/jobs/download', () => { await supertest(httpSetup.server.listener) .get('/api/reporting/jobs/download/dope') .expect(200) - .expect('Content-Type', 'text/plain; charset=utf-8') - .expect('content-disposition', 'attachment; filename="report.csv"'); + .expect('Content-Type', 'text/csv; charset=utf-8') + .expect('content-disposition', 'attachment; filename=report.csv'); }); it('forwards job content stream', async () => { mockEsClient.search.mockResponseOnce( getCompleteHits({ jobType: 'unencodedJobType', - }) as any + }) ); registerJobInfoRoutes(core); @@ -300,7 +301,7 @@ describe('GET /api/reporting/jobs/download', () => { await supertest(httpSetup.server.listener) .get('/api/reporting/jobs/download/dank') .expect(200) - .expect('Content-Type', 'text/plain; charset=utf-8') + .expect('Content-Type', 'text/csv; charset=utf-8') .then(({ text }) => expect(text).toEqual('test')); }); @@ -309,7 +310,7 @@ describe('GET /api/reporting/jobs/download', () => { getCompleteHits({ jobType: 'unencodedJobType', outputContentType: 'application/html', - }) as any + }) ); registerJobInfoRoutes(core); @@ -325,6 +326,26 @@ describe('GET /api/reporting/jobs/download', () => { }); }); }); + + it('allows multi-byte characters in file names', async () => { + mockEsClient.search.mockResponseOnce( + getCompleteHits({ + jobType: 'base64EncodedJobType', + title: '日本語ダッシュボード', + }) + ); + registerJobInfoRoutes(core); + + await server.start(); + await supertest(httpSetup.server.listener) + .get('/api/reporting/jobs/download/japanese-dashboard') + .expect(200) + .expect('Content-Type', 'application/pdf') + .expect( + 'content-disposition', + 'attachment; filename=%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%83%80%E3%83%83%E3%82%B7%E3%83%A5%E3%83%9C%E3%83%BC%E3%83%89.pdf' + ); + }); }); describe('Deprecated: role-based access control', () => { diff --git a/x-pack/plugins/reporting/server/routes/management/jobs.ts b/x-pack/plugins/reporting/server/routes/management/jobs.ts index 8c93f25e80873..9b2a63deca2ba 100644 --- a/x-pack/plugins/reporting/server/routes/management/jobs.ts +++ b/x-pack/plugins/reporting/server/routes/management/jobs.ts @@ -165,22 +165,26 @@ export function registerJobInfoRoutes(reporting: ReportingCore) { return jobManagementPreRouting(reporting, res, docId, user, counters, async (doc) => { const payload = await jobsQuery.getDocumentPayload(doc); + const { contentType, content, filename, statusCode } = payload; - if (!payload.contentType || !ALLOWED_JOB_CONTENT_TYPES.includes(payload.contentType)) { + if (!contentType || !ALLOWED_JOB_CONTENT_TYPES.includes(contentType)) { return res.badRequest({ - body: `Unsupported content-type of ${payload.contentType} specified by job output`, + body: `Unsupported content-type of ${contentType} specified by job output`, }); } - return res.custom({ - body: - typeof payload.content === 'string' ? Buffer.from(payload.content) : payload.content, - statusCode: payload.statusCode, - headers: { - ...payload.headers, - 'content-type': payload.contentType, - }, - }); + const body = typeof content === 'string' ? Buffer.from(content) : content; + + const headers = { + ...payload.headers, + 'content-type': contentType, + }; + + if (filename) { + return res.file({ body, headers, filename }); + } + + return res.custom({ body, headers, statusCode }); }); }) ); diff --git a/x-pack/test/functional/apps/canvas/reports.ts b/x-pack/test/functional/apps/canvas/reports.ts index b2c7444b44fd6..1a1550a62c8eb 100644 --- a/x-pack/test/functional/apps/canvas/reports.ts +++ b/x-pack/test/functional/apps/canvas/reports.ts @@ -64,7 +64,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { expect(res.status).to.equal(200); expect(res.get('content-type')).to.equal('application/pdf'); expect(res.get('content-disposition')).to.equal( - 'attachment; filename="The Very Cool Workpad for PDF Tests.pdf"' + 'attachment; filename=The%20Very%20Cool%20Workpad%20for%20PDF%20Tests.pdf' ); }); }); diff --git a/x-pack/test/reporting_api_integration/reporting_and_security/__snapshots__/csv_v2.snap b/x-pack/test/reporting_api_integration/reporting_and_security/__snapshots__/csv_v2.snap index a094bad84d444..1d9f1ae4195d4 100644 --- a/x-pack/test/reporting_api_integration/reporting_and_security/__snapshots__/csv_v2.snap +++ b/x-pack/test/reporting_api_integration/reporting_and_security/__snapshots__/csv_v2.snap @@ -13,7 +13,7 @@ u_JJX4UBvD7uFsw9L2x4,timeless-test,1,Proterozoic,-,Paleozoic,Permian exports[`Reporting APIs CSV Generation from Saved Search ID export from non-timebased data view query stored in the saved search job response data is correct 1`] = ` Object { - "contentDisposition": "attachment; filename=\\"*zoic.csv\\"", + "contentDisposition": "attachment; filename=*zoic.csv", "contentType": "text/csv; charset=utf-8", "title": "*zoic", } @@ -66,7 +66,7 @@ exports[`Reporting APIs CSV Generation from Saved Search ID export from timebase exports[`Reporting APIs CSV Generation from Saved Search ID export from timebased data view timezone formatting export with custom timezone and timeRange from locator params job response data is correct 1`] = ` Object { - "contentDisposition": "attachment; filename=\\"Ecommerce Data.csv\\"", + "contentDisposition": "attachment; filename=Ecommerce%20Data.csv", "contentType": "text/csv; charset=utf-8", "title": "Ecommerce Data", } From c333ca62e6b646348c1808c4e8cfccb621c8d485 Mon Sep 17 00:00:00 2001 From: Kevin Qualters <56408403+kqualters-elastic@users.noreply.github.com> Date: Wed, 22 Mar 2023 19:16:45 -0400 Subject: [PATCH 03/40] [Security Solution] [Analyzer] Use correct unmapped type for tiebreaker (#153480) ## Summary Related issue: https://github.com/elastic/kibana/issues/153189 Fixes an issue where when using analyzer with an integration that did not map event.id, the unmapped_type on this changed line was wrong, as normally this field is a keyword. This would cause the analyzer events api request to fail with ``` ResponseError: search_phase_execution_exception Caused by: illegal_argument_exception: Can't sort on field [__anonymous_]; the field has incompatible sort types: [STRING] and [LONG] across shards! Root causes: task_cancelled_exception: parent task was cancelled [Fatal failure during search: failed to merge result [Can't sort on field [__anonymous_]; the field has incompatible sort types: [STRING] and [LONG] across shards!]] ``` Before: ![image](https://user-images.githubusercontent.com/56408403/226994873-f8a23051-3d00-4974-b4a3-06b6fffa2b4e.png) After: ![image](https://user-images.githubusercontent.com/56408403/226994908-284efbe7-3599-4aca-aef6-f0cb43f91ce8.png) ### Checklist - [ ] [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 --- .../server/endpoint/routes/resolver/utils/pagination.test.ts | 2 +- .../server/endpoint/routes/resolver/utils/pagination.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/utils/pagination.test.ts b/x-pack/plugins/security_solution/server/endpoint/routes/resolver/utils/pagination.test.ts index c0b50798a822c..16558869a7caf 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/utils/pagination.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/routes/resolver/utils/pagination.test.ts @@ -61,7 +61,7 @@ describe('Pagination', () => { const builder = PaginationBuilder.createBuilder(100); expect(builder.buildQueryFields('a', 'desc').sort).toStrictEqual([ { '@timestamp': 'desc' }, - { a: { order: 'asc', unmapped_type: 'long' } }, + { a: { order: 'asc', unmapped_type: 'keyword' } }, ]); }); }); diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/utils/pagination.ts b/x-pack/plugins/security_solution/server/endpoint/routes/resolver/utils/pagination.ts index 295d930ff24f5..19825ea0fd38d 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/utils/pagination.ts +++ b/x-pack/plugins/security_solution/server/endpoint/routes/resolver/utils/pagination.ts @@ -179,7 +179,7 @@ export class PaginationBuilder { ): PaginationFields { const sort: SortFields = [ { '@timestamp': timeSort }, - { [tiebreaker]: { order: 'asc', unmapped_type: 'long' } }, + { [tiebreaker]: { order: 'asc', unmapped_type: 'keyword' } }, ]; let searchAfter: SearchAfterFields | undefined; if (this.timestamp && this.eventID) { From c036774105eb976ded3485e03bbe46e55b3de565 Mon Sep 17 00:00:00 2001 From: Rickyanto Ang Date: Wed, 22 Mar 2023 17:24:04 -0700 Subject: [PATCH 04/40] [Cloud Posture] Full dashboard onboarding for both integrations (#150134) ## Summary Tasks to do 1. Change the /status API response to accommodate 2 different CSP integration ( cspm and kspm ) 2. Fix the issue on CSP Dashboard where after user install kspm integration, you'll see installation prompt but without cspm/kspm tabs ### Risk Matrix Delete this section if it is not applicable to this PR. Before closing this PR, invite QA, stakeholders, and other developers to identify risks that should be tested prior to the change/feature release. When forming the risk matrix, consider some of the following examples and how they may potentially impact the change: | Risk | Probability | Severity | Mitigation/Notes | |---------------------------|-------------|----------|-------------------------| | Multiple Spaces—unexpected behavior in non-default Kibana Space. | Low | High | Integration tests will verify that all features are still supported in non-default Kibana Space and when user switches between spaces. | | Multiple nodes—Elasticsearch polling might have race conditions when multiple Kibana nodes are polling for the same tasks. | High | Low | Tasks are idempotent, so executing them multiple times will not result in logical error, but will degrade performance. To test for this case we add plenty of unit tests around this logic and document manual testing procedure. | | Code should gracefully handle cases when feature X or plugin Y are disabled. | Medium | High | Unit tests will verify that any feature flag or plugin combination still results in our service operational. | | [See more potential risk examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx) | ### For maintainers - [ ] 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) --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../common/constants.ts | 2 + .../cloud_security_posture/common/types.ts | 29 +- .../public/common/api/use_setup_status_api.ts | 2 +- .../components/cloud_posture_page.test.tsx | 9 +- .../public/components/cloud_posture_page.tsx | 7 +- .../public/components/no_findings_states.tsx | 13 +- .../compliance_dashboard.test.tsx | 152 ++++- .../compliance_dashboard.tsx | 116 ++-- .../configurations/configurations.test.tsx | 46 +- .../pages/configurations/configurations.tsx | 8 +- .../public/pages/findings/findings.tsx | 9 + .../server/lib/check_index_status.ts | 22 +- .../server/lib/fleet_util.ts | 32 +- .../routes/benchmarks/benchmarks.test.ts | 71 ++- .../server/routes/benchmarks/benchmarks.ts | 4 +- .../server/routes/status/status.test.ts | 563 ++++-------------- .../server/routes/status/status.ts | 150 ++++- .../cloud_security_posture/tsconfig.json | 1 - .../apis/cloud_security_posture/status.ts | 14 +- .../pages/findings.ts | 5 + 20 files changed, 624 insertions(+), 631 deletions(-) diff --git a/x-pack/plugins/cloud_security_posture/common/constants.ts b/x-pack/plugins/cloud_security_posture/common/constants.ts index 39a1cbf2fd320..04e31f9e0b641 100644 --- a/x-pack/plugins/cloud_security_posture/common/constants.ts +++ b/x-pack/plugins/cloud_security_posture/common/constants.ts @@ -47,6 +47,8 @@ export const CSP_LATEST_VULNERABILITIES_INGEST_TIMESTAMP_PIPELINE = export const RULE_PASSED = `passed`; export const RULE_FAILED = `failed`; +export const POSTURE_TYPE_ALL = 'all'; + // A mapping of in-development features to their status. These features should be hidden from users but can be easily // activated via a simple code change in a single location. export const INTERNAL_FEATURE_FLAGS = { diff --git a/x-pack/plugins/cloud_security_posture/common/types.ts b/x-pack/plugins/cloud_security_posture/common/types.ts index dc229560b502a..83fd9a4b276c1 100644 --- a/x-pack/plugins/cloud_security_posture/common/types.ts +++ b/x-pack/plugins/cloud_security_posture/common/types.ts @@ -11,6 +11,8 @@ import { SUPPORTED_CLOUDBEAT_INPUTS, SUPPORTED_POLICY_TEMPLATES } from './consta import { CspRuleTemplateMetadata } from './schemas/csp_rule_template_metadata'; export type Evaluation = 'passed' | 'failed' | 'NA'; + +export type PostureTypes = 'cspm' | 'kspm' | 'all'; /** number between 1-100 */ export type Score = number; @@ -59,7 +61,8 @@ export type CspStatusCode = | 'unprivileged' // user lacks privileges for the latest findings index | 'index-timeout' // index timeout was surpassed since installation | 'not-deployed' // no healthy agents were deployed - | 'not-installed'; // number of installed csp integrations is 0; + | 'not-installed' // number of installed csp integrations is 0; + | 'waiting_for_results'; // have healthy agents but no findings at all, assumes data is being indexed for the 1st time export type IndexStatus = | 'not-empty' // Index contains documents @@ -71,27 +74,21 @@ export interface IndexDetails { status: IndexStatus; } -interface BaseCspSetupStatus { - indicesDetails: IndexDetails[]; - latestPackageVersion: string; +interface BaseCspSetupBothPolicy { + status: CspStatusCode; installedPackagePolicies: number; healthyAgents: number; - isPluginInitialized: boolean; - installedPolicyTemplates: CloudSecurityPolicyTemplate[]; } -interface CspSetupNotInstalledStatus extends BaseCspSetupStatus { - status: Extract; -} - -interface CspSetupInstalledStatus extends BaseCspSetupStatus { - status: Exclude; - // if installedPackageVersion == undefined but status != 'not-installed' it means the integration was installed in the past and findings were found - // status can be `indexed` but return with undefined package information in this case - installedPackageVersion: string | undefined; +export interface BaseCspSetupStatus { + indicesDetails: IndexDetails[]; + latestPackageVersion: string; + cspm: BaseCspSetupBothPolicy; + kspm: BaseCspSetupBothPolicy; + isPluginInitialized: boolean; } -export type CspSetupStatus = CspSetupInstalledStatus | CspSetupNotInstalledStatus; +export type CspSetupStatus = BaseCspSetupStatus; export type AgentPolicyStatus = Pick & { agents: number }; diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/use_setup_status_api.ts b/x-pack/plugins/cloud_security_posture/public/common/api/use_setup_status_api.ts index 7c5d4eb8dc31b..31edc058dec52 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/api/use_setup_status_api.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/api/use_setup_status_api.ts @@ -7,7 +7,7 @@ import { useQuery, type UseQueryOptions } from '@tanstack/react-query'; import { useKibana } from '../hooks/use_kibana'; -import { CspSetupStatus } from '../../../common/types'; +import { type CspSetupStatus } from '../../../common/types'; import { STATUS_ROUTE_PATH } from '../../../common/constants'; const getCspSetupStatusQueryKey = 'csp_status_key'; diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx b/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx index 749aa1ccb038a..4d6ec61ea692b 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx @@ -144,7 +144,14 @@ describe('', () => { (useCspSetupStatusApi as jest.Mock).mockImplementation(() => createReactQueryResponse({ status: 'success', - data: { status: 'not-installed' }, + data: { + kspm: { status: 'not-installed' }, + cspm: { status: 'not-installed' }, + indicesDetails: [ + { index: 'logs-cloud_security_posture.findings_latest-default', status: 'empty' }, + { index: 'logs-cloud_security_posture.findings-default*', status: 'empty' }, + ], + }, }) ); (useCspIntegrationLink as jest.Mock).mockImplementation(() => chance.url()); diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.tsx b/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.tsx index 8d4cf6773dfc7..a697b12190122 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.tsx @@ -275,7 +275,12 @@ export const CloudPosturePage = ({ return defaultLoadingRenderer(); } - if (getSetupStatus.data.status === 'not-installed') { + /* Checks if its a completely new user which means no integration has been installed and no latest findings default index has been found */ + if ( + getSetupStatus.data?.kspm?.status === 'not-installed' && + getSetupStatus.data?.cspm?.status === 'not-installed' && + getSetupStatus.data?.indicesDetails[0].status === 'empty' + ) { return packageNotInstalledRenderer({ kspmIntegrationLink, cspmIntegrationLink }); } diff --git a/x-pack/plugins/cloud_security_posture/public/components/no_findings_states.tsx b/x-pack/plugins/cloud_security_posture/public/components/no_findings_states.tsx index f8f2c9dc41e97..8109baf738a18 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/no_findings_states.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/no_findings_states.tsx @@ -23,10 +23,14 @@ import { useCISIntegrationPoliciesLink } from '../common/navigation/use_navigate import { NO_FINDINGS_STATUS_TEST_SUBJ } from './test_subjects'; import { CloudPosturePage } from './cloud_posture_page'; import { useCspSetupStatusApi } from '../common/api/use_setup_status_api'; -import type { IndexDetails } from '../../common/types'; +import type { CloudSecurityPolicyTemplate, IndexDetails } from '../../common/types'; const REFETCH_INTERVAL_MS = 20000; +interface PostureTypes { + posturetype: CloudSecurityPolicyTemplate; +} + const NotDeployed = () => { // using an existing hook to get agent id and package policy id const benchmarks = useCspBenchmarkIntegrations({ @@ -176,19 +180,20 @@ const Unprivileged = ({ unprivilegedIndices }: { unprivilegedIndices: string[] } * This component will return the render states based on cloud posture setup status API * since 'not-installed' is being checked globally by CloudPosturePage and 'indexed' is the pass condition, those states won't be handled here * */ -export const NoFindingsStates = () => { +export const NoFindingsStates = (posturetype?: PostureTypes) => { const getSetupStatus = useCspSetupStatusApi({ options: { refetchInterval: REFETCH_INTERVAL_MS }, }); - const status = getSetupStatus.data?.status; + const statusKspm = getSetupStatus.data?.kspm?.status; + const statusCspm = getSetupStatus.data?.cspm?.status; const indicesStatus = getSetupStatus.data?.indicesDetails; + const status = posturetype?.posturetype === 'cspm' ? statusCspm : statusKspm; const unprivilegedIndices = indicesStatus && indicesStatus .filter((idxDetails) => idxDetails.status === 'unprivileged') .map((idxDetails: IndexDetails) => idxDetails.index) .sort((a, b) => a.localeCompare(b)); - const render = () => { if (status === 'not-deployed') return ; // integration installed, but no agents added if (status === 'indexing') return ; // agent added, index timeout hasn't passed since installation diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx index b13deea527463..bf98aff994bc3 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.test.tsx @@ -6,7 +6,7 @@ */ import React from 'react'; -import Chance from 'chance'; + import { coreMock } from '@kbn/core/public/mocks'; import { render } from '@testing-library/react'; import { TestProvider } from '../../test/test_provider'; @@ -22,8 +22,6 @@ import { import { mockDashboardData } from './mock'; import { createReactQueryResponse } from '../../test/fixtures/react_query'; import { NO_FINDINGS_STATUS_TEST_SUBJ } from '../../components/test_subjects'; -import { useCISIntegrationPoliciesLink } from '../../common/navigation/use_navigate_to_cis_integration_policies'; -import { useCspIntegrationLink } from '../../common/navigation/use_csp_integration_link'; import { expectIdsInDoc } from '../../test/utils'; jest.mock('../../common/api/use_setup_status_api'); @@ -32,8 +30,6 @@ jest.mock('../../common/hooks/use_subscription_status'); jest.mock('../../common/navigation/use_navigate_to_cis_integration_policies'); jest.mock('../../common/navigation/use_csp_integration_link'); -const chance = new Chance(); - describe('', () => { beforeEach(() => { jest.resetAllMocks(); @@ -89,18 +85,32 @@ describe('', () => { (useCspSetupStatusApi as jest.Mock).mockImplementation(() => createReactQueryResponse({ status: 'success', - data: { status: 'not-deployed', installedPolicyTemplates: [] }, + data: { + kspm: { status: 'not-deployed', healthyAgents: 0, installedPackagePolicies: 1 }, + cspm: { status: 'not-deployed', healthyAgents: 0, installedPackagePolicies: 1 }, + indicesDetails: [ + { index: 'logs-cloud_security_posture.findings_latest-default', status: 'empty' }, + { index: 'logs-cloud_security_posture.findings-default*', status: 'empty' }, + ], + }, }) ); - (useCISIntegrationPoliciesLink as jest.Mock).mockImplementation(() => chance.url()); - (useCspIntegrationLink as jest.Mock).mockImplementation(() => chance.url()); + (useKspmStatsApi as jest.Mock).mockImplementation(() => ({ + isSuccess: true, + isLoading: false, + data: { stats: { totalFindings: 0 } }, + })); + (useCspmStatsApi as jest.Mock).mockImplementation(() => ({ + isSuccess: true, + isLoading: false, + data: { stats: { totalFindings: 0 } }, + })); renderComplianceDashboardPage(); expectIdsInDoc({ be: [NO_FINDINGS_STATUS_TEST_SUBJ.NO_AGENTS_DEPLOYED], notToBe: [ - DASHBOARD_CONTAINER, NO_FINDINGS_STATUS_TEST_SUBJ.INDEXING, NO_FINDINGS_STATUS_TEST_SUBJ.INDEX_TIMEOUT, NO_FINDINGS_STATUS_TEST_SUBJ.UNPRIVILEGED, @@ -112,17 +122,32 @@ describe('', () => { (useCspSetupStatusApi as jest.Mock).mockImplementation(() => createReactQueryResponse({ status: 'success', - data: { status: 'indexing', installedPolicyTemplates: [] }, + data: { + kspm: { status: 'indexing', healthyAgents: 1, installedPackagePolicies: 1 }, + cspm: { status: 'indexing', healthyAgents: 1, installedPackagePolicies: 1 }, + indicesDetails: [ + { index: 'logs-cloud_security_posture.findings_latest-default', status: 'empty' }, + { index: 'logs-cloud_security_posture.findings-default*', status: 'empty' }, + ], + }, }) ); - (useCspIntegrationLink as jest.Mock).mockImplementation(() => chance.url()); + (useKspmStatsApi as jest.Mock).mockImplementation(() => ({ + isSuccess: true, + isLoading: false, + data: { stats: { totalFindings: 1 } }, + })); + (useCspmStatsApi as jest.Mock).mockImplementation(() => ({ + isSuccess: true, + isLoading: false, + data: { stats: { totalFindings: 1 } }, + })); renderComplianceDashboardPage(); expectIdsInDoc({ be: [NO_FINDINGS_STATUS_TEST_SUBJ.INDEXING], notToBe: [ - DASHBOARD_CONTAINER, NO_FINDINGS_STATUS_TEST_SUBJ.NO_AGENTS_DEPLOYED, NO_FINDINGS_STATUS_TEST_SUBJ.INDEX_TIMEOUT, NO_FINDINGS_STATUS_TEST_SUBJ.UNPRIVILEGED, @@ -134,17 +159,32 @@ describe('', () => { (useCspSetupStatusApi as jest.Mock).mockImplementation(() => createReactQueryResponse({ status: 'success', - data: { status: 'index-timeout', installedPolicyTemplates: [] }, + data: { + kspm: { status: 'index-timeout', healthyAgents: 1, installedPackagePolicies: 1 }, + cspm: { status: 'index-timeout', healthyAgents: 1, installedPackagePolicies: 1 }, + indicesDetails: [ + { index: 'logs-cloud_security_posture.findings_latest-default', status: 'empty' }, + { index: 'logs-cloud_security_posture.findings-default*', status: 'empty' }, + ], + }, }) ); - (useCspIntegrationLink as jest.Mock).mockImplementation(() => chance.url()); + (useKspmStatsApi as jest.Mock).mockImplementation(() => ({ + isSuccess: true, + isLoading: false, + data: { stats: { totalFindings: 0 } }, + })); + (useCspmStatsApi as jest.Mock).mockImplementation(() => ({ + isSuccess: true, + isLoading: false, + data: { stats: { totalFindings: 0 } }, + })); renderComplianceDashboardPage(); expectIdsInDoc({ be: [NO_FINDINGS_STATUS_TEST_SUBJ.INDEX_TIMEOUT], notToBe: [ - DASHBOARD_CONTAINER, NO_FINDINGS_STATUS_TEST_SUBJ.NO_AGENTS_DEPLOYED, NO_FINDINGS_STATUS_TEST_SUBJ.INDEXING, NO_FINDINGS_STATUS_TEST_SUBJ.UNPRIVILEGED, @@ -156,17 +196,32 @@ describe('', () => { (useCspSetupStatusApi as jest.Mock).mockImplementation(() => createReactQueryResponse({ status: 'success', - data: { status: 'unprivileged', installedPolicyTemplates: [] }, + data: { + kspm: { status: 'unprivileged', healthyAgents: 1, installedPackagePolicies: 1 }, + cspm: { status: 'unprivileged', healthyAgents: 1, installedPackagePolicies: 1 }, + indicesDetails: [ + { index: 'logs-cloud_security_posture.findings_latest-default', status: 'empty' }, + { index: 'logs-cloud_security_posture.findings-default*', status: 'empty' }, + ], + }, }) ); - (useCspIntegrationLink as jest.Mock).mockImplementation(() => chance.url()); + (useKspmStatsApi as jest.Mock).mockImplementation(() => ({ + isSuccess: true, + isLoading: false, + data: { stats: { totalFindings: 0 } }, + })); + (useCspmStatsApi as jest.Mock).mockImplementation(() => ({ + isSuccess: true, + isLoading: false, + data: { stats: { totalFindings: 0 } }, + })); renderComplianceDashboardPage(); expectIdsInDoc({ be: [NO_FINDINGS_STATUS_TEST_SUBJ.UNPRIVILEGED], notToBe: [ - DASHBOARD_CONTAINER, NO_FINDINGS_STATUS_TEST_SUBJ.NO_AGENTS_DEPLOYED, NO_FINDINGS_STATUS_TEST_SUBJ.INDEXING, NO_FINDINGS_STATUS_TEST_SUBJ.INDEX_TIMEOUT, @@ -178,7 +233,14 @@ describe('', () => { (useCspSetupStatusApi as jest.Mock).mockImplementation(() => createReactQueryResponse({ status: 'success', - data: { status: 'indexed', installedPolicyTemplates: ['cspm', 'kspm'] }, + data: { + kspm: { status: 'indexed' }, + cspm: { status: 'indexed' }, + indicesDetails: [ + { index: 'logs-cloud_security_posture.findings_latest-default', status: 'not-empty' }, + { index: 'logs-cloud_security_posture.findings-default*', status: 'not-empty' }, + ], + }, }) ); (useKspmStatsApi as jest.Mock).mockImplementation(() => ({ @@ -209,7 +271,14 @@ describe('', () => { (useCspSetupStatusApi as jest.Mock).mockImplementation(() => createReactQueryResponse({ status: 'success', - data: { status: 'indexed', installedPolicyTemplates: ['cspm', 'kspm'] }, + data: { + kspm: { status: 'indexed' }, + cspm: { status: 'not-installed' }, + indicesDetails: [ + { index: 'logs-cloud_security_posture.findings_latest-default', status: 'not-empty' }, + { index: 'logs-cloud_security_posture.findings-default*', status: 'not-empty' }, + ], + }, }) ); (useKspmStatsApi as jest.Mock).mockImplementation(() => ({ @@ -241,7 +310,13 @@ describe('', () => { (useCspSetupStatusApi as jest.Mock).mockImplementation(() => createReactQueryResponse({ status: 'success', - data: { status: 'indexed', installedPolicyTemplates: ['cspm', 'kspm'] }, + data: { + cspm: { status: 'indexed' }, + indicesDetails: [ + { index: 'logs-cloud_security_posture.findings_latest-default', status: 'not-empty' }, + { index: 'logs-cloud_security_posture.findings-default*', status: 'not-empty' }, + ], + }, }) ); (useKspmStatsApi as jest.Mock).mockImplementation(() => ({ @@ -273,7 +348,13 @@ describe('', () => { (useCspSetupStatusApi as jest.Mock).mockImplementation(() => createReactQueryResponse({ status: 'success', - data: { status: 'indexed', installedPolicyTemplates: ['cspm'] }, + data: { + cspm: { status: 'indexed', healthyAgents: 0, installedPackagePolicies: 1 }, + indicesDetails: [ + { index: 'logs-cloud_security_posture.findings_latest-default', status: 'not-empty' }, + { index: 'logs-cloud_security_posture.findings-default*', status: 'not-empty' }, + ], + }, }) ); (useKspmStatsApi as jest.Mock).mockImplementation(() => ({ @@ -305,7 +386,14 @@ describe('', () => { (useCspSetupStatusApi as jest.Mock).mockImplementation(() => createReactQueryResponse({ status: 'success', - data: { status: 'indexed', installedPolicyTemplates: ['kspm'] }, + data: { + kspm: { status: 'indexed', healthyAgents: 0, installedPackagePolicies: 1 }, + cspm: { status: 'not-installed' }, + indicesDetails: [ + { index: 'logs-cloud_security_posture.findings_latest-default', status: 'empty' }, + { index: 'logs-cloud_security_posture.findings-default*', status: 'empty' }, + ], + }, }) ); (useKspmStatsApi as jest.Mock).mockImplementation(() => ({ @@ -337,7 +425,14 @@ describe('', () => { (useCspSetupStatusApi as jest.Mock).mockImplementation(() => createReactQueryResponse({ status: 'success', - data: { status: 'indexed', installedPolicyTemplates: ['cspm', 'kspm'] }, + data: { + cspm: { status: 'indexed' }, + kspm: { status: 'indexed' }, + indicesDetails: [ + { index: 'logs-cloud_security_posture.findings_latest-default', status: 'not-empty' }, + { index: 'logs-cloud_security_posture.findings-default*', status: 'not-empty' }, + ], + }, }) ); (useKspmStatsApi as jest.Mock).mockImplementation(() => ({ @@ -369,7 +464,14 @@ describe('', () => { (useCspSetupStatusApi as jest.Mock).mockImplementation(() => createReactQueryResponse({ status: 'success', - data: { status: 'indexed', installedPolicyTemplates: ['cspm', 'kspm'] }, + data: { + cspm: { status: 'indexed' }, + kspm: { status: 'indexed' }, + indicesDetails: [ + { index: 'logs-cloud_security_posture.findings_latest-default', status: 'not-empty' }, + { index: 'logs-cloud_security_posture.findings-default*', status: 'not-empty' }, + ], + }, }) ); (useKspmStatsApi as jest.Mock).mockImplementation(() => ({ diff --git a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx index be2f5872a2dac..346ed041520de 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/compliance_dashboard/compliance_dashboard.tsx @@ -128,7 +128,7 @@ const IntegrationPostureDashboard = ({ } // integration is installed, but there are no findings for this integration - if (noFindings) { + if (noFindings && isIntegrationInstalled) { return ( // height is calculated for the screen height minus the kibana header, page title, and tabs
- + - + ); @@ -177,23 +177,28 @@ const IntegrationPostureDashboard = ({ export const ComplianceDashboard = () => { const [selectedTab, setSelectedTab] = useState(CSPM_POLICY_TEMPLATE); const getSetupStatus = useCspSetupStatusApi(); - const hasFindings = getSetupStatus.data?.status === 'indexed'; + const hasFindingsKspm = + getSetupStatus.data?.kspm?.status === 'indexed' || + getSetupStatus.data?.indicesDetails[0].status === 'not-empty'; + const hasFindingsCspm = + getSetupStatus.data?.cspm?.status === 'indexed' || + getSetupStatus.data?.indicesDetails[0].status === 'not-empty'; const cspmIntegrationLink = useCspIntegrationLink(CSPM_POLICY_TEMPLATE); const kspmIntegrationLink = useCspIntegrationLink(KSPM_POLICY_TEMPLATE); const getCspmDashboardData = useCspmStatsApi({ - enabled: hasFindings, + enabled: hasFindingsCspm, }); const getKspmDashboardData = useKspmStatsApi({ - enabled: hasFindings, + enabled: hasFindingsKspm, }); useEffect(() => { const selectInitialTab = () => { const cspmTotalFindings = getCspmDashboardData.data?.stats.totalFindings; const kspmTotalFindings = getKspmDashboardData.data?.stats.totalFindings; - const installedPolicyTemplates = getSetupStatus.data?.installedPolicyTemplates; - + const installedPolicyTemplatesCspm = getSetupStatus.data?.cspm?.status; + const installedPolicyTemplatesKspm = getSetupStatus.data?.kspm?.status; let preferredDashboard = CSPM_POLICY_TEMPLATE; // cspm has findings @@ -205,21 +210,27 @@ export const ComplianceDashboard = () => { preferredDashboard = KSPM_POLICY_TEMPLATE; } // cspm is installed - else if (installedPolicyTemplates?.includes(CSPM_POLICY_TEMPLATE)) { + else if ( + installedPolicyTemplatesCspm !== 'unprivileged' && + installedPolicyTemplatesCspm !== 'not-installed' + ) { preferredDashboard = CSPM_POLICY_TEMPLATE; } // kspm is installed - else if (installedPolicyTemplates?.includes(KSPM_POLICY_TEMPLATE)) { + else if ( + installedPolicyTemplatesKspm !== 'unprivileged' && + installedPolicyTemplatesKspm !== 'not-installed' + ) { preferredDashboard = KSPM_POLICY_TEMPLATE; } - setSelectedTab(preferredDashboard); }; selectInitialTab(); }, [ getCspmDashboardData.data?.stats.totalFindings, getKspmDashboardData.data?.stats.totalFindings, - getSetupStatus.data?.installedPolicyTemplates, + getSetupStatus.data?.cspm?.status, + getSetupStatus.data?.kspm?.status, ]); const tabs = useMemo( @@ -231,21 +242,28 @@ export const ComplianceDashboard = () => { isSelected: selectedTab === CSPM_POLICY_TEMPLATE, onClick: () => setSelectedTab(CSPM_POLICY_TEMPLATE), content: ( - -
- -
-
+ <> + {hasFindingsCspm ? ( + +
+ +
+
+ ) : ( + + )} + ), }, { @@ -255,21 +273,28 @@ export const ComplianceDashboard = () => { isSelected: selectedTab === KSPM_POLICY_TEMPLATE, onClick: () => setSelectedTab(KSPM_POLICY_TEMPLATE), content: ( - -
- -
-
+ <> + {hasFindingsKspm ? ( + +
+ +
+
+ ) : ( + + )} + ), }, ], @@ -277,14 +302,15 @@ export const ComplianceDashboard = () => { cspmIntegrationLink, getCspmDashboardData, getKspmDashboardData, - getSetupStatus.data?.installedPolicyTemplates, + getSetupStatus.data?.kspm?.status, + getSetupStatus.data?.cspm?.status, kspmIntegrationLink, selectedTab, + hasFindingsKspm, + hasFindingsCspm, ] ); - if (!hasFindings) return ; - return ( ', () => { (useCspSetupStatusApi as jest.Mock).mockImplementation(() => createReactQueryResponse({ status: 'success', - data: { status: 'not-deployed' }, + data: { + kspm: { status: 'not-deployed' }, + cspm: { status: 'not-deployed' }, + indicesDetails: [ + { index: 'logs-cloud_security_posture.findings_latest-default', status: 'empty' }, + { index: 'logs-cloud_security_posture.findings-default*', status: 'empty' }, + ], + }, }) ); (useCISIntegrationPoliciesLink as jest.Mock).mockImplementation(() => chance.url()); @@ -94,7 +101,14 @@ describe('', () => { (useCspSetupStatusApi as jest.Mock).mockImplementation(() => createReactQueryResponse({ status: 'success', - data: { status: 'indexing' }, + data: { + kspm: { status: 'indexing' }, + cspm: { status: 'indexing' }, + indicesDetails: [ + { index: 'logs-cloud_security_posture.findings_latest-default', status: 'empty' }, + { index: 'logs-cloud_security_posture.findings-default*', status: 'empty' }, + ], + }, }) ); (useCspIntegrationLink as jest.Mock).mockImplementation(() => chance.url()); @@ -116,7 +130,14 @@ describe('', () => { (useCspSetupStatusApi as jest.Mock).mockImplementation(() => createReactQueryResponse({ status: 'success', - data: { status: 'index-timeout' }, + data: { + kspm: { status: 'index-timeout' }, + cspm: { status: 'index-timeout' }, + indicesDetails: [ + { index: 'logs-cloud_security_posture.findings_latest-default', status: 'empty' }, + { index: 'logs-cloud_security_posture.findings-default*', status: 'empty' }, + ], + }, }) ); (useCspIntegrationLink as jest.Mock).mockImplementation(() => chance.url()); @@ -138,7 +159,14 @@ describe('', () => { (useCspSetupStatusApi as jest.Mock).mockImplementation(() => createReactQueryResponse({ status: 'success', - data: { status: 'unprivileged' }, + data: { + kspm: { status: 'unprivileged' }, + cspm: { status: 'unprivileged' }, + indicesDetails: [ + { index: 'logs-cloud_security_posture.findings_latest-default', status: 'empty' }, + { index: 'logs-cloud_security_posture.findings-default*', status: 'empty' }, + ], + }, }) ); (useCspIntegrationLink as jest.Mock).mockImplementation(() => chance.url()); @@ -161,7 +189,15 @@ describe('', () => { (useCspSetupStatusApi as jest.Mock).mockImplementation(() => ({ status: 'success', - data: { status: 'indexed' }, + data: { + kspm: { status: 'indexed' }, + cspm: { status: 'indexed' }, + indicesDetails: [ + { index: 'logs-cloud_security_posture.findings_latest-default', status: 'not-empty' }, + { index: 'logs-cloud_security_posture.findings-default*', status: 'empty' }, + { index: 'logs-cloud_security_posture.findings-default*', status: 'empty' }, + ], + }, })); (source.fetch$ as jest.Mock).mockReturnValue(of({ rawResponse: { hits: { hits: [] } } })); diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.tsx index 09983e7a6cc66..e82a38e006ce9 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/configurations.tsx @@ -20,9 +20,11 @@ export const Configurations = () => { const location = useLocation(); const dataViewQuery = useLatestFindingsDataView(); const getSetupStatus = useCspSetupStatusApi(); - - const hasFindings = getSetupStatus.data?.status === 'indexed'; - if (!hasFindings) return ; + const hasFindings = + getSetupStatus.data?.indicesDetails[0].status === 'not-empty' || + getSetupStatus.data?.kspm.status === 'indexed' || + getSetupStatus.data?.cspm.status === 'indexed'; + if (!hasFindings) return ; return ( diff --git a/x-pack/plugins/cloud_security_posture/public/pages/findings/findings.tsx b/x-pack/plugins/cloud_security_posture/public/pages/findings/findings.tsx index 5840a38d94ef3..118cabee95181 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/findings/findings.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/findings/findings.tsx @@ -18,6 +18,8 @@ import { FormattedMessage } from '@kbn/i18n-react'; import { css } from '@emotion/react'; import { Redirect, Switch, useHistory, useLocation } from 'react-router-dom'; import { Route } from '@kbn/shared-ux-router'; +import { NoFindingsStates } from '../../components/no_findings_states'; +import { useCspSetupStatusApi } from '../../common/api/use_setup_status_api'; import { Configurations } from '../configurations'; import { cloudPosturePages, findingsNavigation } from '../../common/navigation/constants'; import { Vulnerabilities } from '../vulnerabilities'; @@ -25,6 +27,13 @@ import { Vulnerabilities } from '../vulnerabilities'; export const Findings = () => { const history = useHistory(); const location = useLocation(); + const getSetupStatus = useCspSetupStatusApi(); + + const hasFindings = + getSetupStatus.data?.indicesDetails[0].status === 'not-empty' || + getSetupStatus.data?.kspm.status === 'indexed' || + getSetupStatus.data?.cspm.status === 'indexed'; + if (!hasFindings) return ; const navigateToVulnerabilitiesTab = () => { history.push({ pathname: findingsNavigation.vulnerabilities.path }); diff --git a/x-pack/plugins/cloud_security_posture/server/lib/check_index_status.ts b/x-pack/plugins/cloud_security_posture/server/lib/check_index_status.ts index 984c68a76a6b6..c8d876a7281da 100644 --- a/x-pack/plugins/cloud_security_posture/server/lib/check_index_status.ts +++ b/x-pack/plugins/cloud_security_posture/server/lib/check_index_status.ts @@ -11,14 +11,28 @@ import { IndexStatus } from '../../common/types'; export const checkIndexStatus = async ( esClient: ElasticsearchClient, index: string, - logger: Logger + logger: Logger, + postureType: 'cspm' | 'kspm' | 'all' = 'all' ): Promise => { + const query = + postureType === 'all' + ? { + match_all: {}, + } + : { + bool: { + filter: { + term: { + 'rule.benchmark.posture_type': postureType, + }, + }, + }, + }; + try { const queryResult = await esClient.search({ index, - query: { - match_all: {}, - }, + query, size: 1, }); diff --git a/x-pack/plugins/cloud_security_posture/server/lib/fleet_util.ts b/x-pack/plugins/cloud_security_posture/server/lib/fleet_util.ts index 1b66a4e401311..2696e44c8c025 100644 --- a/x-pack/plugins/cloud_security_posture/server/lib/fleet_util.ts +++ b/x-pack/plugins/cloud_security_posture/server/lib/fleet_util.ts @@ -18,7 +18,7 @@ import type { PackagePolicy, } from '@kbn/fleet-plugin/common'; import { errors } from '@elastic/elasticsearch'; -import type { CloudSecurityPolicyTemplate } from '../../common/types'; +import { CloudSecurityPolicyTemplate, PostureTypes } from '../../common/types'; import { SUPPORTED_POLICY_TEMPLATES } from '../../common/constants'; import { CSP_FLEET_PACKAGE_KUERY } from '../../common/utils/helpers'; import { @@ -34,13 +34,25 @@ const isFleetMissingAgentHttpError = (error: unknown) => const isPolicyTemplate = (input: any): input is CloudSecurityPolicyTemplate => SUPPORTED_POLICY_TEMPLATES.includes(input); -const getPackageNameQuery = (packageName: string, benchmarkFilter?: string): string => { +const getPackageNameQuery = ( + // ADD 3rd case both cspm and kspm, for findings posture type empty => kspm + postureType: string, + packageName: string, + benchmarkFilter?: string +): string => { const integrationNameQuery = `${PACKAGE_POLICY_SAVED_OBJECT_TYPE}.package.name:${packageName}`; - const kquery = benchmarkFilter - ? `${integrationNameQuery} AND ${PACKAGE_POLICY_SAVED_OBJECT_TYPE}.name: *${benchmarkFilter}*` - : integrationNameQuery; - - return kquery; + const integrationPostureType = `${PACKAGE_POLICY_SAVED_OBJECT_TYPE}.vars.posture.value:${postureType}`; + if (postureType === 'all') { + const kquery = benchmarkFilter + ? `${integrationNameQuery} AND ${PACKAGE_POLICY_SAVED_OBJECT_TYPE}.name: *${benchmarkFilter}*` + : `${integrationNameQuery}`; + return kquery; + } else { + const kquery = benchmarkFilter + ? `${integrationNameQuery} AND ${PACKAGE_POLICY_SAVED_OBJECT_TYPE}.name: *${benchmarkFilter}* AND ${integrationPostureType}` + : `${integrationNameQuery} AND ${integrationPostureType}`; + return kquery; + } }; export type AgentStatusByAgentPolicyMap = Record; @@ -86,12 +98,13 @@ export const getCspPackagePolicies = ( soClient: SavedObjectsClientContract, packagePolicyService: PackagePolicyClient, packageName: string, - queryParams: Partial + queryParams: Partial, + postureType: PostureTypes ): Promise> => { const sortField = queryParams.sort_field?.replaceAll(BENCHMARK_PACKAGE_POLICY_PREFIX, ''); return packagePolicyService.list(soClient, { - kuery: getPackageNameQuery(packageName, queryParams.benchmark_name), + kuery: getPackageNameQuery(postureType, packageName, queryParams.benchmark_name), page: queryParams.page, perPage: queryParams.per_page, sortField, @@ -116,7 +129,6 @@ export const getInstalledPolicyTemplates = async ( return policy.inputs.find((input) => input.enabled)?.policy_template; }) .filter(isPolicyTemplate); - // removing duplicates return [...new Set(enabledPolicyTemplates)]; } catch (e) { diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts b/x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts index d8b432bb0391e..210e60919fbca 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts @@ -14,6 +14,7 @@ import { getCspPackagePolicies, getCspAgentPolicies, } from '../../lib/fleet_util'; +import { POSTURE_TYPE_ALL } from '../../../common/constants'; import { defineGetBenchmarksRoute, getRulesCountForPolicy } from './benchmarks'; import { SavedObjectsClientContract, SavedObjectsFindResponse } from '@kbn/core/server'; @@ -157,11 +158,17 @@ describe('benchmarks API', () => { it('should format request by package name', async () => { const mockPackagePolicyService = createPackagePolicyServiceMock(); - await getCspPackagePolicies(mockSoClient, mockPackagePolicyService, 'myPackage', { - page: 1, - per_page: 100, - sort_order: 'desc', - }); + await getCspPackagePolicies( + mockSoClient, + mockPackagePolicyService, + 'myPackage', + { + page: 1, + per_page: 100, + sort_order: 'desc', + }, + POSTURE_TYPE_ALL + ); expect(mockPackagePolicyService.list.mock.calls[0][1]).toMatchObject( expect.objectContaining({ @@ -175,12 +182,18 @@ describe('benchmarks API', () => { it('should build sort request by `sort_field` and default `sort_order`', async () => { const mockAgentPolicyService = createPackagePolicyServiceMock(); - await getCspPackagePolicies(mockSoClient, mockAgentPolicyService, 'myPackage', { - page: 1, - per_page: 100, - sort_field: 'package_policy.name', - sort_order: 'desc', - }); + await getCspPackagePolicies( + mockSoClient, + mockAgentPolicyService, + 'myPackage', + { + page: 1, + per_page: 100, + sort_field: 'package_policy.name', + sort_order: 'desc', + }, + POSTURE_TYPE_ALL + ); expect(mockAgentPolicyService.list.mock.calls[0][1]).toMatchObject( expect.objectContaining({ @@ -196,12 +209,18 @@ describe('benchmarks API', () => { it('should build sort request by `sort_field` and asc `sort_order`', async () => { const mockAgentPolicyService = createPackagePolicyServiceMock(); - await getCspPackagePolicies(mockSoClient, mockAgentPolicyService, 'myPackage', { - page: 1, - per_page: 100, - sort_field: 'package_policy.name', - sort_order: 'asc', - }); + await getCspPackagePolicies( + mockSoClient, + mockAgentPolicyService, + 'myPackage', + { + page: 1, + per_page: 100, + sort_field: 'package_policy.name', + sort_order: 'asc', + }, + POSTURE_TYPE_ALL + ); expect(mockAgentPolicyService.list.mock.calls[0][1]).toMatchObject( expect.objectContaining({ @@ -218,12 +237,18 @@ describe('benchmarks API', () => { it('should format request by benchmark_name', async () => { const mockAgentPolicyService = createPackagePolicyServiceMock(); - await getCspPackagePolicies(mockSoClient, mockAgentPolicyService, 'myPackage', { - page: 1, - per_page: 100, - sort_order: 'desc', - benchmark_name: 'my_cis_benchmark', - }); + await getCspPackagePolicies( + mockSoClient, + mockAgentPolicyService, + 'myPackage', + { + page: 1, + per_page: 100, + sort_order: 'desc', + benchmark_name: 'my_cis_benchmark', + }, + POSTURE_TYPE_ALL + ); expect(mockAgentPolicyService.list.mock.calls[0][1]).toMatchObject( expect.objectContaining({ diff --git a/x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.ts b/x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.ts index cd019c189c76f..6012583104f35 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.ts @@ -12,6 +12,7 @@ import { CSP_RULE_TEMPLATE_SAVED_OBJECT_TYPE } from '../../../common/constants'; import { BENCHMARKS_ROUTE_PATH, CLOUD_SECURITY_POSTURE_PACKAGE_NAME, + POSTURE_TYPE_ALL, } from '../../../common/constants'; import { benchmarksQueryParamsSchema } from '../../../common/schemas/benchmark'; import type { Benchmark } from '../../../common/types'; @@ -104,7 +105,8 @@ export const defineGetBenchmarksRoute = (router: CspRouter): void => cspContext.soClient, cspContext.packagePolicyService, CLOUD_SECURITY_POSTURE_PACKAGE_NAME, - request.query + request.query, + POSTURE_TYPE_ALL ); const agentPolicies = await getCspAgentPolicies( diff --git a/x-pack/plugins/cloud_security_posture/server/routes/status/status.test.ts b/x-pack/plugins/cloud_security_posture/server/routes/status/status.test.ts index 98c6536c277d3..7f1345ced245f 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/status/status.test.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/status/status.test.ts @@ -5,488 +5,143 @@ * 2.0. */ -import { defineGetCspStatusRoute, INDEX_TIMEOUT_IN_MINUTES } from './status'; -import { httpServerMock, httpServiceMock } from '@kbn/core/server/mocks'; -import type { ESSearchResponse } from '@kbn/es-types'; -import { - AgentClient, - AgentPolicyServiceInterface, - AgentService, - PackageClient, - PackagePolicyClient, - PackageService, -} from '@kbn/fleet-plugin/server'; -import { - AgentPolicy, - GetAgentStatusResponse, - Installation, - RegistryPackage, -} from '@kbn/fleet-plugin/common'; -import { createPackagePolicyMock } from '@kbn/fleet-plugin/common/mocks'; -import { createCspRequestHandlerContextMock } from '../../mocks'; -import { errors } from '@elastic/elasticsearch'; - -const mockCspPackageInfo: Installation = { - verification_status: 'verified', - installed_kibana: [], - installed_kibana_space_id: 'default', - installed_es: [], - package_assets: [], - es_index_patterns: { findings: 'logs-cloud_security_posture.findings-*' }, - name: 'cloud_security_posture', - version: '0.0.14', - install_version: '0.0.14', - install_status: 'installed', - install_started_at: '2022-06-16T15:24:58.281Z', - install_source: 'registry', -}; - -const mockLatestCspPackageInfo: RegistryPackage = { - format_version: 'mock', - name: 'cloud_security_posture', - title: 'CIS Kubernetes Benchmark', - version: '0.0.14', - release: 'experimental', - description: 'Check Kubernetes cluster compliance with the Kubernetes CIS benchmark.', - type: 'integration', - download: '/epr/cloud_security_posture/cloud_security_posture-0.0.14.zip', - path: '/package/cloud_security_posture/0.0.14', - policy_templates: [], - owner: { github: 'elastic/cloud-security-posture' }, - categories: ['containers', 'kubernetes'], -}; - -describe('CspSetupStatus route', () => { - const router = httpServiceMock.createRouter(); - let mockContext: ReturnType; - let mockPackagePolicyService: jest.Mocked; - let mockAgentPolicyService: jest.Mocked; - let mockAgentService: jest.Mocked; - let mockAgentClient: jest.Mocked; - let mockPackageService: PackageService; - let mockPackageClient: jest.Mocked; - - beforeEach(() => { - jest.clearAllMocks(); - - mockContext = createCspRequestHandlerContextMock(); - mockPackagePolicyService = mockContext.csp.packagePolicyService; - mockAgentPolicyService = mockContext.csp.agentPolicyService; - mockAgentService = mockContext.csp.agentService; - mockPackageService = mockContext.csp.packageService; - - mockAgentClient = mockAgentService.asInternalUser as jest.Mocked; - mockPackageClient = mockPackageService.asInternalUser as jest.Mocked; - }); - - it('validate the API route path', async () => { - defineGetCspStatusRoute(router); - const [config, _] = router.get.mock.calls[0]; - - expect(config.path).toEqual('/internal/cloud_security_posture/status'); - }); - - const indices = [ - { - index: 'logs-cloud_security_posture.findings-default*', - expected_status: 'not-installed', - }, - { - index: 'logs-cloud_security_posture.findings_latest-default', - expected_status: 'unprivileged', - }, - { - index: 'logs-cloud_security_posture.scores-default', - expected_status: 'unprivileged', - }, - ]; - - indices.forEach((idxTestCase) => { - it( - 'Verify the API result when there are no permissions to index: ' + idxTestCase.index, - async () => { - mockContext.core.elasticsearch.client.asCurrentUser.search.mockResponseImplementation( - (req) => { - if (req?.index === idxTestCase.index) { - throw new errors.ResponseError({ - body: { - error: { - type: 'security_exception', - }, - }, - statusCode: 503, - headers: {}, - warnings: [], - meta: {} as any, - }); - } - - return { - hits: { - hits: [{}], - }, - } as any; - } - ); - mockPackageClient.fetchFindLatestPackage.mockResolvedValueOnce(mockLatestCspPackageInfo); - - mockPackagePolicyService.list.mockResolvedValueOnce({ - items: [], - total: 0, - page: 1, - perPage: 100, - }); - - // Act - defineGetCspStatusRoute(router); - const [_, handler] = router.get.mock.calls[0]; - - const mockResponse = httpServerMock.createResponseFactory(); - const mockRequest = httpServerMock.createKibanaRequest(); - await handler(mockContext, mockRequest, mockResponse); - - // Assert - const [call] = mockResponse.ok.mock.calls; - const body = call[0]?.body; - expect(mockResponse.ok).toHaveBeenCalledTimes(1); - - await expect(body).toMatchObject({ - status: idxTestCase.expected_status, - }); - } +import { calculateCspStatusCode } from './status'; +import { CSPM_POLICY_TEMPLATE } from '../../../common/constants'; + +describe('calculateCspStatusCode test', () => { + it('Verify status when there are no permission', async () => { + const statusCode = calculateCspStatusCode( + CSPM_POLICY_TEMPLATE, + { + findingsLatest: 'unprivileged', + findings: 'unprivileged', + score: 'unprivileged', + }, + 1, + 1, + 1, + ['cspm'] ); + + expect(statusCode).toMatch('unprivileged'); }); - it('Verify the API result when there are findings and no installed policies', async () => { - mockContext.core.elasticsearch.client.asCurrentUser.search.mockResponseOnce({ - hits: { - hits: [{ Findings: 'foo' }], + it('Verify status when there are no findings, no healthy agents and no installed policy templates', async () => { + const statusCode = calculateCspStatusCode( + CSPM_POLICY_TEMPLATE, + { + findingsLatest: 'empty', + findings: 'empty', + score: 'empty', }, - } as unknown as ESSearchResponse); - mockPackageClient.fetchFindLatestPackage.mockResolvedValueOnce(mockLatestCspPackageInfo); - - mockPackagePolicyService.list.mockResolvedValueOnce({ - items: [], - total: 0, - page: 1, - perPage: 100, - }); - - // Act - defineGetCspStatusRoute(router); - const [_, handler] = router.get.mock.calls[0]; - - const mockResponse = httpServerMock.createResponseFactory(); - const mockRequest = httpServerMock.createKibanaRequest(); - await handler(mockContext, mockRequest, mockResponse); - - // Assert - const [call] = mockResponse.ok.mock.calls; - const body = call[0]?.body; - expect(mockResponse.ok).toHaveBeenCalledTimes(1); + 0, + 0, + 0, + [] + ); - await expect(body).toMatchObject({ - status: 'indexed', - latestPackageVersion: '0.0.14', - installedPackagePolicies: 0, - healthyAgents: 0, - installedPackageVersion: undefined, - isPluginInitialized: false, - }); + expect(statusCode).toMatch('not-installed'); }); - it('Verify the API result when there are findings, installed policies, no running agents', async () => { - mockContext.core.elasticsearch.client.asCurrentUser.search.mockResponseOnce({ - hits: { - hits: [{ Findings: 'foo' }], + it('Verify status when there are findings and installed policies but no healthy agents', async () => { + const statusCode = calculateCspStatusCode( + CSPM_POLICY_TEMPLATE, + { + findingsLatest: 'empty', + findings: 'not-empty', + score: 'not-empty', }, - } as unknown as ESSearchResponse); - - mockPackageClient.fetchFindLatestPackage.mockResolvedValueOnce(mockLatestCspPackageInfo); - mockPackageClient.getInstallation.mockResolvedValueOnce(mockCspPackageInfo); - - mockPackagePolicyService.list.mockResolvedValueOnce({ - items: [], - total: 3, - page: 1, - perPage: 100, - }); - - // Act - defineGetCspStatusRoute(router); - const [_, handler] = router.get.mock.calls[0]; - - const mockResponse = httpServerMock.createResponseFactory(); - const mockRequest = httpServerMock.createKibanaRequest(); - await handler(mockContext, mockRequest, mockResponse); - - // Assert - const [call] = mockResponse.ok.mock.calls; - const body = call[0]?.body; - - expect(mockResponse.ok).toHaveBeenCalledTimes(1); + 1, + 0, + 10, + ['cspm'] + ); - await expect(body).toMatchObject({ - status: 'indexed', - latestPackageVersion: '0.0.14', - installedPackagePolicies: 3, - healthyAgents: 0, - installedPackageVersion: '0.0.14', - isPluginInitialized: false, - }); + expect(statusCode).toMatch('not-deployed'); }); - it('Verify the API result when there are findings, installed policies, running agents', async () => { - mockContext.core.elasticsearch.client.asCurrentUser.search.mockResponseOnce({ - hits: { - hits: [{ Findings: 'foo' }], + it('Verify status when there are findings ,installed policies and healthy agents', async () => { + const statusCode = calculateCspStatusCode( + CSPM_POLICY_TEMPLATE, + { + findingsLatest: 'not-empty', + findings: 'not-empty', + score: 'not-empty', }, - } as unknown as ESSearchResponse); - - mockPackageClient.fetchFindLatestPackage.mockResolvedValueOnce(mockLatestCspPackageInfo); - mockPackageClient.getInstallation.mockResolvedValueOnce(mockCspPackageInfo); - - mockPackagePolicyService.list.mockResolvedValueOnce({ - items: [], - total: 3, - page: 1, - perPage: 100, - }); - - mockAgentPolicyService.getByIds.mockResolvedValue([ - { package_policies: createPackagePolicyMock() }, - ] as unknown as AgentPolicy[]); - - mockAgentClient.getAgentStatusForAgentPolicy.mockResolvedValue({ - online: 1, - updating: 0, - } as unknown as GetAgentStatusResponse['results']); - - // Act - defineGetCspStatusRoute(router); - const [_, handler] = router.get.mock.calls[0]; - - const mockResponse = httpServerMock.createResponseFactory(); - const mockRequest = httpServerMock.createKibanaRequest(); - await handler(mockContext, mockRequest, mockResponse); - - // Assert - const [call] = mockResponse.ok.mock.calls; - const body = call[0]!.body; - - expect(mockResponse.ok).toHaveBeenCalledTimes(1); + 1, + 1, + 10, + ['cspm'] + ); - await expect(body).toMatchObject({ - status: 'indexed', - latestPackageVersion: '0.0.14', - installedPackagePolicies: 3, - healthyAgents: 1, - installedPackageVersion: '0.0.14', - isPluginInitialized: false, - }); + expect(statusCode).toMatch('indexed'); }); - it('Verify the API result when there are no findings and no installed policies', async () => { - mockContext.core.elasticsearch.client.asCurrentUser.search.mockResponseOnce({ - hits: { - hits: [], + it('Verify status when there are no findings ,installed policies and no healthy agents', async () => { + const statusCode = calculateCspStatusCode( + CSPM_POLICY_TEMPLATE, + { + findingsLatest: 'empty', + findings: 'empty', + score: 'empty', }, - } as unknown as ESSearchResponse); - mockPackageClient.fetchFindLatestPackage.mockResolvedValueOnce(mockLatestCspPackageInfo); - - mockPackagePolicyService.list.mockResolvedValueOnce({ - items: [], - total: 0, - page: 1, - perPage: 100, - }); - defineGetCspStatusRoute(router); - const [_, handler] = router.get.mock.calls[0]; - - const mockResponse = httpServerMock.createResponseFactory(); - const mockRequest = httpServerMock.createKibanaRequest(); - - // Act - await handler(mockContext, mockRequest, mockResponse); - - // Assert - const [call] = mockResponse.ok.mock.calls; - const body = call[0]!.body; - - expect(mockResponse.ok).toHaveBeenCalledTimes(1); + 1, + 0, + 10, + ['cspm'] + ); - await expect(body).toMatchObject({ - status: 'not-installed', - latestPackageVersion: '0.0.14', - installedPackagePolicies: 0, - healthyAgents: 0, - isPluginInitialized: false, - }); + expect(statusCode).toMatch('not-deployed'); }); - it('Verify the API result when there are no findings, installed agent but no deployed agent', async () => { - mockContext.core.elasticsearch.client.asCurrentUser.search.mockResponseOnce({ - hits: { - hits: [], + it('Verify status when there are installed policies, healthy agents and no findings', async () => { + const statusCode = calculateCspStatusCode( + CSPM_POLICY_TEMPLATE, + { + findingsLatest: 'empty', + findings: 'empty', + score: 'empty', }, - } as unknown as ESSearchResponse); - - mockPackageClient.fetchFindLatestPackage.mockResolvedValueOnce(mockLatestCspPackageInfo); - mockPackageClient.getInstallation.mockResolvedValueOnce(mockCspPackageInfo); - - mockPackagePolicyService.list.mockResolvedValueOnce({ - items: [], - total: 1, - page: 1, - perPage: 100, - }); - - mockAgentPolicyService.getByIds.mockResolvedValue([ - { package_policies: createPackagePolicyMock() }, - ] as unknown as AgentPolicy[]); - - mockAgentClient.getAgentStatusForAgentPolicy.mockResolvedValue({ - online: 0, - updating: 0, - } as unknown as GetAgentStatusResponse['results']); - - // Act - defineGetCspStatusRoute(router); - - const [_, handler] = router.get.mock.calls[0]; - - const mockResponse = httpServerMock.createResponseFactory(); - const mockRequest = httpServerMock.createKibanaRequest(); - await handler(mockContext, mockRequest, mockResponse); - - // Assert - const [call] = mockResponse.ok.mock.calls; - const body = call[0]!.body; - - expect(mockResponse.ok).toHaveBeenCalledTimes(1); + 1, + 1, + 9, + ['cspm'] + ); - await expect(body).toMatchObject({ - status: 'not-deployed', - latestPackageVersion: '0.0.14', - installedPackagePolicies: 1, - healthyAgents: 0, - installedPackageVersion: '0.0.14', - isPluginInitialized: false, - }); + expect(statusCode).toMatch('waiting_for_results'); }); - it('Verify the API result when there are no findings, installed agent, deployed agent, before index timeout', async () => { - mockContext.core.elasticsearch.client.asCurrentUser.search.mockResponseOnce({ - hits: { - hits: [], + it('Verify status when there are installed policies, healthy agents and no findings and been more than 10 minutes', async () => { + const statusCode = calculateCspStatusCode( + CSPM_POLICY_TEMPLATE, + { + findingsLatest: 'empty', + findings: 'empty', + score: 'empty', }, - } as unknown as ESSearchResponse); - mockPackageClient.fetchFindLatestPackage.mockResolvedValueOnce(mockLatestCspPackageInfo); - - const currentTime = new Date(); - mockCspPackageInfo.install_started_at = new Date( - currentTime.setMinutes(currentTime.getMinutes() - INDEX_TIMEOUT_IN_MINUTES + 1) - ).toUTCString(); - - mockPackageClient.getInstallation.mockResolvedValueOnce(mockCspPackageInfo); - - mockPackagePolicyService.list.mockResolvedValueOnce({ - items: [], - total: 1, - page: 1, - perPage: 100, - }); - - mockAgentPolicyService.getByIds.mockResolvedValue([ - { package_policies: createPackagePolicyMock() }, - ] as unknown as AgentPolicy[]); - - mockAgentClient.getAgentStatusForAgentPolicy.mockResolvedValue({ - online: 1, - updating: 0, - } as unknown as GetAgentStatusResponse['results']); - - // Act - defineGetCspStatusRoute(router); - - const [_, handler] = router.get.mock.calls[0]; - - const mockResponse = httpServerMock.createResponseFactory(); - const mockRequest = httpServerMock.createKibanaRequest(); - const [context, req, res] = [mockContext, mockRequest, mockResponse]; - - await handler(context, req, res); - - // Assert - const [call] = mockResponse.ok.mock.calls; - const body = call[0]!.body; - - expect(mockResponse.ok).toHaveBeenCalledTimes(1); + 1, + 1, + 11, + ['cspm'] + ); - await expect(body).toMatchObject({ - status: 'indexing', - latestPackageVersion: '0.0.14', - installedPackagePolicies: 1, - healthyAgents: 1, - installedPackageVersion: '0.0.14', - isPluginInitialized: false, - }); + expect(statusCode).toMatch('index-timeout'); }); - it('Verify the API result when there are no findings, installed agent, deployed agent, after index timeout', async () => { - mockContext.core.elasticsearch.client.asCurrentUser.search.mockResponseOnce({ - hits: { - hits: [], + it('Verify status when there are installed policies, healthy agents past findings but no recent findings', async () => { + const statusCode = calculateCspStatusCode( + CSPM_POLICY_TEMPLATE, + { + findingsLatest: 'empty', + findings: 'not-empty', + score: 'not-empty', }, - } as unknown as ESSearchResponse); - mockPackageClient.fetchFindLatestPackage.mockResolvedValueOnce(mockLatestCspPackageInfo); - - const currentTime = new Date(); - mockCspPackageInfo.install_started_at = new Date( - currentTime.setMinutes(currentTime.getMinutes() - INDEX_TIMEOUT_IN_MINUTES - 1) - ).toUTCString(); - - mockPackageClient.getInstallation.mockResolvedValueOnce(mockCspPackageInfo); - - mockPackagePolicyService.list.mockResolvedValueOnce({ - items: [], - total: 1, - page: 1, - perPage: 100, - }); - - mockAgentPolicyService.getByIds.mockResolvedValue([ - { package_policies: createPackagePolicyMock() }, - ] as unknown as AgentPolicy[]); - - mockAgentClient.getAgentStatusForAgentPolicy.mockResolvedValue({ - online: 1, - updating: 0, - } as unknown as GetAgentStatusResponse['results']); - - // Act - defineGetCspStatusRoute(router); - - const [_, handler] = router.get.mock.calls[0]; - - const mockResponse = httpServerMock.createResponseFactory(); - const mockRequest = httpServerMock.createKibanaRequest(); - - await handler(mockContext, mockRequest, mockResponse); - - // Assert - const [call] = mockResponse.ok.mock.calls; - const body = call[0]!.body; - - expect(mockResponse.ok).toHaveBeenCalledTimes(1); + 1, + 1, + 0, + ['cspm'] + ); - await expect(body).toMatchObject({ - status: 'index-timeout', - latestPackageVersion: '0.0.14', - installedPackagePolicies: 1, - healthyAgents: 1, - installedPackageVersion: '0.0.14', - isPluginInitialized: false, - }); + expect(statusCode).toMatch('indexing'); }); }); diff --git a/x-pack/plugins/cloud_security_posture/server/routes/status/status.ts b/x-pack/plugins/cloud_security_posture/server/routes/status/status.ts index eead1dc267e60..23578194422ee 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/status/status.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/status/status.ts @@ -17,9 +17,16 @@ import { LATEST_FINDINGS_INDEX_DEFAULT_NS, FINDINGS_INDEX_PATTERN, BENCHMARK_SCORE_INDEX_DEFAULT_NS, + KSPM_POLICY_TEMPLATE, + CSPM_POLICY_TEMPLATE, } from '../../../common/constants'; import type { CspApiRequestHandlerContext, CspRouter } from '../../types'; -import type { CspSetupStatus, CspStatusCode, IndexStatus } from '../../../common/types'; +import type { + CspSetupStatus, + CspStatusCode, + IndexStatus, + PostureTypes, +} from '../../../common/types'; import { getAgentStatusesByAgentPolicies, getCspAgentPolicies, @@ -60,7 +67,8 @@ const getHealthyAgents = async ( ); }; -const calculateCspStatusCode = ( +export const calculateCspStatusCode = ( + postureType: PostureTypes, indicesStatus: { findingsLatest: IndexStatus; findings: IndexStatus; @@ -68,23 +76,37 @@ const calculateCspStatusCode = ( }, installedCspPackagePolicies: number, healthyAgents: number, - timeSinceInstallationInMinutes: number + timeSinceInstallationInMinutes: number, + installedPolicyTemplates: string[] ): CspStatusCode => { // We check privileges only for the relevant indices for our pages to appear + const postureTypeCheck = + postureType === CSPM_POLICY_TEMPLATE ? CSPM_POLICY_TEMPLATE : KSPM_POLICY_TEMPLATE; if (indicesStatus.findingsLatest === 'unprivileged' || indicesStatus.score === 'unprivileged') return 'unprivileged'; - if (indicesStatus.findingsLatest === 'not-empty') return 'indexed'; - if (installedCspPackagePolicies === 0) return 'not-installed'; + if (!installedPolicyTemplates.includes(postureTypeCheck)) return 'not-installed'; if (healthyAgents === 0) return 'not-deployed'; - if (timeSinceInstallationInMinutes <= INDEX_TIMEOUT_IN_MINUTES) return 'indexing'; - if (timeSinceInstallationInMinutes > INDEX_TIMEOUT_IN_MINUTES) return 'index-timeout'; + if ( + indicesStatus.findingsLatest === 'empty' && + indicesStatus.findings === 'empty' && + timeSinceInstallationInMinutes < INDEX_TIMEOUT_IN_MINUTES + ) + return 'waiting_for_results'; + if ( + indicesStatus.findingsLatest === 'empty' && + indicesStatus.findings === 'empty' && + timeSinceInstallationInMinutes > INDEX_TIMEOUT_IN_MINUTES + ) + return 'index-timeout'; + if (indicesStatus.findingsLatest === 'empty') return 'indexing'; + if (indicesStatus.findings === 'not-empty') return 'indexed'; throw new Error('Could not determine csp status'); }; const assertResponse = (resp: CspSetupStatus, logger: CspApiRequestHandlerContext['logger']) => { if ( - resp.status === 'unprivileged' && + (resp.cspm.status || resp.kspm.status) === 'unprivileged' && !resp.indicesDetails.some((idxDetails) => idxDetails.status === 'unprivileged') ) { logger.warn('Returned status in `unprivileged` but response is missing the unprivileged index'); @@ -105,31 +127,70 @@ const getCspStatus = async ({ findingsLatestIndexStatus, findingsIndexStatus, scoreIndexStatus, + findingsLatestIndexStatusCspm, + findingsIndexStatusCspm, + scoreIndexStatusCspm, + findingsLatestIndexStatusKspm, + findingsIndexStatusKspm, + scoreIndexStatusKspm, installation, latestCspPackage, - installedPackagePolicies, + installedPackagePoliciesKspm, + installedPackagePoliciesCspm, installedPolicyTemplates, ] = await Promise.all([ checkIndexStatus(esClient.asCurrentUser, LATEST_FINDINGS_INDEX_DEFAULT_NS, logger), checkIndexStatus(esClient.asCurrentUser, FINDINGS_INDEX_PATTERN, logger), checkIndexStatus(esClient.asCurrentUser, BENCHMARK_SCORE_INDEX_DEFAULT_NS, logger), + + checkIndexStatus(esClient.asCurrentUser, LATEST_FINDINGS_INDEX_DEFAULT_NS, logger, 'cspm'), + checkIndexStatus(esClient.asCurrentUser, FINDINGS_INDEX_PATTERN, logger, 'cspm'), + checkIndexStatus(esClient.asCurrentUser, BENCHMARK_SCORE_INDEX_DEFAULT_NS, logger, 'cspm'), + + checkIndexStatus(esClient.asCurrentUser, LATEST_FINDINGS_INDEX_DEFAULT_NS, logger, 'kspm'), + checkIndexStatus(esClient.asCurrentUser, FINDINGS_INDEX_PATTERN, logger, 'kspm'), + checkIndexStatus(esClient.asCurrentUser, BENCHMARK_SCORE_INDEX_DEFAULT_NS, logger, 'kspm'), + packageService.asInternalUser.getInstallation(CLOUD_SECURITY_POSTURE_PACKAGE_NAME), packageService.asInternalUser.fetchFindLatestPackage(CLOUD_SECURITY_POSTURE_PACKAGE_NAME), - getCspPackagePolicies(soClient, packagePolicyService, CLOUD_SECURITY_POSTURE_PACKAGE_NAME, { - per_page: 10000, - }), + getCspPackagePolicies( + soClient, + packagePolicyService, + CLOUD_SECURITY_POSTURE_PACKAGE_NAME, + { + per_page: 10000, + }, + KSPM_POLICY_TEMPLATE + ), + getCspPackagePolicies( + soClient, + packagePolicyService, + CLOUD_SECURITY_POSTURE_PACKAGE_NAME, + { + per_page: 10000, + }, + CSPM_POLICY_TEMPLATE + ), getInstalledPolicyTemplates(packagePolicyService, soClient), ]); - const healthyAgents = await getHealthyAgents( + const healthyAgentsKspm = await getHealthyAgents( soClient, - installedPackagePolicies.items, + installedPackagePoliciesKspm.items, agentPolicyService, agentService, logger ); - const installedPackagePoliciesTotal = installedPackagePolicies.total; + const healthyAgentsCspm = await getHealthyAgents( + soClient, + installedPackagePoliciesCspm.items, + agentPolicyService, + agentService, + logger + ); + const installedPackagePoliciesTotalKspm = installedPackagePoliciesKspm.total; + const installedPackagePoliciesTotalCspm = installedPackagePoliciesCspm.total; const latestCspPackageVersion = latestCspPackage.version; const MIN_DATE = 0; @@ -148,35 +209,62 @@ const getCspStatus = async ({ }, ]; - const status = calculateCspStatusCode( + const statusCspm = calculateCspStatusCode( + CSPM_POLICY_TEMPLATE, + { + findingsLatest: findingsLatestIndexStatusCspm, + findings: findingsIndexStatusCspm, + score: scoreIndexStatusCspm, + }, + installedPackagePoliciesTotalCspm, + healthyAgentsCspm, + calculateDiffFromNowInMinutes(installation?.install_started_at || MIN_DATE), + installedPolicyTemplates + ); + + const statusKspm = calculateCspStatusCode( + KSPM_POLICY_TEMPLATE, { - findingsLatest: findingsLatestIndexStatus, - findings: findingsIndexStatus, - score: scoreIndexStatus, + findingsLatest: findingsLatestIndexStatusKspm, + findings: findingsIndexStatusKspm, + score: scoreIndexStatusKspm, }, - installedPackagePoliciesTotal, - healthyAgents, - calculateDiffFromNowInMinutes(installation?.install_started_at || MIN_DATE) + installedPackagePoliciesTotalKspm, + healthyAgentsKspm, + calculateDiffFromNowInMinutes(installation?.install_started_at || MIN_DATE), + installedPolicyTemplates ); - if (status === 'not-installed') + if ((statusCspm && statusKspm) === 'not-installed') return { - status, + cspm: { + status: statusCspm, + healthyAgents: healthyAgentsCspm, + installedPackagePolicies: installedPackagePoliciesTotalCspm, + }, + kspm: { + status: statusKspm, + healthyAgents: healthyAgentsKspm, + installedPackagePolicies: installedPackagePoliciesTotalKspm, + }, indicesDetails, latestPackageVersion: latestCspPackageVersion, - installedPolicyTemplates, - healthyAgents, - installedPackagePolicies: installedPackagePoliciesTotal, isPluginInitialized: isPluginInitialized(), }; const response = { - status, + cspm: { + status: statusCspm, + healthyAgents: healthyAgentsCspm, + installedPackagePolicies: installedPackagePoliciesTotalCspm, + }, + kspm: { + status: statusKspm, + healthyAgents: healthyAgentsKspm, + installedPackagePolicies: installedPackagePoliciesTotalKspm, + }, indicesDetails, latestPackageVersion: latestCspPackageVersion, - healthyAgents, - installedPolicyTemplates, - installedPackagePolicies: installedPackagePoliciesTotal, installedPackageVersion: installation?.install_version, isPluginInitialized: isPluginInitialized(), }; diff --git a/x-pack/plugins/cloud_security_posture/tsconfig.json b/x-pack/plugins/cloud_security_posture/tsconfig.json index 60c540b422bcd..a0fe377baf69c 100755 --- a/x-pack/plugins/cloud_security_posture/tsconfig.json +++ b/x-pack/plugins/cloud_security_posture/tsconfig.json @@ -42,7 +42,6 @@ "@kbn/utility-types-jest", "@kbn/securitysolution-es-utils", "@kbn/core-elasticsearch-client-server-mocks", - "@kbn/es-types", "@kbn/core-elasticsearch-server", "@kbn/ecs", "@kbn/core-saved-objects-api-server", diff --git a/x-pack/test/api_integration/apis/cloud_security_posture/status.ts b/x-pack/test/api_integration/apis/cloud_security_posture/status.ts index 6d10aa2f60f4a..89ba33449ec16 100644 --- a/x-pack/test/api_integration/apis/cloud_security_posture/status.ts +++ b/x-pack/test/api_integration/apis/cloud_security_posture/status.ts @@ -51,9 +51,10 @@ export default function ({ getService }: FtrProviderContext) { .set('kbn-xsrf', 'xxxx') .expect(200); - expect(res.status).to.be('not-deployed'); - expect(res.installedPolicyTemplates).length(1).contain('kspm'); - expect(res.healthyAgents).to.be(0); + expect(res.kspm.status).to.be('not-deployed'); + expect(res.cspm.status).to.be('not-installed'); + expect(res.kspm.healthyAgents).to.be(0); + expect(res.kspm.installedPackagePolicies).to.be(1); }); it(`Should return not-deployed when installed cspm`, async () => { @@ -71,9 +72,10 @@ export default function ({ getService }: FtrProviderContext) { .set('kbn-xsrf', 'xxxx') .expect(200); - expect(res.status).to.be('not-deployed'); - expect(res.installedPolicyTemplates).length(1).contain('cspm'); - expect(res.healthyAgents).to.be(0); + expect(res.cspm.status).to.be('not-deployed'); + expect(res.kspm.status).to.be('not-installed'); + expect(res.cspm.healthyAgents).to.be(0); + expect(res.cspm.installedPackagePolicies).to.be(1); }); }); } diff --git a/x-pack/test/cloud_security_posture_functional/pages/findings.ts b/x-pack/test/cloud_security_posture_functional/pages/findings.ts index 6a1222ef1e099..010bb788b8c70 100644 --- a/x-pack/test/cloud_security_posture_functional/pages/findings.ts +++ b/x-pack/test/cloud_security_posture_functional/pages/findings.ts @@ -29,6 +29,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { section: 'Upper case section', benchmark: { id: 'cis_k8s', + posture_type: 'kspm', name: 'CIS Kubernetes V1.23', version: 'v1.0.0', }, @@ -44,6 +45,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { section: 'Another upper case section', benchmark: { id: 'cis_k8s', + posture_type: 'kspm', name: 'CIS Kubernetes V1.23', version: 'v1.0.0', }, @@ -59,6 +61,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { section: 'lower case section', benchmark: { id: 'cis_k8s', + posture_type: 'kspm', name: 'CIS Kubernetes V1.23', version: 'v1.0.0', }, @@ -74,6 +77,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { section: 'another lower case section', benchmark: { id: 'cis_k8s', + posture_type: 'kspm', name: 'CIS Kubernetes V1.23', version: 'v1.0.0', }, @@ -105,6 +109,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { resourceFindingsTable = findings.resourceFindingsTable; distributionBar = findings.distributionBar; + await findings.index.remove(); await findings.index.add(data); await findings.navigateToLatestFindingsPage(); await retry.waitFor( From a87c7584696ad83791ce53962de1cf3b99f7dc62 Mon Sep 17 00:00:00 2001 From: Maja Grubic Date: Wed, 22 Mar 2023 18:58:20 -0600 Subject: [PATCH 05/40] [Global settings] Restrict access to users with admin privileges (#153006) ## Summary This PR restricts access to global settings when required capabilities are not in place. The capabilities are: `globalSettings.show` and `globalSettings.save`. ## Testing ### Global All 1. Create a user with the "kibana_admin" role 2. Log in as that user 3. Go to Advanced Settings Should be able to see and save global settings. ### Global Readonly 1. Create a role "kibana_readonly" with Kibana global readonly privileges 2. Create a user with the "kibana_readonly" role 3. Log in as that user 4. Go to Advanced Settings Should be able to see, but not save global settings. ### Checklist Delete any items that are not applicable to this PR. - [ ] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) - [ ] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials - [ ] [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 - [ ] Any UI touched in this PR is usable by keyboard only (learn more about [keyboard accessibility](https://webaim.org/techniques/keyboard/)) - [ ] Any UI touched in this PR does not create any new axe failures (run axe in browser: [FF](https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/), [Chrome](https://chrome.google.com/webstore/detail/axe-web-accessibility-tes/lhdoppojpmngadmnindnejefpokejbdd?hl=en-US)) - [ ] If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the [docker list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker) - [ ] This renders correctly on smaller devices using a responsive layout. (You can test this [in your browser](https://www.browserstack.com/guide/responsive-testing-on-local-server)) - [ ] This was checked for [cross-browser compatibility](https://www.elastic.co/support/matrix#matrix_browsers) ### For maintainers - [ ] 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) --- .../mount_management_section.tsx | 11 ++++-- .../public/management_app/settings.test.tsx | 37 ++++++++++++++++--- .../public/management_app/settings.tsx | 15 +++++--- .../advanced_settings_security.ts | 2 + 4 files changed, 51 insertions(+), 14 deletions(-) diff --git a/src/plugins/advanced_settings/public/management_app/mount_management_section.tsx b/src/plugins/advanced_settings/public/management_app/mount_management_section.tsx index 7372404f2cc80..0e65e1b67b012 100644 --- a/src/plugins/advanced_settings/public/management_app/mount_management_section.tsx +++ b/src/plugins/advanced_settings/public/management_app/mount_management_section.tsx @@ -63,10 +63,12 @@ export async function mountManagementSection( params.setBreadcrumbs(crumb); const [{ settings, notifications, docLinks, application, chrome }] = await getStartServices(); - const canSave = application.capabilities.advancedSettings.save as boolean; + const { advancedSettings, globalSettings } = application.capabilities; + const canSaveAdvancedSettings = advancedSettings.save as boolean; + const canSaveGlobalSettings = globalSettings.save as boolean; + const canShowGlobalSettings = globalSettings.show as boolean; const trackUiMetric = usageCollection?.reportUiCounter.bind(usageCollection, 'advanced_settings'); - - if (!canSave) { + if (!canSaveAdvancedSettings || (!canSaveGlobalSettings && canShowGlobalSettings)) { chrome.setBadge(readOnlyBadge); } @@ -82,7 +84,8 @@ export async function mountManagementSection( ({ Field: () => { @@ -251,7 +252,8 @@ describe('Settings', () => { const component = mountWithI18nProvider( { ).toHaveLength(1); }); - it('should should not render a custom setting', async () => { + it('should not render a custom setting', async () => { // The manual mock for the uiSettings client returns false for isConfig, override that const uiSettings = mockConfig().core.settings.client; uiSettings.isCustom = (key) => true; @@ -279,7 +281,8 @@ describe('Settings', () => { const component = mountWithI18nProvider( { const component = mountWithI18nProvider( { const component = mountWithI18nProvider( { expect(toasts.addWarning).toHaveBeenCalledTimes(1); expect(component.find(Search).prop('query').text).toEqual(''); }); + + it('does not render global settings if show is set to false', async () => { + const badQuery = 'category:(accessibility))'; + mockQuery(badQuery); + const { toasts } = notificationServiceMock.createStartContract(); + + const component = mountWithI18nProvider( + + ); + + expect(component.find(EuiTab).length).toEqual(1); + expect(component.find(EuiTab).at(0).text()).toEqual('Space Settings'); + }); }); diff --git a/src/plugins/advanced_settings/public/management_app/settings.tsx b/src/plugins/advanced_settings/public/management_app/settings.tsx index 9cf81ffff7fe0..0a091aa55a481 100644 --- a/src/plugins/advanced_settings/public/management_app/settings.tsx +++ b/src/plugins/advanced_settings/public/management_app/settings.tsx @@ -45,7 +45,8 @@ export type GroupedSettings = Record; interface Props { history: ScopedHistory; - enableSaving: boolean; + enableSaving: Record; + enableShowing: Record; settingsService: SettingsStart; docLinks: DocLinksStart['links']; toasts: ToastsStart; @@ -58,7 +59,8 @@ const SPACE_SETTINGS_ID = 'space-settings'; const GLOBAL_SETTINGS_ID = 'global-settings'; export const Settings = (props: Props) => { - const { componentRegistry, history, settingsService, ...rest } = props; + const { componentRegistry, history, settingsService, enableSaving, enableShowing, ...rest } = + props; const uiSettings = settingsService.client; const globalUiSettings = settingsService.globalClient; @@ -210,6 +212,7 @@ export const Settings = (props: Props) => { callOutSubtitle={callOutSubtitle(scope)} settingsService={settingsService} uiSettingsClient={getClientForScope(scope)} + enableSaving={enableSaving[scope]} {...rest} /> ); @@ -227,7 +230,9 @@ export const Settings = (props: Props) => { ) : null, content: renderAdvancedSettings('namespace'), }, - { + ]; + if (enableShowing.global) { + tabs.push({ id: GLOBAL_SETTINGS_ID, name: i18nTexts.globalTabTitle, append: @@ -238,8 +243,8 @@ export const Settings = (props: Props) => { ) : null, content: renderAdvancedSettings('global'), - }, - ]; + }); + } const [selectedTabId, setSelectedTabId] = useState(SPACE_SETTINGS_ID); diff --git a/x-pack/test/functional/apps/advanced_settings/feature_controls/advanced_settings_security.ts b/x-pack/test/functional/apps/advanced_settings/feature_controls/advanced_settings_security.ts index fb6f34aa24a14..eb5e34ce0207a 100644 --- a/x-pack/test/functional/apps/advanced_settings/feature_controls/advanced_settings_security.ts +++ b/x-pack/test/functional/apps/advanced_settings/feature_controls/advanced_settings_security.ts @@ -27,6 +27,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { { feature: { advancedSettings: ['all'], + globalSettings: ['all'], }, spaces: ['*'], }, @@ -87,6 +88,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { { feature: { advancedSettings: ['read'], + globalSettings: ['show'], }, spaces: ['*'], }, From 58b36366cae363a64697df7d2e131fbc919af899 Mon Sep 17 00:00:00 2001 From: Xavier Mouligneau Date: Wed, 22 Mar 2023 21:09:22 -0400 Subject: [PATCH 06/40] [RAM] Fix bulk edit references (#153370) ## Summary Fix: https://github.com/elastic/kibana/issues/152961 https://github.com/elastic/kibana/issues/152960 https://github.com/elastic/kibana/issues/153175 ### 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 --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../server/rules_client/methods/bulk_edit.ts | 11 ++- .../group3/tests/alerting/bulk_edit.ts | 78 +++++++++++++++++++ 2 files changed, 87 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/alerting/server/rules_client/methods/bulk_edit.ts b/x-pack/plugins/alerting/server/rules_client/methods/bulk_edit.ts index 4bbe493d93c6b..35c46ace44408 100644 --- a/x-pack/plugins/alerting/server/rules_client/methods/bulk_edit.ts +++ b/x-pack/plugins/alerting/server/rules_client/methods/bulk_edit.ts @@ -46,6 +46,7 @@ import { getBulkSnoozeAttributes, getBulkUnsnoozeAttributes, verifySnoozeScheduleLimit, + injectReferencesIntoParams, } from '../common'; import { alertingAuthorizationFilterOpts, @@ -435,10 +436,16 @@ async function updateRuleAttributesAndParamsInMemory( + rule.id, + ruleType, + attributes.params, + rule.references || [] + ); const { modifiedParams: ruleParams, isParamsUpdateSkipped } = paramsModifier - ? await paramsModifier(attributes.params as Params) + ? await paramsModifier(params) : { - modifiedParams: attributes.params as Params, + modifiedParams: params, isParamsUpdateSkipped: true, }; diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/bulk_edit.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/bulk_edit.ts index 515b5662246b7..2f3f36b9dc34b 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/bulk_edit.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group3/tests/alerting/bulk_edit.ts @@ -610,5 +610,83 @@ export default function createUpdateTests({ getService }: FtrProviderContext) { }); }); } + + describe('do NOT delete reference for rule type like', () => { + const es = getService('es'); + + it('.esquery', async () => { + const space1 = UserAtSpaceScenarios[1].space.id; + const { body: createdRule } = await supertest + .post(`${getUrlPrefix(space1)}/api/alerting/rule`) + .set('kbn-xsrf', 'foo') + .send( + getTestRuleData({ + params: { + searchConfiguration: { + query: { query: 'host.name:*', language: 'kuery' }, + index: 'logs-*', + }, + timeField: '@timestamp', + searchType: 'searchSource', + timeWindowSize: 5, + timeWindowUnit: 'm', + threshold: [1000], + thresholdComparator: '>', + size: 100, + aggType: 'count', + groupBy: 'all', + termSize: 5, + excludeHitsFromPreviousRun: true, + }, + consumer: 'alerts', + schedule: { interval: '1m' }, + tags: [], + name: 'Es Query', + rule_type_id: '.es-query', + actions: [], + }) + ) + .expect(200); + objectRemover.add(space1, createdRule.id, 'rule', 'alerting'); + + const searchRule = () => + es.search<{ references: unknown }>({ + index: '.kibana*', + query: { + bool: { + filter: [ + { + term: { + _id: `alert:${createdRule.id}`, + }, + }, + ], + }, + }, + fields: ['alert.params', 'references'], + }); + + const { + hits: { hits: alertHitsV1 }, + } = await searchRule(); + + await supertest + .post(`${getUrlPrefix(space1)}/internal/alerting/rules/_bulk_edit`) + .set('kbn-xsrf', 'foo') + .send({ + ids: [createdRule.id], + operations: [{ operation: 'set', field: 'apiKey' }], + }); + + const { + hits: { hits: alertHitsV2 }, + } = await searchRule(); + + expect(alertHitsV1[0].fields).to.eql(alertHitsV2[0].fields); + expect(alertHitsV1[0]?._source?.references ?? true).to.eql( + alertHitsV2[0]?._source?.references ?? false + ); + }); + }); }); } From 60462fd31479591aa8e6818599820cc307a6e229 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Thu, 23 Mar 2023 00:54:24 -0400 Subject: [PATCH 07/40] [api-docs] 2023-03-23 Daily api_docs build (#153519) Generated by https://buildkite.com/elastic/kibana-api-docs-daily/builds/285 --- api_docs/actions.mdx | 2 +- api_docs/advanced_settings.mdx | 2 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.mdx | 2 +- api_docs/apm.mdx | 2 +- api_docs/asset_manager.mdx | 2 +- api_docs/banners.mdx | 2 +- api_docs/bfetch.mdx | 2 +- api_docs/canvas.mdx | 2 +- api_docs/cases.mdx | 2 +- api_docs/charts.mdx | 2 +- api_docs/cloud.mdx | 2 +- api_docs/cloud_chat.mdx | 2 +- api_docs/cloud_data_migration.mdx | 2 +- api_docs/cloud_defend.mdx | 2 +- api_docs/cloud_experiments.mdx | 2 +- api_docs/cloud_security_posture.mdx | 2 +- api_docs/console.mdx | 2 +- api_docs/content_management.mdx | 2 +- api_docs/controls.devdocs.json | 34 +++++++------------ api_docs/controls.mdx | 4 +-- api_docs/custom_integrations.mdx | 2 +- api_docs/dashboard.mdx | 2 +- api_docs/dashboard_enhanced.mdx | 2 +- api_docs/data.mdx | 2 +- api_docs/data_query.mdx | 2 +- api_docs/data_search.mdx | 2 +- api_docs/data_view_editor.mdx | 2 +- api_docs/data_view_field_editor.mdx | 2 +- api_docs/data_view_management.mdx | 2 +- api_docs/data_views.mdx | 2 +- api_docs/data_visualizer.mdx | 2 +- api_docs/deprecations_by_api.mdx | 2 +- api_docs/deprecations_by_plugin.mdx | 2 +- api_docs/deprecations_by_team.mdx | 2 +- api_docs/dev_tools.mdx | 2 +- api_docs/discover.mdx | 2 +- api_docs/discover_enhanced.mdx | 2 +- api_docs/ecs_data_quality_dashboard.mdx | 2 +- api_docs/embeddable.mdx | 2 +- api_docs/embeddable_enhanced.mdx | 2 +- api_docs/encrypted_saved_objects.mdx | 2 +- api_docs/enterprise_search.mdx | 2 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/event_annotation.mdx | 2 +- api_docs/event_log.mdx | 2 +- api_docs/expression_error.mdx | 2 +- api_docs/expression_gauge.mdx | 2 +- api_docs/expression_heatmap.mdx | 2 +- api_docs/expression_image.mdx | 2 +- api_docs/expression_legacy_metric_vis.mdx | 2 +- api_docs/expression_metric.mdx | 2 +- api_docs/expression_metric_vis.mdx | 2 +- api_docs/expression_partition_vis.mdx | 2 +- api_docs/expression_repeat_image.mdx | 2 +- api_docs/expression_reveal_image.mdx | 2 +- api_docs/expression_shape.mdx | 2 +- api_docs/expression_tagcloud.mdx | 2 +- api_docs/expression_x_y.mdx | 2 +- api_docs/expressions.mdx | 2 +- api_docs/features.mdx | 2 +- api_docs/field_formats.mdx | 2 +- api_docs/file_upload.mdx | 2 +- api_docs/files.mdx | 2 +- api_docs/files_management.mdx | 2 +- api_docs/fleet.mdx | 2 +- api_docs/global_search.mdx | 2 +- api_docs/guided_onboarding.mdx | 2 +- api_docs/home.mdx | 2 +- api_docs/image_embeddable.mdx | 2 +- api_docs/index_lifecycle_management.mdx | 2 +- api_docs/index_management.mdx | 2 +- api_docs/infra.mdx | 2 +- api_docs/inspector.mdx | 2 +- api_docs/interactive_setup.mdx | 2 +- api_docs/kbn_ace.mdx | 2 +- api_docs/kbn_aiops_components.mdx | 2 +- api_docs/kbn_aiops_utils.mdx | 2 +- api_docs/kbn_alerts.mdx | 2 +- api_docs/kbn_alerts_as_data_utils.mdx | 2 +- api_docs/kbn_alerts_ui_shared.mdx | 2 +- api_docs/kbn_analytics.mdx | 2 +- api_docs/kbn_analytics_client.mdx | 2 +- ..._analytics_shippers_elastic_v3_browser.mdx | 2 +- ...n_analytics_shippers_elastic_v3_common.mdx | 2 +- ...n_analytics_shippers_elastic_v3_server.mdx | 2 +- api_docs/kbn_analytics_shippers_fullstory.mdx | 2 +- api_docs/kbn_analytics_shippers_gainsight.mdx | 2 +- api_docs/kbn_apm_config_loader.mdx | 2 +- api_docs/kbn_apm_synthtrace.mdx | 2 +- api_docs/kbn_apm_synthtrace_client.mdx | 2 +- api_docs/kbn_apm_utils.mdx | 2 +- api_docs/kbn_axe_config.mdx | 2 +- api_docs/kbn_cases_components.mdx | 2 +- api_docs/kbn_cell_actions.mdx | 2 +- api_docs/kbn_chart_expressions_common.mdx | 2 +- api_docs/kbn_chart_icons.mdx | 2 +- api_docs/kbn_ci_stats_core.mdx | 2 +- api_docs/kbn_ci_stats_performance_metrics.mdx | 2 +- api_docs/kbn_ci_stats_reporter.mdx | 2 +- api_docs/kbn_cli_dev_mode.mdx | 2 +- api_docs/kbn_code_editor.mdx | 2 +- api_docs/kbn_code_editor_mocks.mdx | 2 +- api_docs/kbn_coloring.mdx | 2 +- api_docs/kbn_config.mdx | 2 +- api_docs/kbn_config_mocks.mdx | 2 +- api_docs/kbn_config_schema.mdx | 2 +- .../kbn_content_management_content_editor.mdx | 2 +- .../kbn_content_management_table_list.mdx | 2 +- api_docs/kbn_core_analytics_browser.mdx | 2 +- .../kbn_core_analytics_browser_internal.mdx | 2 +- api_docs/kbn_core_analytics_browser_mocks.mdx | 2 +- api_docs/kbn_core_analytics_server.mdx | 2 +- .../kbn_core_analytics_server_internal.mdx | 2 +- api_docs/kbn_core_analytics_server_mocks.mdx | 2 +- api_docs/kbn_core_application_browser.mdx | 2 +- .../kbn_core_application_browser_internal.mdx | 2 +- .../kbn_core_application_browser_mocks.mdx | 2 +- api_docs/kbn_core_application_common.mdx | 2 +- api_docs/kbn_core_apps_browser_internal.mdx | 2 +- api_docs/kbn_core_apps_browser_mocks.mdx | 2 +- api_docs/kbn_core_apps_server_internal.mdx | 2 +- api_docs/kbn_core_base_browser_mocks.mdx | 2 +- api_docs/kbn_core_base_common.mdx | 2 +- api_docs/kbn_core_base_server_internal.mdx | 2 +- api_docs/kbn_core_base_server_mocks.mdx | 2 +- .../kbn_core_capabilities_browser_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_common.mdx | 2 +- api_docs/kbn_core_capabilities_server.mdx | 2 +- .../kbn_core_capabilities_server_mocks.mdx | 2 +- api_docs/kbn_core_chrome_browser.mdx | 2 +- api_docs/kbn_core_chrome_browser_mocks.mdx | 2 +- api_docs/kbn_core_config_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser.mdx | 2 +- ..._core_custom_branding_browser_internal.mdx | 2 +- ...kbn_core_custom_branding_browser_mocks.mdx | 2 +- api_docs/kbn_core_custom_branding_common.mdx | 2 +- api_docs/kbn_core_custom_branding_server.mdx | 2 +- ...n_core_custom_branding_server_internal.mdx | 2 +- .../kbn_core_custom_branding_server_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_browser.mdx | 2 +- ...kbn_core_deprecations_browser_internal.mdx | 2 +- .../kbn_core_deprecations_browser_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_common.mdx | 2 +- api_docs/kbn_core_deprecations_server.mdx | 2 +- .../kbn_core_deprecations_server_internal.mdx | 2 +- .../kbn_core_deprecations_server_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_browser.mdx | 2 +- api_docs/kbn_core_doc_links_browser_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_server.mdx | 2 +- api_docs/kbn_core_doc_links_server_mocks.mdx | 2 +- ...e_elasticsearch_client_server_internal.mdx | 2 +- ...core_elasticsearch_client_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_server.mdx | 2 +- ...kbn_core_elasticsearch_server_internal.mdx | 2 +- .../kbn_core_elasticsearch_server_mocks.mdx | 2 +- .../kbn_core_environment_server_internal.mdx | 2 +- .../kbn_core_environment_server_mocks.mdx | 2 +- .../kbn_core_execution_context_browser.mdx | 2 +- ...ore_execution_context_browser_internal.mdx | 2 +- ...n_core_execution_context_browser_mocks.mdx | 2 +- .../kbn_core_execution_context_common.mdx | 2 +- .../kbn_core_execution_context_server.mdx | 2 +- ...core_execution_context_server_internal.mdx | 2 +- ...bn_core_execution_context_server_mocks.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser.mdx | 2 +- .../kbn_core_fatal_errors_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_browser.mdx | 2 +- api_docs/kbn_core_http_browser_internal.mdx | 2 +- api_docs/kbn_core_http_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_common.mdx | 2 +- .../kbn_core_http_context_server_mocks.mdx | 2 +- ...re_http_request_handler_context_server.mdx | 2 +- api_docs/kbn_core_http_resources_server.mdx | 2 +- ...bn_core_http_resources_server_internal.mdx | 2 +- .../kbn_core_http_resources_server_mocks.mdx | 2 +- .../kbn_core_http_router_server_internal.mdx | 2 +- .../kbn_core_http_router_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server.mdx | 2 +- api_docs/kbn_core_http_server_internal.mdx | 2 +- api_docs/kbn_core_http_server_mocks.mdx | 2 +- api_docs/kbn_core_i18n_browser.mdx | 2 +- api_docs/kbn_core_i18n_browser_mocks.mdx | 2 +- api_docs/kbn_core_i18n_server.mdx | 2 +- api_docs/kbn_core_i18n_server_internal.mdx | 2 +- api_docs/kbn_core_i18n_server_mocks.mdx | 2 +- ...n_core_injected_metadata_browser_mocks.mdx | 2 +- ...kbn_core_integrations_browser_internal.mdx | 2 +- .../kbn_core_integrations_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_browser.mdx | 2 +- api_docs/kbn_core_lifecycle_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_server.mdx | 2 +- api_docs/kbn_core_lifecycle_server_mocks.mdx | 2 +- api_docs/kbn_core_logging_browser_mocks.mdx | 2 +- api_docs/kbn_core_logging_common_internal.mdx | 2 +- api_docs/kbn_core_logging_server.mdx | 2 +- api_docs/kbn_core_logging_server_internal.mdx | 2 +- api_docs/kbn_core_logging_server_mocks.mdx | 2 +- ...ore_metrics_collectors_server_internal.mdx | 2 +- ...n_core_metrics_collectors_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_server.mdx | 2 +- api_docs/kbn_core_metrics_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_server_mocks.mdx | 2 +- api_docs/kbn_core_mount_utils_browser.mdx | 2 +- api_docs/kbn_core_node_server.mdx | 2 +- api_docs/kbn_core_node_server_internal.mdx | 2 +- api_docs/kbn_core_node_server_mocks.mdx | 2 +- api_docs/kbn_core_notifications_browser.mdx | 2 +- ...bn_core_notifications_browser_internal.mdx | 2 +- .../kbn_core_notifications_browser_mocks.mdx | 2 +- api_docs/kbn_core_overlays_browser.mdx | 2 +- .../kbn_core_overlays_browser_internal.mdx | 2 +- api_docs/kbn_core_overlays_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_browser.mdx | 2 +- api_docs/kbn_core_plugins_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_server.mdx | 2 +- api_docs/kbn_core_plugins_server_mocks.mdx | 2 +- api_docs/kbn_core_preboot_server.mdx | 2 +- api_docs/kbn_core_preboot_server_mocks.mdx | 2 +- api_docs/kbn_core_rendering_browser_mocks.mdx | 2 +- .../kbn_core_rendering_server_internal.mdx | 2 +- api_docs/kbn_core_rendering_server_mocks.mdx | 2 +- api_docs/kbn_core_root_server_internal.mdx | 2 +- .../kbn_core_saved_objects_api_browser.mdx | 2 +- .../kbn_core_saved_objects_api_server.mdx | 2 +- ...core_saved_objects_api_server_internal.mdx | 2 +- ...bn_core_saved_objects_api_server_mocks.mdx | 2 +- ...ore_saved_objects_base_server_internal.mdx | 2 +- ...n_core_saved_objects_base_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_browser.mdx | 2 +- ...bn_core_saved_objects_browser_internal.mdx | 2 +- .../kbn_core_saved_objects_browser_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_common.mdx | 2 +- ..._objects_import_export_server_internal.mdx | 2 +- ...ved_objects_import_export_server_mocks.mdx | 2 +- ...aved_objects_migration_server_internal.mdx | 2 +- ...e_saved_objects_migration_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_server.mdx | 2 +- ...kbn_core_saved_objects_server_internal.mdx | 2 +- .../kbn_core_saved_objects_server_mocks.mdx | 2 +- .../kbn_core_saved_objects_utils_server.mdx | 2 +- api_docs/kbn_core_status_common.mdx | 2 +- api_docs/kbn_core_status_common_internal.mdx | 2 +- api_docs/kbn_core_status_server.mdx | 2 +- api_docs/kbn_core_status_server_internal.mdx | 2 +- api_docs/kbn_core_status_server_mocks.mdx | 2 +- ...core_test_helpers_deprecations_getters.mdx | 2 +- ...n_core_test_helpers_http_setup_browser.mdx | 2 +- api_docs/kbn_core_test_helpers_kbn_server.mdx | 2 +- ...n_core_test_helpers_so_type_serializer.mdx | 2 +- api_docs/kbn_core_test_helpers_test_utils.mdx | 2 +- api_docs/kbn_core_theme_browser.mdx | 2 +- api_docs/kbn_core_theme_browser_internal.mdx | 2 +- api_docs/kbn_core_theme_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_browser.mdx | 2 +- .../kbn_core_ui_settings_browser_internal.mdx | 2 +- .../kbn_core_ui_settings_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_common.mdx | 2 +- api_docs/kbn_core_ui_settings_server.mdx | 2 +- .../kbn_core_ui_settings_server_internal.mdx | 2 +- .../kbn_core_ui_settings_server_mocks.mdx | 2 +- api_docs/kbn_core_usage_data_server.mdx | 2 +- .../kbn_core_usage_data_server_internal.mdx | 2 +- api_docs/kbn_core_usage_data_server_mocks.mdx | 2 +- api_docs/kbn_crypto.mdx | 2 +- api_docs/kbn_crypto_browser.mdx | 2 +- api_docs/kbn_cypress_config.mdx | 2 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_dev_cli_errors.mdx | 2 +- api_docs/kbn_dev_cli_runner.mdx | 2 +- api_docs/kbn_dev_proc_runner.mdx | 2 +- api_docs/kbn_dev_utils.mdx | 2 +- api_docs/kbn_doc_links.mdx | 2 +- api_docs/kbn_docs_utils.mdx | 2 +- api_docs/kbn_ebt_tools.mdx | 2 +- api_docs/kbn_ecs.mdx | 2 +- api_docs/kbn_ecs_data_quality_dashboard.mdx | 2 +- api_docs/kbn_es.mdx | 2 +- api_docs/kbn_es_archiver.mdx | 2 +- api_docs/kbn_es_errors.mdx | 2 +- api_docs/kbn_es_query.mdx | 2 +- api_docs/kbn_es_types.mdx | 2 +- api_docs/kbn_eslint_plugin_imports.mdx | 2 +- api_docs/kbn_expandable_flyout.mdx | 2 +- api_docs/kbn_field_types.mdx | 2 +- api_docs/kbn_find_used_node_modules.mdx | 2 +- .../kbn_ftr_common_functional_services.mdx | 2 +- api_docs/kbn_generate.mdx | 2 +- api_docs/kbn_guided_onboarding.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_hapi_mocks.mdx | 2 +- api_docs/kbn_health_gateway_server.mdx | 2 +- api_docs/kbn_home_sample_data_card.mdx | 2 +- api_docs/kbn_home_sample_data_tab.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_i18n_react.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_journeys.mdx | 2 +- api_docs/kbn_json_ast.mdx | 2 +- api_docs/kbn_kibana_manifest_schema.mdx | 2 +- .../kbn_language_documentation_popover.mdx | 2 +- api_docs/kbn_logging.mdx | 2 +- api_docs/kbn_logging_mocks.mdx | 2 +- api_docs/kbn_managed_vscode_config.mdx | 2 +- api_docs/kbn_mapbox_gl.mdx | 2 +- api_docs/kbn_ml_agg_utils.mdx | 2 +- api_docs/kbn_ml_date_picker.mdx | 2 +- api_docs/kbn_ml_is_defined.mdx | 2 +- api_docs/kbn_ml_is_populated_object.mdx | 2 +- api_docs/kbn_ml_local_storage.mdx | 2 +- api_docs/kbn_ml_nested_property.mdx | 2 +- api_docs/kbn_ml_query_utils.mdx | 2 +- api_docs/kbn_ml_string_hash.mdx | 2 +- api_docs/kbn_ml_url_state.mdx | 2 +- api_docs/kbn_monaco.mdx | 2 +- api_docs/kbn_object_versioning.mdx | 2 +- api_docs/kbn_optimizer.mdx | 2 +- api_docs/kbn_optimizer_webpack_helpers.mdx | 2 +- api_docs/kbn_osquery_io_ts_types.mdx | 2 +- ..._performance_testing_dataset_extractor.mdx | 2 +- api_docs/kbn_plugin_generator.mdx | 2 +- api_docs/kbn_plugin_helpers.mdx | 2 +- api_docs/kbn_react_field.mdx | 2 +- api_docs/kbn_repo_file_maps.mdx | 2 +- api_docs/kbn_repo_linter.mdx | 2 +- api_docs/kbn_repo_path.mdx | 2 +- api_docs/kbn_repo_source_classifier.mdx | 2 +- api_docs/kbn_rison.mdx | 2 +- api_docs/kbn_rule_data_utils.mdx | 2 +- api_docs/kbn_security_solution_side_nav.mdx | 2 +- ...kbn_security_solution_storybook_config.mdx | 2 +- .../kbn_securitysolution_autocomplete.mdx | 2 +- api_docs/kbn_securitysolution_ecs.mdx | 2 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- ...ritysolution_exception_list_components.mdx | 2 +- api_docs/kbn_securitysolution_grouping.mdx | 2 +- api_docs/kbn_securitysolution_hook_utils.mdx | 2 +- ..._securitysolution_io_ts_alerting_types.mdx | 2 +- .../kbn_securitysolution_io_ts_list_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_utils.mdx | 2 +- api_docs/kbn_securitysolution_list_api.mdx | 2 +- .../kbn_securitysolution_list_constants.mdx | 2 +- api_docs/kbn_securitysolution_list_hooks.mdx | 2 +- api_docs/kbn_securitysolution_list_utils.mdx | 2 +- api_docs/kbn_securitysolution_rules.mdx | 2 +- api_docs/kbn_securitysolution_t_grid.mdx | 2 +- api_docs/kbn_securitysolution_utils.mdx | 2 +- api_docs/kbn_server_http_tools.mdx | 2 +- api_docs/kbn_server_route_repository.mdx | 2 +- api_docs/kbn_shared_svg.mdx | 2 +- api_docs/kbn_shared_ux_avatar_solution.mdx | 2 +- ...ared_ux_avatar_user_profile_components.mdx | 2 +- .../kbn_shared_ux_button_exit_full_screen.mdx | 2 +- ...hared_ux_button_exit_full_screen_mocks.mdx | 2 +- api_docs/kbn_shared_ux_button_toolbar.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_context.mdx | 2 +- api_docs/kbn_shared_ux_file_image.mdx | 2 +- api_docs/kbn_shared_ux_file_image_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_picker.mdx | 2 +- api_docs/kbn_shared_ux_file_types.mdx | 2 +- api_docs/kbn_shared_ux_file_upload.mdx | 2 +- api_docs/kbn_shared_ux_file_util.mdx | 2 +- api_docs/kbn_shared_ux_link_redirect_app.mdx | 2 +- .../kbn_shared_ux_link_redirect_app_mocks.mdx | 2 +- api_docs/kbn_shared_ux_markdown.mdx | 2 +- api_docs/kbn_shared_ux_markdown_mocks.mdx | 2 +- .../kbn_shared_ux_page_analytics_no_data.mdx | 2 +- ...shared_ux_page_analytics_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_no_data.mdx | 2 +- ...bn_shared_ux_page_kibana_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_template.mdx | 2 +- ...n_shared_ux_page_kibana_template_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data.mdx | 2 +- .../kbn_shared_ux_page_no_data_config.mdx | 2 +- ...bn_shared_ux_page_no_data_config_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_solution_nav.mdx | 2 +- .../kbn_shared_ux_prompt_no_data_views.mdx | 2 +- ...n_shared_ux_prompt_no_data_views_mocks.mdx | 2 +- api_docs/kbn_shared_ux_prompt_not_found.mdx | 2 +- api_docs/kbn_shared_ux_router.mdx | 2 +- api_docs/kbn_shared_ux_router_mocks.mdx | 2 +- api_docs/kbn_shared_ux_storybook_config.mdx | 2 +- api_docs/kbn_shared_ux_storybook_mock.mdx | 2 +- api_docs/kbn_shared_ux_utility.mdx | 2 +- api_docs/kbn_slo_schema.mdx | 2 +- api_docs/kbn_some_dev_log.mdx | 2 +- api_docs/kbn_std.mdx | 2 +- api_docs/kbn_stdio_dev_helpers.mdx | 2 +- api_docs/kbn_storybook.mdx | 2 +- api_docs/kbn_telemetry_tools.mdx | 2 +- api_docs/kbn_test.mdx | 2 +- api_docs/kbn_test_jest_helpers.mdx | 2 +- api_docs/kbn_test_subj_selector.mdx | 2 +- api_docs/kbn_tooling_log.mdx | 2 +- api_docs/kbn_ts_projects.mdx | 2 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_actions_browser.mdx | 2 +- api_docs/kbn_ui_shared_deps_src.mdx | 2 +- api_docs/kbn_ui_theme.mdx | 2 +- api_docs/kbn_user_profile_components.mdx | 2 +- api_docs/kbn_utility_types.mdx | 2 +- api_docs/kbn_utility_types_jest.mdx | 2 +- api_docs/kbn_utils.mdx | 2 +- api_docs/kbn_yarn_lock_validator.mdx | 2 +- api_docs/kibana_overview.mdx | 2 +- api_docs/kibana_react.mdx | 2 +- api_docs/kibana_utils.mdx | 2 +- api_docs/kubernetes_security.mdx | 2 +- api_docs/lens.mdx | 2 +- api_docs/license_api_guard.mdx | 2 +- api_docs/license_management.mdx | 2 +- api_docs/licensing.mdx | 2 +- api_docs/lists.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.mdx | 2 +- api_docs/maps_ems.mdx | 2 +- api_docs/ml.mdx | 2 +- api_docs/monitoring.mdx | 2 +- api_docs/monitoring_collection.mdx | 2 +- api_docs/navigation.mdx | 2 +- api_docs/newsfeed.mdx | 2 +- api_docs/notifications.mdx | 2 +- api_docs/observability.devdocs.json | 31 ----------------- api_docs/observability.mdx | 4 +-- api_docs/osquery.mdx | 2 +- api_docs/plugin_directory.mdx | 8 ++--- api_docs/presentation_util.mdx | 2 +- api_docs/profiling.mdx | 2 +- api_docs/remote_clusters.mdx | 2 +- api_docs/reporting.mdx | 2 +- api_docs/rollup.mdx | 2 +- api_docs/rule_registry.mdx | 2 +- api_docs/runtime_fields.mdx | 2 +- api_docs/saved_objects.mdx | 2 +- api_docs/saved_objects_finder.mdx | 2 +- api_docs/saved_objects_management.mdx | 2 +- api_docs/saved_objects_tagging.mdx | 2 +- api_docs/saved_objects_tagging_oss.mdx | 2 +- api_docs/saved_search.mdx | 2 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/security.mdx | 2 +- api_docs/security_solution.mdx | 2 +- api_docs/session_view.mdx | 2 +- api_docs/share.mdx | 2 +- api_docs/snapshot_restore.mdx | 2 +- api_docs/spaces.mdx | 2 +- api_docs/stack_alerts.mdx | 2 +- api_docs/stack_connectors.mdx | 2 +- api_docs/task_manager.mdx | 2 +- api_docs/telemetry.mdx | 2 +- api_docs/telemetry_collection_manager.mdx | 2 +- api_docs/telemetry_collection_xpack.mdx | 2 +- api_docs/telemetry_management_section.mdx | 2 +- api_docs/threat_intelligence.mdx | 2 +- api_docs/timelines.mdx | 2 +- api_docs/transform.mdx | 2 +- api_docs/triggers_actions_ui.mdx | 2 +- api_docs/ui_actions.mdx | 2 +- api_docs/ui_actions_enhanced.mdx | 2 +- api_docs/unified_field_list.mdx | 2 +- api_docs/unified_histogram.mdx | 2 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.mdx | 2 +- api_docs/url_forwarding.mdx | 2 +- api_docs/usage_collection.mdx | 2 +- api_docs/ux.mdx | 2 +- api_docs/vis_default_editor.mdx | 2 +- api_docs/vis_type_gauge.mdx | 2 +- api_docs/vis_type_heatmap.mdx | 2 +- api_docs/vis_type_pie.mdx | 2 +- api_docs/vis_type_table.mdx | 2 +- api_docs/vis_type_timelion.mdx | 2 +- api_docs/vis_type_timeseries.mdx | 2 +- api_docs/vis_type_vega.mdx | 2 +- api_docs/vis_type_vislib.mdx | 2 +- api_docs/vis_type_xy.mdx | 2 +- api_docs/visualizations.mdx | 2 +- 486 files changed, 502 insertions(+), 541 deletions(-) diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index cff8610834e8b..c0452cef7eff2 100644 --- a/api_docs/actions.mdx +++ b/api_docs/actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/actions title: "actions" image: https://source.unsplash.com/400x175/?github description: API docs for the actions plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] --- import actionsObj from './actions.devdocs.json'; diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index 1db0be7b9ac93..7d42925ee2507 100644 --- a/api_docs/advanced_settings.mdx +++ b/api_docs/advanced_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/advancedSettings title: "advancedSettings" image: https://source.unsplash.com/400x175/?github description: API docs for the advancedSettings plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index bf34fd9f90569..ed692ce65d99b 100644 --- a/api_docs/aiops.mdx +++ b/api_docs/aiops.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiops title: "aiops" image: https://source.unsplash.com/400x175/?github description: API docs for the aiops plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index fcf644272a8b7..6a57fd329e9f2 100644 --- a/api_docs/alerting.mdx +++ b/api_docs/alerting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/alerting title: "alerting" image: https://source.unsplash.com/400x175/?github description: API docs for the alerting plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index e4d29146e8faf..55833a2b0b00c 100644 --- a/api_docs/apm.mdx +++ b/api_docs/apm.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apm title: "apm" image: https://source.unsplash.com/400x175/?github description: API docs for the apm plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx index f944d9e0993e9..4b2b1cf108c00 100644 --- a/api_docs/asset_manager.mdx +++ b/api_docs/asset_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/assetManager title: "assetManager" image: https://source.unsplash.com/400x175/?github description: API docs for the assetManager plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'assetManager'] --- import assetManagerObj from './asset_manager.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index 3786a77924aca..1b0375a7776c0 100644 --- a/api_docs/banners.mdx +++ b/api_docs/banners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/banners title: "banners" image: https://source.unsplash.com/400x175/?github description: API docs for the banners plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners'] --- import bannersObj from './banners.devdocs.json'; diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx index 5527dfaca5967..f4ada6aeb2e7c 100644 --- a/api_docs/bfetch.mdx +++ b/api_docs/bfetch.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/bfetch title: "bfetch" image: https://source.unsplash.com/400x175/?github description: API docs for the bfetch plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch'] --- import bfetchObj from './bfetch.devdocs.json'; diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index cbbfbfc580fbb..a4f93359cbffd 100644 --- a/api_docs/canvas.mdx +++ b/api_docs/canvas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/canvas title: "canvas" image: https://source.unsplash.com/400x175/?github description: API docs for the canvas plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index 25070d04cfa7b..55bfec4c813fd 100644 --- a/api_docs/cases.mdx +++ b/api_docs/cases.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cases title: "cases" image: https://source.unsplash.com/400x175/?github description: API docs for the cases plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index 5cd2cba31e0c6..ce3761f54fc17 100644 --- a/api_docs/charts.mdx +++ b/api_docs/charts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/charts title: "charts" image: https://source.unsplash.com/400x175/?github description: API docs for the charts plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts'] --- import chartsObj from './charts.devdocs.json'; diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx index 079d5428a314b..01972086aa105 100644 --- a/api_docs/cloud.mdx +++ b/api_docs/cloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloud title: "cloud" image: https://source.unsplash.com/400x175/?github description: API docs for the cloud plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_chat.mdx b/api_docs/cloud_chat.mdx index 793999685b3c8..de01778b80175 100644 --- a/api_docs/cloud_chat.mdx +++ b/api_docs/cloud_chat.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudChat title: "cloudChat" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudChat plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudChat'] --- import cloudChatObj from './cloud_chat.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index f05c02fedc6fd..f39897eac88fe 100644 --- a/api_docs/cloud_data_migration.mdx +++ b/api_docs/cloud_data_migration.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDataMigration title: "cloudDataMigration" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDataMigration plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDataMigration'] --- import cloudDataMigrationObj from './cloud_data_migration.devdocs.json'; diff --git a/api_docs/cloud_defend.mdx b/api_docs/cloud_defend.mdx index 82c521e9fbda5..9f591d8cf8f92 100644 --- a/api_docs/cloud_defend.mdx +++ b/api_docs/cloud_defend.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDefend title: "cloudDefend" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDefend plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDefend'] --- import cloudDefendObj from './cloud_defend.devdocs.json'; diff --git a/api_docs/cloud_experiments.mdx b/api_docs/cloud_experiments.mdx index 9fd200a533a3d..384802a2d039a 100644 --- a/api_docs/cloud_experiments.mdx +++ b/api_docs/cloud_experiments.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudExperiments title: "cloudExperiments" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudExperiments plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudExperiments'] --- import cloudExperimentsObj from './cloud_experiments.devdocs.json'; diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index aed8b1d76d37c..e199b2435f63a 100644 --- a/api_docs/cloud_security_posture.mdx +++ b/api_docs/cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture title: "cloudSecurityPosture" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudSecurityPosture plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture'] --- import cloudSecurityPostureObj from './cloud_security_posture.devdocs.json'; diff --git a/api_docs/console.mdx b/api_docs/console.mdx index 0cb31a520531c..5d4180a13f852 100644 --- a/api_docs/console.mdx +++ b/api_docs/console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/console title: "console" image: https://source.unsplash.com/400x175/?github description: API docs for the console plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console'] --- import consoleObj from './console.devdocs.json'; diff --git a/api_docs/content_management.mdx b/api_docs/content_management.mdx index 09d4ef4e2d8de..d21a7a31dfc5b 100644 --- a/api_docs/content_management.mdx +++ b/api_docs/content_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/contentManagement title: "contentManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the contentManagement plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'contentManagement'] --- import contentManagementObj from './content_management.devdocs.json'; diff --git a/api_docs/controls.devdocs.json b/api_docs/controls.devdocs.json index 4a591e0528e1e..9b8b0ed06703b 100644 --- a/api_docs/controls.devdocs.json +++ b/api_docs/controls.devdocs.json @@ -576,35 +576,27 @@ }, { "parentPluginId": "controls", - "id": "def-public.ControlGroupContainer.getEditControlGroupButton", + "id": "def-public.ControlGroupContainer.openEditControlGroupFlyout", "type": "Function", "tags": [], - "label": "getEditControlGroupButton", + "label": "openEditControlGroupFlyout", "description": [], "signature": [ - "(closePopover: () => void) => JSX.Element" + "(this: ", + { + "pluginId": "controls", + "scope": "public", + "docId": "kibControlsPluginApi", + "section": "def-public.ControlGroupContainer", + "text": "ControlGroupContainer" + }, + ") => void" ], "path": "src/plugins/controls/public/control_group/embeddable/control_group_container.tsx", "deprecated": false, "trackAdoption": false, - "children": [ - { - "parentPluginId": "controls", - "id": "def-public.ControlGroupContainer.getEditControlGroupButton.$1", - "type": "Function", - "tags": [], - "label": "closePopover", - "description": [], - "signature": [ - "() => void" - ], - "path": "src/plugins/controls/public/control_group/embeddable/control_group_container.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] + "returnComment": [], + "children": [] }, { "parentPluginId": "controls", diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index 08c45540f2611..ae3910f1eaefd 100644 --- a/api_docs/controls.mdx +++ b/api_docs/controls.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/controls title: "controls" image: https://source.unsplash.com/400x175/?github description: API docs for the controls plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls'] --- import controlsObj from './controls.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kib | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 274 | 0 | 270 | 11 | +| 273 | 0 | 269 | 11 | ## Client diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index d1e4740380bec..b82e626c4489f 100644 --- a/api_docs/custom_integrations.mdx +++ b/api_docs/custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/customIntegrations title: "customIntegrations" image: https://source.unsplash.com/400x175/?github description: API docs for the customIntegrations plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations'] --- import customIntegrationsObj from './custom_integrations.devdocs.json'; diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx index c5f49d6106eff..14b34d2a7db02 100644 --- a/api_docs/dashboard.mdx +++ b/api_docs/dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboard title: "dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboard plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard'] --- import dashboardObj from './dashboard.devdocs.json'; diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx index ddd5ea714b02b..b27a6fb3accc1 100644 --- a/api_docs/dashboard_enhanced.mdx +++ b/api_docs/dashboard_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced title: "dashboardEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboardEnhanced plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.mdx b/api_docs/data.mdx index ddb510d9cbbec..acd7fed5bedc1 100644 --- a/api_docs/data.mdx +++ b/api_docs/data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data title: "data" image: https://source.unsplash.com/400x175/?github description: API docs for the data plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index 3ca3843812ff0..2f67d902bf63d 100644 --- a/api_docs/data_query.mdx +++ b/api_docs/data_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-query title: "data.query" image: https://source.unsplash.com/400x175/?github description: API docs for the data.query plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index 81880f9c96f90..32da566600603 100644 --- a/api_docs/data_search.mdx +++ b/api_docs/data_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-search title: "data.search" image: https://source.unsplash.com/400x175/?github description: API docs for the data.search plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index 6b287bc878a0f..f01f2dad726c7 100644 --- a/api_docs/data_view_editor.mdx +++ b/api_docs/data_view_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewEditor title: "dataViewEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewEditor plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor'] --- import dataViewEditorObj from './data_view_editor.devdocs.json'; diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx index c46ba1abb79ae..4f1e515ca69ab 100644 --- a/api_docs/data_view_field_editor.mdx +++ b/api_docs/data_view_field_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor title: "dataViewFieldEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewFieldEditor plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor'] --- import dataViewFieldEditorObj from './data_view_field_editor.devdocs.json'; diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx index 1dfa05046bc3b..9966f4f949536 100644 --- a/api_docs/data_view_management.mdx +++ b/api_docs/data_view_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewManagement title: "dataViewManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewManagement plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index d0ace93f4f6b6..e1412c792c6de 100644 --- a/api_docs/data_views.mdx +++ b/api_docs/data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViews title: "dataViews" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViews plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index 830cdb34680bd..e910738bfe821 100644 --- a/api_docs/data_visualizer.mdx +++ b/api_docs/data_visualizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataVisualizer title: "dataVisualizer" image: https://source.unsplash.com/400x175/?github description: API docs for the dataVisualizer plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 55be25c6b5976..5382622046e83 100644 --- a/api_docs/deprecations_by_api.mdx +++ b/api_docs/deprecations_by_api.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByApi slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api title: Deprecated API usage by API description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 4ad03addeaee2..2eb5c2d2571f8 100644 --- a/api_docs/deprecations_by_plugin.mdx +++ b/api_docs/deprecations_by_plugin.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByPlugin slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin title: Deprecated API usage by plugin description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 406b2d95651b0..b6101297bc485 100644 --- a/api_docs/deprecations_by_team.mdx +++ b/api_docs/deprecations_by_team.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsDueByTeam slug: /kibana-dev-docs/api-meta/deprecations-due-by-team title: Deprecated APIs due to be removed, by team description: Lists the teams that are referencing deprecated APIs with a remove by date. -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index d7c381dc09a27..a8b9be6ec5de3 100644 --- a/api_docs/dev_tools.mdx +++ b/api_docs/dev_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/devTools title: "devTools" image: https://source.unsplash.com/400x175/?github description: API docs for the devTools plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] --- import devToolsObj from './dev_tools.devdocs.json'; diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index f6268cf80b0ba..eabe041f36dda 100644 --- a/api_docs/discover.mdx +++ b/api_docs/discover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discover title: "discover" image: https://source.unsplash.com/400x175/?github description: API docs for the discover plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover'] --- import discoverObj from './discover.devdocs.json'; diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index 7742da408d299..2253245778827 100644 --- a/api_docs/discover_enhanced.mdx +++ b/api_docs/discover_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced title: "discoverEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverEnhanced plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] --- import discoverEnhancedObj from './discover_enhanced.devdocs.json'; diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx index a8677fcd89584..726e79199bcbb 100644 --- a/api_docs/ecs_data_quality_dashboard.mdx +++ b/api_docs/ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ecsDataQualityDashboard title: "ecsDataQualityDashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the ecsDataQualityDashboard plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index c3d8f4170498e..7c866cd6d43a2 100644 --- a/api_docs/embeddable.mdx +++ b/api_docs/embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddable title: "embeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddable plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index 9090a078f9b67..7bde8a293885a 100644 --- a/api_docs/embeddable_enhanced.mdx +++ b/api_docs/embeddable_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced title: "embeddableEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddableEnhanced plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced'] --- import embeddableEnhancedObj from './embeddable_enhanced.devdocs.json'; diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx index 3065d7752ee13..59a1106534024 100644 --- a/api_docs/encrypted_saved_objects.mdx +++ b/api_docs/encrypted_saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects title: "encryptedSavedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the encryptedSavedObjects plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects'] --- import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json'; diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx index 34b62968f434b..ce13b69dd0587 100644 --- a/api_docs/enterprise_search.mdx +++ b/api_docs/enterprise_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch title: "enterpriseSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the enterpriseSearch plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] --- import enterpriseSearchObj from './enterprise_search.devdocs.json'; diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index 23120dbd58398..0cbd3e06a773d 100644 --- a/api_docs/es_ui_shared.mdx +++ b/api_docs/es_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esUiShared title: "esUiShared" image: https://source.unsplash.com/400x175/?github description: API docs for the esUiShared plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index 9d6803cbe1940..c0341fe6ddd00 100644 --- a/api_docs/event_annotation.mdx +++ b/api_docs/event_annotation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotation title: "eventAnnotation" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotation plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index 3ceb0921c0d6e..84d3c395d5ade 100644 --- a/api_docs/event_log.mdx +++ b/api_docs/event_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventLog title: "eventLog" image: https://source.unsplash.com/400x175/?github description: API docs for the eventLog plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx index 228f03634e8ce..68e2bdf6828f2 100644 --- a/api_docs/expression_error.mdx +++ b/api_docs/expression_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionError title: "expressionError" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionError plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError'] --- import expressionErrorObj from './expression_error.devdocs.json'; diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx index 0a308fef87cf3..257aa02eda3df 100644 --- a/api_docs/expression_gauge.mdx +++ b/api_docs/expression_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge title: "expressionGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionGauge plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index e499c4318d53a..ffc2655a8fa4d 100644 --- a/api_docs/expression_heatmap.mdx +++ b/api_docs/expression_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap title: "expressionHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionHeatmap plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap'] --- import expressionHeatmapObj from './expression_heatmap.devdocs.json'; diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx index 23ad4b5f51dff..51f9e23dbbdf8 100644 --- a/api_docs/expression_image.mdx +++ b/api_docs/expression_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage title: "expressionImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionImage plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage'] --- import expressionImageObj from './expression_image.devdocs.json'; diff --git a/api_docs/expression_legacy_metric_vis.mdx b/api_docs/expression_legacy_metric_vis.mdx index 7fe6598f578c1..991411768f4e9 100644 --- a/api_docs/expression_legacy_metric_vis.mdx +++ b/api_docs/expression_legacy_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis title: "expressionLegacyMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionLegacyMetricVis plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis'] --- import expressionLegacyMetricVisObj from './expression_legacy_metric_vis.devdocs.json'; diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx index 940317c4c2dfb..d4f8c7462a294 100644 --- a/api_docs/expression_metric.mdx +++ b/api_docs/expression_metric.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric title: "expressionMetric" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetric plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric'] --- import expressionMetricObj from './expression_metric.devdocs.json'; diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx index 8914d8effe7a5..57281a594aa19 100644 --- a/api_docs/expression_metric_vis.mdx +++ b/api_docs/expression_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis title: "expressionMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetricVis plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis'] --- import expressionMetricVisObj from './expression_metric_vis.devdocs.json'; diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx index 4cd7f8f0e7c3b..18005d1eab3df 100644 --- a/api_docs/expression_partition_vis.mdx +++ b/api_docs/expression_partition_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis title: "expressionPartitionVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionPartitionVis plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis'] --- import expressionPartitionVisObj from './expression_partition_vis.devdocs.json'; diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx index 38a2695c3cebd..bbde8a1760f2e 100644 --- a/api_docs/expression_repeat_image.mdx +++ b/api_docs/expression_repeat_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage title: "expressionRepeatImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRepeatImage plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage'] --- import expressionRepeatImageObj from './expression_repeat_image.devdocs.json'; diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx index 06eee92681fb8..52a681de4aec4 100644 --- a/api_docs/expression_reveal_image.mdx +++ b/api_docs/expression_reveal_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage title: "expressionRevealImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRevealImage plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage'] --- import expressionRevealImageObj from './expression_reveal_image.devdocs.json'; diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx index 9fd2ef6487cf7..48584a4f3df5f 100644 --- a/api_docs/expression_shape.mdx +++ b/api_docs/expression_shape.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape title: "expressionShape" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionShape plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape'] --- import expressionShapeObj from './expression_shape.devdocs.json'; diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx index 1b8eadfec6b46..99ea7bb898264 100644 --- a/api_docs/expression_tagcloud.mdx +++ b/api_docs/expression_tagcloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud title: "expressionTagcloud" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionTagcloud plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud'] --- import expressionTagcloudObj from './expression_tagcloud.devdocs.json'; diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx index 3d58760370d3c..e6ec81d84a68a 100644 --- a/api_docs/expression_x_y.mdx +++ b/api_docs/expression_x_y.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionXY title: "expressionXY" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionXY plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY'] --- import expressionXYObj from './expression_x_y.devdocs.json'; diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx index 19973ab9340da..3efcbc28a5d7d 100644 --- a/api_docs/expressions.mdx +++ b/api_docs/expressions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressions title: "expressions" image: https://source.unsplash.com/400x175/?github description: API docs for the expressions plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions'] --- import expressionsObj from './expressions.devdocs.json'; diff --git a/api_docs/features.mdx b/api_docs/features.mdx index 267281fb1f7d5..b2c7fab1f15b5 100644 --- a/api_docs/features.mdx +++ b/api_docs/features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/features title: "features" image: https://source.unsplash.com/400x175/?github description: API docs for the features plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features'] --- import featuresObj from './features.devdocs.json'; diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx index 91e95081e531d..df24a8c675b2d 100644 --- a/api_docs/field_formats.mdx +++ b/api_docs/field_formats.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldFormats title: "fieldFormats" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldFormats plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] --- import fieldFormatsObj from './field_formats.devdocs.json'; diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index b5feb7ffa0e0a..62c42f30a427b 100644 --- a/api_docs/file_upload.mdx +++ b/api_docs/file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fileUpload title: "fileUpload" image: https://source.unsplash.com/400x175/?github description: API docs for the fileUpload plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.mdx b/api_docs/files.mdx index 48ae9781227ed..459d56cfeb2e7 100644 --- a/api_docs/files.mdx +++ b/api_docs/files.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/files title: "files" image: https://source.unsplash.com/400x175/?github description: API docs for the files plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'files'] --- import filesObj from './files.devdocs.json'; diff --git a/api_docs/files_management.mdx b/api_docs/files_management.mdx index c492c9a68a5c0..4866f4c69faf6 100644 --- a/api_docs/files_management.mdx +++ b/api_docs/files_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/filesManagement title: "filesManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the filesManagement plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement'] --- import filesManagementObj from './files_management.devdocs.json'; diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index 191bb17534d9f..c06c8dd56bbfa 100644 --- a/api_docs/fleet.mdx +++ b/api_docs/fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fleet title: "fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the fleet plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] --- import fleetObj from './fleet.devdocs.json'; diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index d81d681e8cff3..84d8702951baf 100644 --- a/api_docs/global_search.mdx +++ b/api_docs/global_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/globalSearch title: "globalSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the globalSearch plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch'] --- import globalSearchObj from './global_search.devdocs.json'; diff --git a/api_docs/guided_onboarding.mdx b/api_docs/guided_onboarding.mdx index 0a98e456f9b8f..d181acf3c2afe 100644 --- a/api_docs/guided_onboarding.mdx +++ b/api_docs/guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/guidedOnboarding title: "guidedOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the guidedOnboarding plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'guidedOnboarding'] --- import guidedOnboardingObj from './guided_onboarding.devdocs.json'; diff --git a/api_docs/home.mdx b/api_docs/home.mdx index 434f919c42b2e..188e9c2a5e35f 100644 --- a/api_docs/home.mdx +++ b/api_docs/home.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/home title: "home" image: https://source.unsplash.com/400x175/?github description: API docs for the home plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home'] --- import homeObj from './home.devdocs.json'; diff --git a/api_docs/image_embeddable.mdx b/api_docs/image_embeddable.mdx index 49919a445d5de..09490ac0c9de5 100644 --- a/api_docs/image_embeddable.mdx +++ b/api_docs/image_embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/imageEmbeddable title: "imageEmbeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the imageEmbeddable plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'imageEmbeddable'] --- import imageEmbeddableObj from './image_embeddable.devdocs.json'; diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx index c0b6f1b4d5dba..ff629ab287d8b 100644 --- a/api_docs/index_lifecycle_management.mdx +++ b/api_docs/index_lifecycle_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement title: "indexLifecycleManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexLifecycleManagement plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement'] --- import indexLifecycleManagementObj from './index_lifecycle_management.devdocs.json'; diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index e204bf9668843..6107c79ad212e 100644 --- a/api_docs/index_management.mdx +++ b/api_docs/index_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexManagement title: "indexManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexManagement plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] --- import indexManagementObj from './index_management.devdocs.json'; diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index c6d8e30ff02a4..7cd456ce94c40 100644 --- a/api_docs/infra.mdx +++ b/api_docs/infra.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/infra title: "infra" image: https://source.unsplash.com/400x175/?github description: API docs for the infra plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index 63adde4919b5c..980f4392ed908 100644 --- a/api_docs/inspector.mdx +++ b/api_docs/inspector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inspector title: "inspector" image: https://source.unsplash.com/400x175/?github description: API docs for the inspector plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] --- import inspectorObj from './inspector.devdocs.json'; diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index 2b3f68c943113..57769d437b464 100644 --- a/api_docs/interactive_setup.mdx +++ b/api_docs/interactive_setup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/interactiveSetup title: "interactiveSetup" image: https://source.unsplash.com/400x175/?github description: API docs for the interactiveSetup plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] --- import interactiveSetupObj from './interactive_setup.devdocs.json'; diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx index 7965fe6c2f23d..6f2083f2a6b33 100644 --- a/api_docs/kbn_ace.mdx +++ b/api_docs/kbn_ace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ace title: "@kbn/ace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ace plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] --- import kbnAceObj from './kbn_ace.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index ee7d5b961c206..7b7a6d539197b 100644 --- a/api_docs/kbn_aiops_components.mdx +++ b/api_docs/kbn_aiops_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components title: "@kbn/aiops-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-components plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index 4bc230469931f..ed89b49ab61ba 100644 --- a/api_docs/kbn_aiops_utils.mdx +++ b/api_docs/kbn_aiops_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-utils title: "@kbn/aiops-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-utils plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; diff --git a/api_docs/kbn_alerts.mdx b/api_docs/kbn_alerts.mdx index 2ac572cff4775..30b2a4becda15 100644 --- a/api_docs/kbn_alerts.mdx +++ b/api_docs/kbn_alerts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts title: "@kbn/alerts" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts'] --- import kbnAlertsObj from './kbn_alerts.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index 54bc5be408b84..29446b2f5c69f 100644 --- a/api_docs/kbn_alerts_as_data_utils.mdx +++ b/api_docs/kbn_alerts_as_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-as-data-utils title: "@kbn/alerts-as-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-as-data-utils plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-as-data-utils'] --- import kbnAlertsAsDataUtilsObj from './kbn_alerts_as_data_utils.devdocs.json'; diff --git a/api_docs/kbn_alerts_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx index 40cea80033173..cb6922fb449b6 100644 --- a/api_docs/kbn_alerts_ui_shared.mdx +++ b/api_docs/kbn_alerts_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-ui-shared title: "@kbn/alerts-ui-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-ui-shared plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-ui-shared'] --- import kbnAlertsUiSharedObj from './kbn_alerts_ui_shared.devdocs.json'; diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx index b1758b106b005..893745b836cd0 100644 --- a/api_docs/kbn_analytics.mdx +++ b/api_docs/kbn_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics title: "@kbn/analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx index 02fe83390029c..223d94be7ad23 100644 --- a/api_docs/kbn_analytics_client.mdx +++ b/api_docs/kbn_analytics_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-client title: "@kbn/analytics-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-client plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] --- import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx index e3ca0d1bf5cd5..96744d45eea14 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-browser title: "@kbn/analytics-shippers-elastic-v3-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-browser plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-browser'] --- import kbnAnalyticsShippersElasticV3BrowserObj from './kbn_analytics_shippers_elastic_v3_browser.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx index 208f3fcce3081..a0357398015d9 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-common title: "@kbn/analytics-shippers-elastic-v3-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-common plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-common'] --- import kbnAnalyticsShippersElasticV3CommonObj from './kbn_analytics_shippers_elastic_v3_common.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx index 3f6fc2600d8e2..008ed69cd7ef8 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-server title: "@kbn/analytics-shippers-elastic-v3-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-server plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-server'] --- import kbnAnalyticsShippersElasticV3ServerObj from './kbn_analytics_shippers_elastic_v3_server.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_fullstory.mdx b/api_docs/kbn_analytics_shippers_fullstory.mdx index 7ddca8a6c7017..2929f7f258970 100644 --- a/api_docs/kbn_analytics_shippers_fullstory.mdx +++ b/api_docs/kbn_analytics_shippers_fullstory.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-fullstory title: "@kbn/analytics-shippers-fullstory" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-fullstory plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory'] --- import kbnAnalyticsShippersFullstoryObj from './kbn_analytics_shippers_fullstory.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_gainsight.mdx b/api_docs/kbn_analytics_shippers_gainsight.mdx index cf3480b94be7a..760aeccdcbec9 100644 --- a/api_docs/kbn_analytics_shippers_gainsight.mdx +++ b/api_docs/kbn_analytics_shippers_gainsight.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-gainsight title: "@kbn/analytics-shippers-gainsight" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-gainsight plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-gainsight'] --- import kbnAnalyticsShippersGainsightObj from './kbn_analytics_shippers_gainsight.devdocs.json'; diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index 70d0f920f5642..40f270fe6a09c 100644 --- a/api_docs/kbn_apm_config_loader.mdx +++ b/api_docs/kbn_apm_config_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader title: "@kbn/apm-config-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-config-loader plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] --- import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index 67caa2bfd18cc..27f7f4b8a8085 100644 --- a/api_docs/kbn_apm_synthtrace.mdx +++ b/api_docs/kbn_apm_synthtrace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace title: "@kbn/apm-synthtrace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace'] --- import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace_client.mdx b/api_docs/kbn_apm_synthtrace_client.mdx index 10a2538d38840..2bea49fd95bd5 100644 --- a/api_docs/kbn_apm_synthtrace_client.mdx +++ b/api_docs/kbn_apm_synthtrace_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace-client title: "@kbn/apm-synthtrace-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace-client plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client'] --- import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index da1ced3885539..47742a50ee494 100644 --- a/api_docs/kbn_apm_utils.mdx +++ b/api_docs/kbn_apm_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils title: "@kbn/apm-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-utils plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] --- import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json'; diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index 974931d5298cf..7412bb87e2cb9 100644 --- a/api_docs/kbn_axe_config.mdx +++ b/api_docs/kbn_axe_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config title: "@kbn/axe-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/axe-config plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index 6b07a8affe16b..15ec262fd5bbb 100644 --- a/api_docs/kbn_cases_components.mdx +++ b/api_docs/kbn_cases_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cases-components title: "@kbn/cases-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cases-components plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components'] --- import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json'; diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx index b58d0eb1d64a6..4bdaa6503e286 100644 --- a/api_docs/kbn_cell_actions.mdx +++ b/api_docs/kbn_cell_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cell-actions title: "@kbn/cell-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cell-actions plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cell-actions'] --- import kbnCellActionsObj from './kbn_cell_actions.devdocs.json'; diff --git a/api_docs/kbn_chart_expressions_common.mdx b/api_docs/kbn_chart_expressions_common.mdx index 5eabc48e0436d..c12b56dfbf806 100644 --- a/api_docs/kbn_chart_expressions_common.mdx +++ b/api_docs/kbn_chart_expressions_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-expressions-common title: "@kbn/chart-expressions-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-expressions-common plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-expressions-common'] --- import kbnChartExpressionsCommonObj from './kbn_chart_expressions_common.devdocs.json'; diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx index 679e529087a8d..ea94399c763cc 100644 --- a/api_docs/kbn_chart_icons.mdx +++ b/api_docs/kbn_chart_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-icons title: "@kbn/chart-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-icons plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons'] --- import kbnChartIconsObj from './kbn_chart_icons.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx index 4d4dbfe8cdc10..39631161c2e77 100644 --- a/api_docs/kbn_ci_stats_core.mdx +++ b/api_docs/kbn_ci_stats_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core title: "@kbn/ci-stats-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-core plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core'] --- import kbnCiStatsCoreObj from './kbn_ci_stats_core.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_performance_metrics.mdx b/api_docs/kbn_ci_stats_performance_metrics.mdx index a697819515343..3c526f3d283d0 100644 --- a/api_docs/kbn_ci_stats_performance_metrics.mdx +++ b/api_docs/kbn_ci_stats_performance_metrics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics title: "@kbn/ci-stats-performance-metrics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-performance-metrics plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics'] --- import kbnCiStatsPerformanceMetricsObj from './kbn_ci_stats_performance_metrics.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx index 5a7df73d51468..6e70855fea349 100644 --- a/api_docs/kbn_ci_stats_reporter.mdx +++ b/api_docs/kbn_ci_stats_reporter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter title: "@kbn/ci-stats-reporter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-reporter plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter'] --- import kbnCiStatsReporterObj from './kbn_ci_stats_reporter.devdocs.json'; diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx index 4a2647dd3f967..e7329c3eeccee 100644 --- a/api_docs/kbn_cli_dev_mode.mdx +++ b/api_docs/kbn_cli_dev_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode title: "@kbn/cli-dev-mode" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cli-dev-mode plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] --- import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json'; diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx index 7ef625a68982e..129849dae6e89 100644 --- a/api_docs/kbn_code_editor.mdx +++ b/api_docs/kbn_code_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor title: "@kbn/code-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_editor_mocks.mdx b/api_docs/kbn_code_editor_mocks.mdx index 2cf25c55072d1..a96b4fdc243b9 100644 --- a/api_docs/kbn_code_editor_mocks.mdx +++ b/api_docs/kbn_code_editor_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor-mocks title: "@kbn/code-editor-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor-mocks'] --- import kbnCodeEditorMocksObj from './kbn_code_editor_mocks.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index 7695124cd282d..5760e25e30175 100644 --- a/api_docs/kbn_coloring.mdx +++ b/api_docs/kbn_coloring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-coloring title: "@kbn/coloring" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/coloring plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring'] --- import kbnColoringObj from './kbn_coloring.devdocs.json'; diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx index 4f8ba684455a8..a7b8ec77e30b5 100644 --- a/api_docs/kbn_config.mdx +++ b/api_docs/kbn_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config title: "@kbn/config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config'] --- import kbnConfigObj from './kbn_config.devdocs.json'; diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx index 53ce15e3d359d..8e2fa4a9e48cd 100644 --- a/api_docs/kbn_config_mocks.mdx +++ b/api_docs/kbn_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks title: "@kbn/config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks'] --- import kbnConfigMocksObj from './kbn_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx index 40b6d2ddcafbc..3207dad4894f7 100644 --- a/api_docs/kbn_config_schema.mdx +++ b/api_docs/kbn_config_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema title: "@kbn/config-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-schema plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema'] --- import kbnConfigSchemaObj from './kbn_config_schema.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_editor.mdx b/api_docs/kbn_content_management_content_editor.mdx index ae2b0551140c4..a87540d63f095 100644 --- a/api_docs/kbn_content_management_content_editor.mdx +++ b/api_docs/kbn_content_management_content_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-editor title: "@kbn/content-management-content-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-editor plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-editor'] --- import kbnContentManagementContentEditorObj from './kbn_content_management_content_editor.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list.mdx b/api_docs/kbn_content_management_table_list.mdx index 2cc8cff76c5fa..ada859f04622e 100644 --- a/api_docs/kbn_content_management_table_list.mdx +++ b/api_docs/kbn_content_management_table_list.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list title: "@kbn/content-management-table-list" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list'] --- import kbnContentManagementTableListObj from './kbn_content_management_table_list.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index fa135d5844e75..148c384662ffa 100644 --- a/api_docs/kbn_core_analytics_browser.mdx +++ b/api_docs/kbn_core_analytics_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser title: "@kbn/core-analytics-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser'] --- import kbnCoreAnalyticsBrowserObj from './kbn_core_analytics_browser.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx index a5b82f475e7d3..ed923f644992c 100644 --- a/api_docs/kbn_core_analytics_browser_internal.mdx +++ b/api_docs/kbn_core_analytics_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal title: "@kbn/core-analytics-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal'] --- import kbnCoreAnalyticsBrowserInternalObj from './kbn_core_analytics_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx index cdec53e099b18..495481e8519cf 100644 --- a/api_docs/kbn_core_analytics_browser_mocks.mdx +++ b/api_docs/kbn_core_analytics_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks title: "@kbn/core-analytics-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks'] --- import kbnCoreAnalyticsBrowserMocksObj from './kbn_core_analytics_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server.mdx b/api_docs/kbn_core_analytics_server.mdx index 7645d65f067ca..60a57e557bd55 100644 --- a/api_docs/kbn_core_analytics_server.mdx +++ b/api_docs/kbn_core_analytics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server title: "@kbn/core-analytics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server'] --- import kbnCoreAnalyticsServerObj from './kbn_core_analytics_server.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_internal.mdx b/api_docs/kbn_core_analytics_server_internal.mdx index cfa15fa7a4ba1..34543e06343c4 100644 --- a/api_docs/kbn_core_analytics_server_internal.mdx +++ b/api_docs/kbn_core_analytics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal title: "@kbn/core-analytics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal'] --- import kbnCoreAnalyticsServerInternalObj from './kbn_core_analytics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_mocks.mdx b/api_docs/kbn_core_analytics_server_mocks.mdx index 8dd08fd9263ea..0214e86509092 100644 --- a/api_docs/kbn_core_analytics_server_mocks.mdx +++ b/api_docs/kbn_core_analytics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks title: "@kbn/core-analytics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks'] --- import kbnCoreAnalyticsServerMocksObj from './kbn_core_analytics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser.mdx b/api_docs/kbn_core_application_browser.mdx index 25c048b46a43c..a52728110f1e9 100644 --- a/api_docs/kbn_core_application_browser.mdx +++ b/api_docs/kbn_core_application_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser title: "@kbn/core-application-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser'] --- import kbnCoreApplicationBrowserObj from './kbn_core_application_browser.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_internal.mdx b/api_docs/kbn_core_application_browser_internal.mdx index e56b8c305df0a..e7529be7bec01 100644 --- a/api_docs/kbn_core_application_browser_internal.mdx +++ b/api_docs/kbn_core_application_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-internal title: "@kbn/core-application-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-internal'] --- import kbnCoreApplicationBrowserInternalObj from './kbn_core_application_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_mocks.mdx b/api_docs/kbn_core_application_browser_mocks.mdx index 6c8d38c8135fd..76e8330a7bf9a 100644 --- a/api_docs/kbn_core_application_browser_mocks.mdx +++ b/api_docs/kbn_core_application_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-mocks title: "@kbn/core-application-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-mocks'] --- import kbnCoreApplicationBrowserMocksObj from './kbn_core_application_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_common.mdx b/api_docs/kbn_core_application_common.mdx index d59bb101b0534..eab0f714c18b5 100644 --- a/api_docs/kbn_core_application_common.mdx +++ b/api_docs/kbn_core_application_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-common title: "@kbn/core-application-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-common plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-common'] --- import kbnCoreApplicationCommonObj from './kbn_core_application_common.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_internal.mdx b/api_docs/kbn_core_apps_browser_internal.mdx index f29ebe080e6b2..6417e895aec19 100644 --- a/api_docs/kbn_core_apps_browser_internal.mdx +++ b/api_docs/kbn_core_apps_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-internal title: "@kbn/core-apps-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-internal'] --- import kbnCoreAppsBrowserInternalObj from './kbn_core_apps_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_mocks.mdx b/api_docs/kbn_core_apps_browser_mocks.mdx index 7523d44c05411..5145cf51aa61c 100644 --- a/api_docs/kbn_core_apps_browser_mocks.mdx +++ b/api_docs/kbn_core_apps_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-mocks title: "@kbn/core-apps-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-mocks'] --- import kbnCoreAppsBrowserMocksObj from './kbn_core_apps_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_apps_server_internal.mdx b/api_docs/kbn_core_apps_server_internal.mdx index f2b726b821432..d70c3fbbfbd0f 100644 --- a/api_docs/kbn_core_apps_server_internal.mdx +++ b/api_docs/kbn_core_apps_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-server-internal title: "@kbn/core-apps-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-server-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-server-internal'] --- import kbnCoreAppsServerInternalObj from './kbn_core_apps_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx index 07b357e0f7a33..cd3ddb1d008d3 100644 --- a/api_docs/kbn_core_base_browser_mocks.mdx +++ b/api_docs/kbn_core_base_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks title: "@kbn/core-base-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-browser-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks'] --- import kbnCoreBaseBrowserMocksObj from './kbn_core_base_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx index 83c06dc9b4402..3349216fb96b3 100644 --- a/api_docs/kbn_core_base_common.mdx +++ b/api_docs/kbn_core_base_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common title: "@kbn/core-base-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-common plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common'] --- import kbnCoreBaseCommonObj from './kbn_core_base_common.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_internal.mdx b/api_docs/kbn_core_base_server_internal.mdx index 92f85065e1bf0..921b31b3eb061 100644 --- a/api_docs/kbn_core_base_server_internal.mdx +++ b/api_docs/kbn_core_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal title: "@kbn/core-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal'] --- import kbnCoreBaseServerInternalObj from './kbn_core_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx index fa401b887b8d0..04af61761042c 100644 --- a/api_docs/kbn_core_base_server_mocks.mdx +++ b/api_docs/kbn_core_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks title: "@kbn/core-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks'] --- import kbnCoreBaseServerMocksObj from './kbn_core_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_browser_mocks.mdx b/api_docs/kbn_core_capabilities_browser_mocks.mdx index 540a64b6bd8d1..6ad5c26199712 100644 --- a/api_docs/kbn_core_capabilities_browser_mocks.mdx +++ b/api_docs/kbn_core_capabilities_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-browser-mocks title: "@kbn/core-capabilities-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-browser-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-browser-mocks'] --- import kbnCoreCapabilitiesBrowserMocksObj from './kbn_core_capabilities_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx index 1f0e21872570d..57af9a305dbce 100644 --- a/api_docs/kbn_core_capabilities_common.mdx +++ b/api_docs/kbn_core_capabilities_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-common title: "@kbn/core-capabilities-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-common plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-common'] --- import kbnCoreCapabilitiesCommonObj from './kbn_core_capabilities_common.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server.mdx b/api_docs/kbn_core_capabilities_server.mdx index b54dde1f92143..a67a216430546 100644 --- a/api_docs/kbn_core_capabilities_server.mdx +++ b/api_docs/kbn_core_capabilities_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server title: "@kbn/core-capabilities-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server'] --- import kbnCoreCapabilitiesServerObj from './kbn_core_capabilities_server.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server_mocks.mdx b/api_docs/kbn_core_capabilities_server_mocks.mdx index 44e50ae17925c..9361dcc47be36 100644 --- a/api_docs/kbn_core_capabilities_server_mocks.mdx +++ b/api_docs/kbn_core_capabilities_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks title: "@kbn/core-capabilities-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server-mocks'] --- import kbnCoreCapabilitiesServerMocksObj from './kbn_core_capabilities_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser.mdx b/api_docs/kbn_core_chrome_browser.mdx index 2a647d20670d9..1d7b49661a6c6 100644 --- a/api_docs/kbn_core_chrome_browser.mdx +++ b/api_docs/kbn_core_chrome_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser title: "@kbn/core-chrome-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser'] --- import kbnCoreChromeBrowserObj from './kbn_core_chrome_browser.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser_mocks.mdx b/api_docs/kbn_core_chrome_browser_mocks.mdx index 35c580a703b8b..a7eb10725ca6a 100644 --- a/api_docs/kbn_core_chrome_browser_mocks.mdx +++ b/api_docs/kbn_core_chrome_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser-mocks title: "@kbn/core-chrome-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser-mocks'] --- import kbnCoreChromeBrowserMocksObj from './kbn_core_chrome_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx index 5639217508223..c6055df887a55 100644 --- a/api_docs/kbn_core_config_server_internal.mdx +++ b/api_docs/kbn_core_config_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal title: "@kbn/core-config-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-config-server-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal'] --- import kbnCoreConfigServerInternalObj from './kbn_core_config_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser.mdx b/api_docs/kbn_core_custom_branding_browser.mdx index ce9ccb4a0a55f..c2411d949ac01 100644 --- a/api_docs/kbn_core_custom_branding_browser.mdx +++ b/api_docs/kbn_core_custom_branding_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser title: "@kbn/core-custom-branding-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser'] --- import kbnCoreCustomBrandingBrowserObj from './kbn_core_custom_branding_browser.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_internal.mdx b/api_docs/kbn_core_custom_branding_browser_internal.mdx index 5e7489475054b..0fe9ad53488a4 100644 --- a/api_docs/kbn_core_custom_branding_browser_internal.mdx +++ b/api_docs/kbn_core_custom_branding_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-internal title: "@kbn/core-custom-branding-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-internal'] --- import kbnCoreCustomBrandingBrowserInternalObj from './kbn_core_custom_branding_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_mocks.mdx b/api_docs/kbn_core_custom_branding_browser_mocks.mdx index 4cfb1ada88c2b..9f0b49e3f009d 100644 --- a/api_docs/kbn_core_custom_branding_browser_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-mocks title: "@kbn/core-custom-branding-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-mocks'] --- import kbnCoreCustomBrandingBrowserMocksObj from './kbn_core_custom_branding_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_common.mdx b/api_docs/kbn_core_custom_branding_common.mdx index 6f26a3a5e0769..32a011d6e4fc2 100644 --- a/api_docs/kbn_core_custom_branding_common.mdx +++ b/api_docs/kbn_core_custom_branding_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-common title: "@kbn/core-custom-branding-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-common plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-common'] --- import kbnCoreCustomBrandingCommonObj from './kbn_core_custom_branding_common.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server.mdx b/api_docs/kbn_core_custom_branding_server.mdx index 51358ba7a0911..66337696a5271 100644 --- a/api_docs/kbn_core_custom_branding_server.mdx +++ b/api_docs/kbn_core_custom_branding_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server title: "@kbn/core-custom-branding-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server'] --- import kbnCoreCustomBrandingServerObj from './kbn_core_custom_branding_server.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_internal.mdx b/api_docs/kbn_core_custom_branding_server_internal.mdx index 715c7b7d5a362..a93007d3d6502 100644 --- a/api_docs/kbn_core_custom_branding_server_internal.mdx +++ b/api_docs/kbn_core_custom_branding_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-internal title: "@kbn/core-custom-branding-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-internal'] --- import kbnCoreCustomBrandingServerInternalObj from './kbn_core_custom_branding_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_mocks.mdx b/api_docs/kbn_core_custom_branding_server_mocks.mdx index beca2642943b4..3f9628b1d4009 100644 --- a/api_docs/kbn_core_custom_branding_server_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-mocks title: "@kbn/core-custom-branding-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-mocks'] --- import kbnCoreCustomBrandingServerMocksObj from './kbn_core_custom_branding_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx index ce0c7746950df..01b9f4be88624 100644 --- a/api_docs/kbn_core_deprecations_browser.mdx +++ b/api_docs/kbn_core_deprecations_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser title: "@kbn/core-deprecations-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser'] --- import kbnCoreDeprecationsBrowserObj from './kbn_core_deprecations_browser.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_internal.mdx b/api_docs/kbn_core_deprecations_browser_internal.mdx index a9eb13ad6ca51..3901dd45dbc18 100644 --- a/api_docs/kbn_core_deprecations_browser_internal.mdx +++ b/api_docs/kbn_core_deprecations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal title: "@kbn/core-deprecations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-internal'] --- import kbnCoreDeprecationsBrowserInternalObj from './kbn_core_deprecations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_mocks.mdx b/api_docs/kbn_core_deprecations_browser_mocks.mdx index 5325320036234..f2b392cf877df 100644 --- a/api_docs/kbn_core_deprecations_browser_mocks.mdx +++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks title: "@kbn/core-deprecations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-mocks'] --- import kbnCoreDeprecationsBrowserMocksObj from './kbn_core_deprecations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_common.mdx b/api_docs/kbn_core_deprecations_common.mdx index abc34c2058069..93d9c6eb41c63 100644 --- a/api_docs/kbn_core_deprecations_common.mdx +++ b/api_docs/kbn_core_deprecations_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common title: "@kbn/core-deprecations-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-common plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-common'] --- import kbnCoreDeprecationsCommonObj from './kbn_core_deprecations_common.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server.mdx b/api_docs/kbn_core_deprecations_server.mdx index 7b1da66fd48c7..b7b7a8db63933 100644 --- a/api_docs/kbn_core_deprecations_server.mdx +++ b/api_docs/kbn_core_deprecations_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server title: "@kbn/core-deprecations-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server'] --- import kbnCoreDeprecationsServerObj from './kbn_core_deprecations_server.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_internal.mdx b/api_docs/kbn_core_deprecations_server_internal.mdx index d316adbed5b8a..9f34f05f43ba5 100644 --- a/api_docs/kbn_core_deprecations_server_internal.mdx +++ b/api_docs/kbn_core_deprecations_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-internal title: "@kbn/core-deprecations-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-internal'] --- import kbnCoreDeprecationsServerInternalObj from './kbn_core_deprecations_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_mocks.mdx b/api_docs/kbn_core_deprecations_server_mocks.mdx index 9eede1cbda24c..1e450e63cafae 100644 --- a/api_docs/kbn_core_deprecations_server_mocks.mdx +++ b/api_docs/kbn_core_deprecations_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-mocks title: "@kbn/core-deprecations-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-mocks'] --- import kbnCoreDeprecationsServerMocksObj from './kbn_core_deprecations_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx index 78f036aa72ac2..37da568c6c386 100644 --- a/api_docs/kbn_core_doc_links_browser.mdx +++ b/api_docs/kbn_core_doc_links_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser title: "@kbn/core-doc-links-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser'] --- import kbnCoreDocLinksBrowserObj from './kbn_core_doc_links_browser.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx index 73f3e8f9fed05..2127dbb203914 100644 --- a/api_docs/kbn_core_doc_links_browser_mocks.mdx +++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser-mocks title: "@kbn/core-doc-links-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks'] --- import kbnCoreDocLinksBrowserMocksObj from './kbn_core_doc_links_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx index 8b2c0831c01c0..c304add3c32bd 100644 --- a/api_docs/kbn_core_doc_links_server.mdx +++ b/api_docs/kbn_core_doc_links_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server title: "@kbn/core-doc-links-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server'] --- import kbnCoreDocLinksServerObj from './kbn_core_doc_links_server.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx index 4a7dd09a54d0e..fb6a9ae0f9afd 100644 --- a/api_docs/kbn_core_doc_links_server_mocks.mdx +++ b/api_docs/kbn_core_doc_links_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server-mocks title: "@kbn/core-doc-links-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks'] --- import kbnCoreDocLinksServerMocksObj from './kbn_core_doc_links_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx index 6bc9db264730e..202b336500207 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-internal title: "@kbn/core-elasticsearch-client-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-internal'] --- import kbnCoreElasticsearchClientServerInternalObj from './kbn_core_elasticsearch_client_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx index c33ed91205a22..4c5461b570466 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-mocks title: "@kbn/core-elasticsearch-client-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-mocks'] --- import kbnCoreElasticsearchClientServerMocksObj from './kbn_core_elasticsearch_client_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx index 270adfa121671..19e489484f194 100644 --- a/api_docs/kbn_core_elasticsearch_server.mdx +++ b/api_docs/kbn_core_elasticsearch_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server title: "@kbn/core-elasticsearch-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server'] --- import kbnCoreElasticsearchServerObj from './kbn_core_elasticsearch_server.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx index c1cd71eef84c3..30e8fe0cf4eae 100644 --- a/api_docs/kbn_core_elasticsearch_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal title: "@kbn/core-elasticsearch-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-internal'] --- import kbnCoreElasticsearchServerInternalObj from './kbn_core_elasticsearch_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_server_mocks.mdx index 8ed18e88f50da..7459098d29a4a 100644 --- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks title: "@kbn/core-elasticsearch-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-mocks'] --- import kbnCoreElasticsearchServerMocksObj from './kbn_core_elasticsearch_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_internal.mdx b/api_docs/kbn_core_environment_server_internal.mdx index d98c687c0dd8e..e5edb4aefd016 100644 --- a/api_docs/kbn_core_environment_server_internal.mdx +++ b/api_docs/kbn_core_environment_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal title: "@kbn/core-environment-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-internal'] --- import kbnCoreEnvironmentServerInternalObj from './kbn_core_environment_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_mocks.mdx b/api_docs/kbn_core_environment_server_mocks.mdx index 8149e88454804..c1223a47159d4 100644 --- a/api_docs/kbn_core_environment_server_mocks.mdx +++ b/api_docs/kbn_core_environment_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks title: "@kbn/core-environment-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-mocks'] --- import kbnCoreEnvironmentServerMocksObj from './kbn_core_environment_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser.mdx b/api_docs/kbn_core_execution_context_browser.mdx index d6125ad994ec1..7163ac0557a4a 100644 --- a/api_docs/kbn_core_execution_context_browser.mdx +++ b/api_docs/kbn_core_execution_context_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser title: "@kbn/core-execution-context-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser'] --- import kbnCoreExecutionContextBrowserObj from './kbn_core_execution_context_browser.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_internal.mdx b/api_docs/kbn_core_execution_context_browser_internal.mdx index 07b90f74da52e..2503b99d4f96e 100644 --- a/api_docs/kbn_core_execution_context_browser_internal.mdx +++ b/api_docs/kbn_core_execution_context_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-internal title: "@kbn/core-execution-context-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-internal'] --- import kbnCoreExecutionContextBrowserInternalObj from './kbn_core_execution_context_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_mocks.mdx b/api_docs/kbn_core_execution_context_browser_mocks.mdx index c3494af62b61e..5d05d9398787e 100644 --- a/api_docs/kbn_core_execution_context_browser_mocks.mdx +++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-mocks title: "@kbn/core-execution-context-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-mocks'] --- import kbnCoreExecutionContextBrowserMocksObj from './kbn_core_execution_context_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_common.mdx b/api_docs/kbn_core_execution_context_common.mdx index c86c6fb9f1260..06a9fba49c810 100644 --- a/api_docs/kbn_core_execution_context_common.mdx +++ b/api_docs/kbn_core_execution_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common title: "@kbn/core-execution-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-common plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-common'] --- import kbnCoreExecutionContextCommonObj from './kbn_core_execution_context_common.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server.mdx b/api_docs/kbn_core_execution_context_server.mdx index 1069ce76dd434..9073ac87440b2 100644 --- a/api_docs/kbn_core_execution_context_server.mdx +++ b/api_docs/kbn_core_execution_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server title: "@kbn/core-execution-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server'] --- import kbnCoreExecutionContextServerObj from './kbn_core_execution_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_internal.mdx b/api_docs/kbn_core_execution_context_server_internal.mdx index 8f0a92e637457..dce4c936d2d58 100644 --- a/api_docs/kbn_core_execution_context_server_internal.mdx +++ b/api_docs/kbn_core_execution_context_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-internal title: "@kbn/core-execution-context-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-internal'] --- import kbnCoreExecutionContextServerInternalObj from './kbn_core_execution_context_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_mocks.mdx b/api_docs/kbn_core_execution_context_server_mocks.mdx index 12d2af882e5c9..389348372eda1 100644 --- a/api_docs/kbn_core_execution_context_server_mocks.mdx +++ b/api_docs/kbn_core_execution_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-mocks title: "@kbn/core-execution-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-mocks'] --- import kbnCoreExecutionContextServerMocksObj from './kbn_core_execution_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser.mdx b/api_docs/kbn_core_fatal_errors_browser.mdx index eec49232ed475..4edd5ef654ca6 100644 --- a/api_docs/kbn_core_fatal_errors_browser.mdx +++ b/api_docs/kbn_core_fatal_errors_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser title: "@kbn/core-fatal-errors-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser'] --- import kbnCoreFatalErrorsBrowserObj from './kbn_core_fatal_errors_browser.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx index 17458162415eb..ede7fde47bd5a 100644 --- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx +++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser-mocks title: "@kbn/core-fatal-errors-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks'] --- import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx index bb47a3aa04cf1..ca8dd43ba5c4f 100644 --- a/api_docs/kbn_core_http_browser.mdx +++ b/api_docs/kbn_core_http_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser title: "@kbn/core-http-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser'] --- import kbnCoreHttpBrowserObj from './kbn_core_http_browser.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_internal.mdx b/api_docs/kbn_core_http_browser_internal.mdx index ffc43e5129267..e4b5e998c1907 100644 --- a/api_docs/kbn_core_http_browser_internal.mdx +++ b/api_docs/kbn_core_http_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal title: "@kbn/core-http-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-internal'] --- import kbnCoreHttpBrowserInternalObj from './kbn_core_http_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_mocks.mdx b/api_docs/kbn_core_http_browser_mocks.mdx index 13d392d22758b..023c693498842 100644 --- a/api_docs/kbn_core_http_browser_mocks.mdx +++ b/api_docs/kbn_core_http_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks title: "@kbn/core-http-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-mocks'] --- import kbnCoreHttpBrowserMocksObj from './kbn_core_http_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_common.mdx b/api_docs/kbn_core_http_common.mdx index 66055e7fb27a6..c3576703005ab 100644 --- a/api_docs/kbn_core_http_common.mdx +++ b/api_docs/kbn_core_http_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common title: "@kbn/core-http-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-common plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-common'] --- import kbnCoreHttpCommonObj from './kbn_core_http_common.devdocs.json'; diff --git a/api_docs/kbn_core_http_context_server_mocks.mdx b/api_docs/kbn_core_http_context_server_mocks.mdx index 1bdde00bdc519..06fe131b6b2de 100644 --- a/api_docs/kbn_core_http_context_server_mocks.mdx +++ b/api_docs/kbn_core_http_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-context-server-mocks title: "@kbn/core-http-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-context-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-context-server-mocks'] --- import kbnCoreHttpContextServerMocksObj from './kbn_core_http_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_request_handler_context_server.mdx b/api_docs/kbn_core_http_request_handler_context_server.mdx index 8d063aaaa24b6..97039f9c5e3bf 100644 --- a/api_docs/kbn_core_http_request_handler_context_server.mdx +++ b/api_docs/kbn_core_http_request_handler_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-request-handler-context-server title: "@kbn/core-http-request-handler-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-request-handler-context-server plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-request-handler-context-server'] --- import kbnCoreHttpRequestHandlerContextServerObj from './kbn_core_http_request_handler_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server.mdx b/api_docs/kbn_core_http_resources_server.mdx index 3faa3ab53c4c4..555cfec242cad 100644 --- a/api_docs/kbn_core_http_resources_server.mdx +++ b/api_docs/kbn_core_http_resources_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server title: "@kbn/core-http-resources-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server'] --- import kbnCoreHttpResourcesServerObj from './kbn_core_http_resources_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_internal.mdx b/api_docs/kbn_core_http_resources_server_internal.mdx index 2a3de88b9fccf..cb824b9c9cbed 100644 --- a/api_docs/kbn_core_http_resources_server_internal.mdx +++ b/api_docs/kbn_core_http_resources_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-internal title: "@kbn/core-http-resources-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-internal'] --- import kbnCoreHttpResourcesServerInternalObj from './kbn_core_http_resources_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_mocks.mdx b/api_docs/kbn_core_http_resources_server_mocks.mdx index 516284c412173..97112bf872eaf 100644 --- a/api_docs/kbn_core_http_resources_server_mocks.mdx +++ b/api_docs/kbn_core_http_resources_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-mocks title: "@kbn/core-http-resources-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-mocks'] --- import kbnCoreHttpResourcesServerMocksObj from './kbn_core_http_resources_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx index 1addc71246e20..6be7b71ae63d2 100644 --- a/api_docs/kbn_core_http_router_server_internal.mdx +++ b/api_docs/kbn_core_http_router_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-internal title: "@kbn/core-http-router-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal'] --- import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx index 4274b2e2d976d..43e9f0852d426 100644 --- a/api_docs/kbn_core_http_router_server_mocks.mdx +++ b/api_docs/kbn_core_http_router_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-mocks title: "@kbn/core-http-router-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 3ecf6baee1702..ef322e03c9416 100644 --- a/api_docs/kbn_core_http_server.mdx +++ b/api_docs/kbn_core_http_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server title: "@kbn/core-http-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server'] --- import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx index e0dcac66a31f0..24b888a4d2707 100644 --- a/api_docs/kbn_core_http_server_internal.mdx +++ b/api_docs/kbn_core_http_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal title: "@kbn/core-http-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-internal'] --- import kbnCoreHttpServerInternalObj from './kbn_core_http_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_mocks.mdx b/api_docs/kbn_core_http_server_mocks.mdx index 040d4dde71d38..b3c0aa90eb504 100644 --- a/api_docs/kbn_core_http_server_mocks.mdx +++ b/api_docs/kbn_core_http_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks title: "@kbn/core-http-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks'] --- import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx index 0a4a1c091708a..fe18656b3241a 100644 --- a/api_docs/kbn_core_i18n_browser.mdx +++ b/api_docs/kbn_core_i18n_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser title: "@kbn/core-i18n-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser'] --- import kbnCoreI18nBrowserObj from './kbn_core_i18n_browser.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser_mocks.mdx b/api_docs/kbn_core_i18n_browser_mocks.mdx index 5454ecf0d09ff..320071e386e90 100644 --- a/api_docs/kbn_core_i18n_browser_mocks.mdx +++ b/api_docs/kbn_core_i18n_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks title: "@kbn/core-i18n-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks'] --- import kbnCoreI18nBrowserMocksObj from './kbn_core_i18n_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server.mdx b/api_docs/kbn_core_i18n_server.mdx index 3ec06eb22be62..90f1dfad259c0 100644 --- a/api_docs/kbn_core_i18n_server.mdx +++ b/api_docs/kbn_core_i18n_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server title: "@kbn/core-i18n-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server'] --- import kbnCoreI18nServerObj from './kbn_core_i18n_server.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_internal.mdx b/api_docs/kbn_core_i18n_server_internal.mdx index b5039c4bc67ce..1bd0138226fd0 100644 --- a/api_docs/kbn_core_i18n_server_internal.mdx +++ b/api_docs/kbn_core_i18n_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-internal title: "@kbn/core-i18n-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-internal'] --- import kbnCoreI18nServerInternalObj from './kbn_core_i18n_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_mocks.mdx b/api_docs/kbn_core_i18n_server_mocks.mdx index 725e933f5771a..919f6f6d4004d 100644 --- a/api_docs/kbn_core_i18n_server_mocks.mdx +++ b/api_docs/kbn_core_i18n_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-mocks title: "@kbn/core-i18n-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-mocks'] --- import kbnCoreI18nServerMocksObj from './kbn_core_i18n_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx index b6f4c1647f24e..f3ec6b0614387 100644 --- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx +++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser-mocks title: "@kbn/core-injected-metadata-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks'] --- import kbnCoreInjectedMetadataBrowserMocksObj from './kbn_core_injected_metadata_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_internal.mdx b/api_docs/kbn_core_integrations_browser_internal.mdx index bfc3793f1c165..a2710120d7bd9 100644 --- a/api_docs/kbn_core_integrations_browser_internal.mdx +++ b/api_docs/kbn_core_integrations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal title: "@kbn/core-integrations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-internal'] --- import kbnCoreIntegrationsBrowserInternalObj from './kbn_core_integrations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_mocks.mdx b/api_docs/kbn_core_integrations_browser_mocks.mdx index 3091b83c3f4e0..9ac0212c008ec 100644 --- a/api_docs/kbn_core_integrations_browser_mocks.mdx +++ b/api_docs/kbn_core_integrations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks title: "@kbn/core-integrations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-mocks'] --- import kbnCoreIntegrationsBrowserMocksObj from './kbn_core_integrations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser.mdx b/api_docs/kbn_core_lifecycle_browser.mdx index 13ec8c0373074..7634f963f7560 100644 --- a/api_docs/kbn_core_lifecycle_browser.mdx +++ b/api_docs/kbn_core_lifecycle_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser title: "@kbn/core-lifecycle-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser'] --- import kbnCoreLifecycleBrowserObj from './kbn_core_lifecycle_browser.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser_mocks.mdx b/api_docs/kbn_core_lifecycle_browser_mocks.mdx index 645da66a54afc..d7ec223ab96af 100644 --- a/api_docs/kbn_core_lifecycle_browser_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser-mocks title: "@kbn/core-lifecycle-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser-mocks'] --- import kbnCoreLifecycleBrowserMocksObj from './kbn_core_lifecycle_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server.mdx b/api_docs/kbn_core_lifecycle_server.mdx index 4a49b41fe3c7a..8685e8ebf3ff1 100644 --- a/api_docs/kbn_core_lifecycle_server.mdx +++ b/api_docs/kbn_core_lifecycle_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server title: "@kbn/core-lifecycle-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server'] --- import kbnCoreLifecycleServerObj from './kbn_core_lifecycle_server.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server_mocks.mdx b/api_docs/kbn_core_lifecycle_server_mocks.mdx index 6e344845198d1..32ffb0a514ea4 100644 --- a/api_docs/kbn_core_lifecycle_server_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server-mocks title: "@kbn/core-lifecycle-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server-mocks'] --- import kbnCoreLifecycleServerMocksObj from './kbn_core_lifecycle_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_browser_mocks.mdx b/api_docs/kbn_core_logging_browser_mocks.mdx index da824730dd0ae..03ea218ce0933 100644 --- a/api_docs/kbn_core_logging_browser_mocks.mdx +++ b/api_docs/kbn_core_logging_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-browser-mocks title: "@kbn/core-logging-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-browser-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-browser-mocks'] --- import kbnCoreLoggingBrowserMocksObj from './kbn_core_logging_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_common_internal.mdx b/api_docs/kbn_core_logging_common_internal.mdx index 32a51b5fb91c5..5f4c4c1d3434f 100644 --- a/api_docs/kbn_core_logging_common_internal.mdx +++ b/api_docs/kbn_core_logging_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-common-internal title: "@kbn/core-logging-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-common-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-common-internal'] --- import kbnCoreLoggingCommonInternalObj from './kbn_core_logging_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx index c87d5b811b65b..6ba7b28edfe7e 100644 --- a/api_docs/kbn_core_logging_server.mdx +++ b/api_docs/kbn_core_logging_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server title: "@kbn/core-logging-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server'] --- import kbnCoreLoggingServerObj from './kbn_core_logging_server.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx index eb5d835768423..436ddd5275565 100644 --- a/api_docs/kbn_core_logging_server_internal.mdx +++ b/api_docs/kbn_core_logging_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal title: "@kbn/core-logging-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal'] --- import kbnCoreLoggingServerInternalObj from './kbn_core_logging_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx index 5e5ced0c83e6a..671fe23901a35 100644 --- a/api_docs/kbn_core_logging_server_mocks.mdx +++ b/api_docs/kbn_core_logging_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks title: "@kbn/core-logging-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks'] --- import kbnCoreLoggingServerMocksObj from './kbn_core_logging_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_internal.mdx b/api_docs/kbn_core_metrics_collectors_server_internal.mdx index 54da9f44bbb2b..1be4630846396 100644 --- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-internal title: "@kbn/core-metrics-collectors-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-internal'] --- import kbnCoreMetricsCollectorsServerInternalObj from './kbn_core_metrics_collectors_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx index b0876df5dc95a..2dff5bdc9ef50 100644 --- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-mocks title: "@kbn/core-metrics-collectors-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-mocks'] --- import kbnCoreMetricsCollectorsServerMocksObj from './kbn_core_metrics_collectors_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server.mdx b/api_docs/kbn_core_metrics_server.mdx index 3f7fb7224b068..4bf35ba1d87ca 100644 --- a/api_docs/kbn_core_metrics_server.mdx +++ b/api_docs/kbn_core_metrics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server title: "@kbn/core-metrics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server'] --- import kbnCoreMetricsServerObj from './kbn_core_metrics_server.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_internal.mdx b/api_docs/kbn_core_metrics_server_internal.mdx index fa29c03f5e567..d5a90214437ae 100644 --- a/api_docs/kbn_core_metrics_server_internal.mdx +++ b/api_docs/kbn_core_metrics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal title: "@kbn/core-metrics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-internal'] --- import kbnCoreMetricsServerInternalObj from './kbn_core_metrics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_mocks.mdx b/api_docs/kbn_core_metrics_server_mocks.mdx index 120d07880f505..0ea893f947feb 100644 --- a/api_docs/kbn_core_metrics_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks title: "@kbn/core-metrics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-mocks'] --- import kbnCoreMetricsServerMocksObj from './kbn_core_metrics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_mount_utils_browser.mdx b/api_docs/kbn_core_mount_utils_browser.mdx index 94ac79598c7da..a834eeb9915b0 100644 --- a/api_docs/kbn_core_mount_utils_browser.mdx +++ b/api_docs/kbn_core_mount_utils_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser title: "@kbn/core-mount-utils-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-mount-utils-browser plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser'] --- import kbnCoreMountUtilsBrowserObj from './kbn_core_mount_utils_browser.devdocs.json'; diff --git a/api_docs/kbn_core_node_server.mdx b/api_docs/kbn_core_node_server.mdx index 29e4e4bdf3c48..351c75d615f2c 100644 --- a/api_docs/kbn_core_node_server.mdx +++ b/api_docs/kbn_core_node_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server title: "@kbn/core-node-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server'] --- import kbnCoreNodeServerObj from './kbn_core_node_server.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_internal.mdx b/api_docs/kbn_core_node_server_internal.mdx index 6d4e5f4cb988a..7e66a33397f22 100644 --- a/api_docs/kbn_core_node_server_internal.mdx +++ b/api_docs/kbn_core_node_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal title: "@kbn/core-node-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-internal'] --- import kbnCoreNodeServerInternalObj from './kbn_core_node_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_mocks.mdx b/api_docs/kbn_core_node_server_mocks.mdx index e15e2360557cb..3b646283aeae5 100644 --- a/api_docs/kbn_core_node_server_mocks.mdx +++ b/api_docs/kbn_core_node_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks title: "@kbn/core-node-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-mocks'] --- import kbnCoreNodeServerMocksObj from './kbn_core_node_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser.mdx b/api_docs/kbn_core_notifications_browser.mdx index 168b684faa336..5a691c7d53f5b 100644 --- a/api_docs/kbn_core_notifications_browser.mdx +++ b/api_docs/kbn_core_notifications_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser title: "@kbn/core-notifications-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser'] --- import kbnCoreNotificationsBrowserObj from './kbn_core_notifications_browser.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_internal.mdx b/api_docs/kbn_core_notifications_browser_internal.mdx index 43436cb44a903..5482667c10f57 100644 --- a/api_docs/kbn_core_notifications_browser_internal.mdx +++ b/api_docs/kbn_core_notifications_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal title: "@kbn/core-notifications-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-internal'] --- import kbnCoreNotificationsBrowserInternalObj from './kbn_core_notifications_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_mocks.mdx b/api_docs/kbn_core_notifications_browser_mocks.mdx index 00fb326f05d9e..d0e0b2add9c32 100644 --- a/api_docs/kbn_core_notifications_browser_mocks.mdx +++ b/api_docs/kbn_core_notifications_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks title: "@kbn/core-notifications-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-mocks'] --- import kbnCoreNotificationsBrowserMocksObj from './kbn_core_notifications_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser.mdx b/api_docs/kbn_core_overlays_browser.mdx index 48c986de81c64..16f497e9e3995 100644 --- a/api_docs/kbn_core_overlays_browser.mdx +++ b/api_docs/kbn_core_overlays_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser title: "@kbn/core-overlays-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser'] --- import kbnCoreOverlaysBrowserObj from './kbn_core_overlays_browser.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_internal.mdx b/api_docs/kbn_core_overlays_browser_internal.mdx index 81529bde2aefc..995696ef7d06c 100644 --- a/api_docs/kbn_core_overlays_browser_internal.mdx +++ b/api_docs/kbn_core_overlays_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal title: "@kbn/core-overlays-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-internal'] --- import kbnCoreOverlaysBrowserInternalObj from './kbn_core_overlays_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_mocks.mdx b/api_docs/kbn_core_overlays_browser_mocks.mdx index bc20ccaab91b1..6b146f08e2436 100644 --- a/api_docs/kbn_core_overlays_browser_mocks.mdx +++ b/api_docs/kbn_core_overlays_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks title: "@kbn/core-overlays-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-mocks'] --- import kbnCoreOverlaysBrowserMocksObj from './kbn_core_overlays_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser.mdx b/api_docs/kbn_core_plugins_browser.mdx index 6393d34c89369..6cc83c5b26512 100644 --- a/api_docs/kbn_core_plugins_browser.mdx +++ b/api_docs/kbn_core_plugins_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser title: "@kbn/core-plugins-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser'] --- import kbnCorePluginsBrowserObj from './kbn_core_plugins_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser_mocks.mdx b/api_docs/kbn_core_plugins_browser_mocks.mdx index be176a0fcbfca..f8ccb7d2e8335 100644 --- a/api_docs/kbn_core_plugins_browser_mocks.mdx +++ b/api_docs/kbn_core_plugins_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser-mocks title: "@kbn/core-plugins-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index 40cbdddadf05a..3d77f141edf8b 100644 --- a/api_docs/kbn_core_plugins_server.mdx +++ b/api_docs/kbn_core_plugins_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server title: "@kbn/core-plugins-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server'] --- import kbnCorePluginsServerObj from './kbn_core_plugins_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server_mocks.mdx b/api_docs/kbn_core_plugins_server_mocks.mdx index f45e2ce07cdff..b984939b7c345 100644 --- a/api_docs/kbn_core_plugins_server_mocks.mdx +++ b/api_docs/kbn_core_plugins_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server-mocks title: "@kbn/core-plugins-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server-mocks'] --- import kbnCorePluginsServerMocksObj from './kbn_core_plugins_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx index 62bf0bf81aed5..027553eab155b 100644 --- a/api_docs/kbn_core_preboot_server.mdx +++ b/api_docs/kbn_core_preboot_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server title: "@kbn/core-preboot-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server'] --- import kbnCorePrebootServerObj from './kbn_core_preboot_server.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server_mocks.mdx b/api_docs/kbn_core_preboot_server_mocks.mdx index 017e9f1b2506e..5af7cf3952e25 100644 --- a/api_docs/kbn_core_preboot_server_mocks.mdx +++ b/api_docs/kbn_core_preboot_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks title: "@kbn/core-preboot-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks'] --- import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx index 1e03e923a6abb..f7a78c1c36e10 100644 --- a/api_docs/kbn_core_rendering_browser_mocks.mdx +++ b/api_docs/kbn_core_rendering_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser-mocks title: "@kbn/core-rendering-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-browser-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser-mocks'] --- import kbnCoreRenderingBrowserMocksObj from './kbn_core_rendering_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_internal.mdx b/api_docs/kbn_core_rendering_server_internal.mdx index a2c6f6a135891..5f635027669fc 100644 --- a/api_docs/kbn_core_rendering_server_internal.mdx +++ b/api_docs/kbn_core_rendering_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-internal title: "@kbn/core-rendering-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-internal'] --- import kbnCoreRenderingServerInternalObj from './kbn_core_rendering_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_mocks.mdx b/api_docs/kbn_core_rendering_server_mocks.mdx index 5efcd36d3c2f1..acb9202961598 100644 --- a/api_docs/kbn_core_rendering_server_mocks.mdx +++ b/api_docs/kbn_core_rendering_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-mocks title: "@kbn/core-rendering-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-mocks'] --- import kbnCoreRenderingServerMocksObj from './kbn_core_rendering_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_root_server_internal.mdx b/api_docs/kbn_core_root_server_internal.mdx index 8fcb17d33799b..92ed3aa1d9eb5 100644 --- a/api_docs/kbn_core_root_server_internal.mdx +++ b/api_docs/kbn_core_root_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-root-server-internal title: "@kbn/core-root-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-root-server-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-root-server-internal'] --- import kbnCoreRootServerInternalObj from './kbn_core_root_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx index e612a591bde99..ec9f2a80f5ba7 100644 --- a/api_docs/kbn_core_saved_objects_api_browser.mdx +++ b/api_docs/kbn_core_saved_objects_api_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-browser title: "@kbn/core-saved-objects-api-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-browser plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-browser'] --- import kbnCoreSavedObjectsApiBrowserObj from './kbn_core_saved_objects_api_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server.mdx b/api_docs/kbn_core_saved_objects_api_server.mdx index 7ef3414196eb2..98038e947f20b 100644 --- a/api_docs/kbn_core_saved_objects_api_server.mdx +++ b/api_docs/kbn_core_saved_objects_api_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server title: "@kbn/core-saved-objects-api-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server'] --- import kbnCoreSavedObjectsApiServerObj from './kbn_core_saved_objects_api_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server_internal.mdx b/api_docs/kbn_core_saved_objects_api_server_internal.mdx index bd3e5ce1ca654..3139f6110e547 100644 --- a/api_docs/kbn_core_saved_objects_api_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_api_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-internal title: "@kbn/core-saved-objects-api-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-internal'] --- import kbnCoreSavedObjectsApiServerInternalObj from './kbn_core_saved_objects_api_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx index b227088b8ce33..065f46cf4e820 100644 --- a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-mocks title: "@kbn/core-saved-objects-api-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-mocks'] --- import kbnCoreSavedObjectsApiServerMocksObj from './kbn_core_saved_objects_api_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_internal.mdx b/api_docs/kbn_core_saved_objects_base_server_internal.mdx index dc01333be48fd..3f10bee63a61d 100644 --- a/api_docs/kbn_core_saved_objects_base_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-internal title: "@kbn/core-saved-objects-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-internal'] --- import kbnCoreSavedObjectsBaseServerInternalObj from './kbn_core_saved_objects_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx index f77e460103e81..7ccd03edc5a0c 100644 --- a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-mocks title: "@kbn/core-saved-objects-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-mocks'] --- import kbnCoreSavedObjectsBaseServerMocksObj from './kbn_core_saved_objects_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser.mdx b/api_docs/kbn_core_saved_objects_browser.mdx index 15088857cff11..7735c3c19246c 100644 --- a/api_docs/kbn_core_saved_objects_browser.mdx +++ b/api_docs/kbn_core_saved_objects_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser title: "@kbn/core-saved-objects-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser'] --- import kbnCoreSavedObjectsBrowserObj from './kbn_core_saved_objects_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_internal.mdx b/api_docs/kbn_core_saved_objects_browser_internal.mdx index db64ea4441a6d..3580981538bdb 100644 --- a/api_docs/kbn_core_saved_objects_browser_internal.mdx +++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-internal title: "@kbn/core-saved-objects-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-internal'] --- import kbnCoreSavedObjectsBrowserInternalObj from './kbn_core_saved_objects_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_mocks.mdx b/api_docs/kbn_core_saved_objects_browser_mocks.mdx index 9df9c56636934..fd12469bd3b69 100644 --- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-mocks title: "@kbn/core-saved-objects-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-mocks'] --- import kbnCoreSavedObjectsBrowserMocksObj from './kbn_core_saved_objects_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx index c614180a95d9d..8dc57fcc64442 100644 --- a/api_docs/kbn_core_saved_objects_common.mdx +++ b/api_docs/kbn_core_saved_objects_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-common title: "@kbn/core-saved-objects-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-common plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-common'] --- import kbnCoreSavedObjectsCommonObj from './kbn_core_saved_objects_common.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx index 874328bfd37ac..c7d38a2ea1a52 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-internal title: "@kbn/core-saved-objects-import-export-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-internal'] --- import kbnCoreSavedObjectsImportExportServerInternalObj from './kbn_core_saved_objects_import_export_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx index 1b0de928659f7..23256b1b9a100 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-mocks title: "@kbn/core-saved-objects-import-export-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-mocks'] --- import kbnCoreSavedObjectsImportExportServerMocksObj from './kbn_core_saved_objects_import_export_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx index d496c5b227f19..14c61ad58bf9a 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-internal title: "@kbn/core-saved-objects-migration-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-internal'] --- import kbnCoreSavedObjectsMigrationServerInternalObj from './kbn_core_saved_objects_migration_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx index f51d25fce00d9..03329c6854e09 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-mocks title: "@kbn/core-saved-objects-migration-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-mocks'] --- import kbnCoreSavedObjectsMigrationServerMocksObj from './kbn_core_saved_objects_migration_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx index b304f9a201346..8da1b589d6fc8 100644 --- a/api_docs/kbn_core_saved_objects_server.mdx +++ b/api_docs/kbn_core_saved_objects_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server title: "@kbn/core-saved-objects-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server'] --- import kbnCoreSavedObjectsServerObj from './kbn_core_saved_objects_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_internal.mdx b/api_docs/kbn_core_saved_objects_server_internal.mdx index 4bb0378d10981..17611b991137f 100644 --- a/api_docs/kbn_core_saved_objects_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-internal title: "@kbn/core-saved-objects-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-internal'] --- import kbnCoreSavedObjectsServerInternalObj from './kbn_core_saved_objects_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_mocks.mdx b/api_docs/kbn_core_saved_objects_server_mocks.mdx index 5e3e3db11aaae..7512218b0d03a 100644 --- a/api_docs/kbn_core_saved_objects_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-mocks title: "@kbn/core-saved-objects-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-mocks'] --- import kbnCoreSavedObjectsServerMocksObj from './kbn_core_saved_objects_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_utils_server.mdx b/api_docs/kbn_core_saved_objects_utils_server.mdx index 070051017df34..ea8e661124b6a 100644 --- a/api_docs/kbn_core_saved_objects_utils_server.mdx +++ b/api_docs/kbn_core_saved_objects_utils_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-utils-server title: "@kbn/core-saved-objects-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-utils-server plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server'] --- import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx index 83f8c7b42b7e4..1e0588cbbc631 100644 --- a/api_docs/kbn_core_status_common.mdx +++ b/api_docs/kbn_core_status_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common title: "@kbn/core-status-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common'] --- import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json'; diff --git a/api_docs/kbn_core_status_common_internal.mdx b/api_docs/kbn_core_status_common_internal.mdx index 60cd45191f494..4ab40fc035f9b 100644 --- a/api_docs/kbn_core_status_common_internal.mdx +++ b/api_docs/kbn_core_status_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common-internal title: "@kbn/core-status-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common-internal'] --- import kbnCoreStatusCommonInternalObj from './kbn_core_status_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx index 740ef9fd2aa0a..7f5c74b61e971 100644 --- a/api_docs/kbn_core_status_server.mdx +++ b/api_docs/kbn_core_status_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server title: "@kbn/core-status-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server'] --- import kbnCoreStatusServerObj from './kbn_core_status_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_internal.mdx b/api_docs/kbn_core_status_server_internal.mdx index 4ead8772e465e..50367d5f9fc52 100644 --- a/api_docs/kbn_core_status_server_internal.mdx +++ b/api_docs/kbn_core_status_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-internal title: "@kbn/core-status-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-internal'] --- import kbnCoreStatusServerInternalObj from './kbn_core_status_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_mocks.mdx b/api_docs/kbn_core_status_server_mocks.mdx index c6bc2c368a305..45f05033fae27 100644 --- a/api_docs/kbn_core_status_server_mocks.mdx +++ b/api_docs/kbn_core_status_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-mocks title: "@kbn/core-status-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-mocks'] --- import kbnCoreStatusServerMocksObj from './kbn_core_status_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx index eefcab26b2c34..e7d04d88cc9af 100644 --- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx +++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-deprecations-getters title: "@kbn/core-test-helpers-deprecations-getters" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-deprecations-getters'] --- import kbnCoreTestHelpersDeprecationsGettersObj from './kbn_core_test_helpers_deprecations_getters.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx index 02089363ddaa8..eba8a8a9686c4 100644 --- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx +++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-http-setup-browser title: "@kbn/core-test-helpers-http-setup-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-http-setup-browser'] --- import kbnCoreTestHelpersHttpSetupBrowserObj from './kbn_core_test_helpers_http_setup_browser.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_kbn_server.mdx b/api_docs/kbn_core_test_helpers_kbn_server.mdx index 1a7eae4a7f7e7..0a3f5cf95bfc6 100644 --- a/api_docs/kbn_core_test_helpers_kbn_server.mdx +++ b/api_docs/kbn_core_test_helpers_kbn_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-kbn-server title: "@kbn/core-test-helpers-kbn-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-kbn-server plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index 6d223bec37e3e..bf69775494d14 100644 --- a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx +++ b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-so-type-serializer title: "@kbn/core-test-helpers-so-type-serializer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-so-type-serializer plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-so-type-serializer'] --- import kbnCoreTestHelpersSoTypeSerializerObj from './kbn_core_test_helpers_so_type_serializer.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_test_utils.mdx b/api_docs/kbn_core_test_helpers_test_utils.mdx index db21b0bf801d4..14c45a3932e59 100644 --- a/api_docs/kbn_core_test_helpers_test_utils.mdx +++ b/api_docs/kbn_core_test_helpers_test_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-test-utils title: "@kbn/core-test-helpers-test-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-test-utils plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-test-utils'] --- import kbnCoreTestHelpersTestUtilsObj from './kbn_core_test_helpers_test_utils.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx index 912c7f7825bba..e0758c49b0c2b 100644 --- a/api_docs/kbn_core_theme_browser.mdx +++ b/api_docs/kbn_core_theme_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser title: "@kbn/core-theme-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser'] --- import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_internal.mdx b/api_docs/kbn_core_theme_browser_internal.mdx index 1a6cc270660af..4c21a1e34e282 100644 --- a/api_docs/kbn_core_theme_browser_internal.mdx +++ b/api_docs/kbn_core_theme_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-internal title: "@kbn/core-theme-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-internal'] --- import kbnCoreThemeBrowserInternalObj from './kbn_core_theme_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx index 7e556dd82bf1f..e3344bed7ee13 100644 --- a/api_docs/kbn_core_theme_browser_mocks.mdx +++ b/api_docs/kbn_core_theme_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks title: "@kbn/core-theme-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks'] --- import kbnCoreThemeBrowserMocksObj from './kbn_core_theme_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser.mdx b/api_docs/kbn_core_ui_settings_browser.mdx index 572de25075cab..267c9a1c8bc70 100644 --- a/api_docs/kbn_core_ui_settings_browser.mdx +++ b/api_docs/kbn_core_ui_settings_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser title: "@kbn/core-ui-settings-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser'] --- import kbnCoreUiSettingsBrowserObj from './kbn_core_ui_settings_browser.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_internal.mdx b/api_docs/kbn_core_ui_settings_browser_internal.mdx index 161d8e08716ff..a40cbb4485ef2 100644 --- a/api_docs/kbn_core_ui_settings_browser_internal.mdx +++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-internal title: "@kbn/core-ui-settings-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-internal'] --- import kbnCoreUiSettingsBrowserInternalObj from './kbn_core_ui_settings_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_mocks.mdx b/api_docs/kbn_core_ui_settings_browser_mocks.mdx index 36cf64543fbc7..21257d942cf66 100644 --- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-mocks title: "@kbn/core-ui-settings-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks'] --- import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx index 6c86cc55bd81b..4d2cd9d021953 100644 --- a/api_docs/kbn_core_ui_settings_common.mdx +++ b/api_docs/kbn_core_ui_settings_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-common title: "@kbn/core-ui-settings-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-common plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-common'] --- import kbnCoreUiSettingsCommonObj from './kbn_core_ui_settings_common.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server.mdx b/api_docs/kbn_core_ui_settings_server.mdx index a90ae3720cdc8..99858434c5590 100644 --- a/api_docs/kbn_core_ui_settings_server.mdx +++ b/api_docs/kbn_core_ui_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server title: "@kbn/core-ui-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server'] --- import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx index 0be820a4a93d0..b96cefe57541c 100644 --- a/api_docs/kbn_core_ui_settings_server_internal.mdx +++ b/api_docs/kbn_core_ui_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-internal title: "@kbn/core-ui-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-internal'] --- import kbnCoreUiSettingsServerInternalObj from './kbn_core_ui_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_mocks.mdx b/api_docs/kbn_core_ui_settings_server_mocks.mdx index 7f9b222329db4..08ce13d16e89d 100644 --- a/api_docs/kbn_core_ui_settings_server_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-mocks title: "@kbn/core-ui-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-mocks'] --- import kbnCoreUiSettingsServerMocksObj from './kbn_core_ui_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx index fea7f5ed2ceee..0dc03683bea93 100644 --- a/api_docs/kbn_core_usage_data_server.mdx +++ b/api_docs/kbn_core_usage_data_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server title: "@kbn/core-usage-data-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server'] --- import kbnCoreUsageDataServerObj from './kbn_core_usage_data_server.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_internal.mdx b/api_docs/kbn_core_usage_data_server_internal.mdx index b3277a43995af..2270b4d07ce95 100644 --- a/api_docs/kbn_core_usage_data_server_internal.mdx +++ b/api_docs/kbn_core_usage_data_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-internal title: "@kbn/core-usage-data-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-internal plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-internal'] --- import kbnCoreUsageDataServerInternalObj from './kbn_core_usage_data_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_mocks.mdx b/api_docs/kbn_core_usage_data_server_mocks.mdx index 7b31ebae39a22..b2011b83d32ec 100644 --- a/api_docs/kbn_core_usage_data_server_mocks.mdx +++ b/api_docs/kbn_core_usage_data_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-mocks title: "@kbn/core-usage-data-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks'] --- import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index 00008b53c8648..53cee225dec5c 100644 --- a/api_docs/kbn_crypto.mdx +++ b/api_docs/kbn_crypto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto title: "@kbn/crypto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto'] --- import kbnCryptoObj from './kbn_crypto.devdocs.json'; diff --git a/api_docs/kbn_crypto_browser.mdx b/api_docs/kbn_crypto_browser.mdx index 504a3fbb55403..34a9fc1eb2d7f 100644 --- a/api_docs/kbn_crypto_browser.mdx +++ b/api_docs/kbn_crypto_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser title: "@kbn/crypto-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto-browser plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index 2677ffd1f51db..e5ac24151acc6 100644 --- a/api_docs/kbn_cypress_config.mdx +++ b/api_docs/kbn_cypress_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cypress-config title: "@kbn/cypress-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cypress-config plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config'] --- import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index a07ea089b6f87..26677fcb7e705 100644 --- a/api_docs/kbn_datemath.mdx +++ b/api_docs/kbn_datemath.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-datemath title: "@kbn/datemath" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/datemath plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath'] --- import kbnDatemathObj from './kbn_datemath.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx index ea822189d76fa..05b934b971a0f 100644 --- a/api_docs/kbn_dev_cli_errors.mdx +++ b/api_docs/kbn_dev_cli_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors title: "@kbn/dev-cli-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-errors plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors'] --- import kbnDevCliErrorsObj from './kbn_dev_cli_errors.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx index d40ec835b9e76..b2cc1c676e238 100644 --- a/api_docs/kbn_dev_cli_runner.mdx +++ b/api_docs/kbn_dev_cli_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner title: "@kbn/dev-cli-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-runner plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner'] --- import kbnDevCliRunnerObj from './kbn_dev_cli_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx index fc2ebcab638e0..68eb2a336d9eb 100644 --- a/api_docs/kbn_dev_proc_runner.mdx +++ b/api_docs/kbn_dev_proc_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner title: "@kbn/dev-proc-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-proc-runner plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner'] --- import kbnDevProcRunnerObj from './kbn_dev_proc_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx index f0a97112d298f..009f09d1ac90f 100644 --- a/api_docs/kbn_dev_utils.mdx +++ b/api_docs/kbn_dev_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils title: "@kbn/dev-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-utils plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] --- import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index 9dac46eec467a..226eaa582c64f 100644 --- a/api_docs/kbn_doc_links.mdx +++ b/api_docs/kbn_doc_links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links title: "@kbn/doc-links" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/doc-links plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links'] --- import kbnDocLinksObj from './kbn_doc_links.devdocs.json'; diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx index 4750f384591e8..4f889e2eb1eca 100644 --- a/api_docs/kbn_docs_utils.mdx +++ b/api_docs/kbn_docs_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils title: "@kbn/docs-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/docs-utils plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils'] --- import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json'; diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx index 94b78fe968def..72eb0e3d1017f 100644 --- a/api_docs/kbn_ebt_tools.mdx +++ b/api_docs/kbn_ebt_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ebt-tools title: "@kbn/ebt-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ebt-tools plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools'] --- import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json'; diff --git a/api_docs/kbn_ecs.mdx b/api_docs/kbn_ecs.mdx index d9090e73fe5b1..114053711d804 100644 --- a/api_docs/kbn_ecs.mdx +++ b/api_docs/kbn_ecs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs title: "@kbn/ecs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ecs plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs'] --- import kbnEcsObj from './kbn_ecs.devdocs.json'; diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx index a43c74d25f048..4c81dda2d334e 100644 --- a/api_docs/kbn_ecs_data_quality_dashboard.mdx +++ b/api_docs/kbn_ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs-data-quality-dashboard title: "@kbn/ecs-data-quality-dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ecs-data-quality-dashboard plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard'] --- import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index ac68e097276a4..04ffcc723910a 100644 --- a/api_docs/kbn_es.mdx +++ b/api_docs/kbn_es.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es title: "@kbn/es" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es'] --- import kbnEsObj from './kbn_es.devdocs.json'; diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx index 0897255161f33..899f67e2a46fc 100644 --- a/api_docs/kbn_es_archiver.mdx +++ b/api_docs/kbn_es_archiver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver title: "@kbn/es-archiver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-archiver plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver'] --- import kbnEsArchiverObj from './kbn_es_archiver.devdocs.json'; diff --git a/api_docs/kbn_es_errors.mdx b/api_docs/kbn_es_errors.mdx index 53fd223a96d12..d2f123adc8600 100644 --- a/api_docs/kbn_es_errors.mdx +++ b/api_docs/kbn_es_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors title: "@kbn/es-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-errors plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors'] --- import kbnEsErrorsObj from './kbn_es_errors.devdocs.json'; diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index b12dfe5a0ed33..de8a8e44c2e89 100644 --- a/api_docs/kbn_es_query.mdx +++ b/api_docs/kbn_es_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-query title: "@kbn/es-query" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-query plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] --- import kbnEsQueryObj from './kbn_es_query.devdocs.json'; diff --git a/api_docs/kbn_es_types.mdx b/api_docs/kbn_es_types.mdx index d08165b170566..511ea3308276b 100644 --- a/api_docs/kbn_es_types.mdx +++ b/api_docs/kbn_es_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-types title: "@kbn/es-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-types plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-types'] --- import kbnEsTypesObj from './kbn_es_types.devdocs.json'; diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx index 898385df69f30..4d131c6523007 100644 --- a/api_docs/kbn_eslint_plugin_imports.mdx +++ b/api_docs/kbn_eslint_plugin_imports.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports title: "@kbn/eslint-plugin-imports" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/eslint-plugin-imports plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx index 3862c35c7e854..93f90b03762ad 100644 --- a/api_docs/kbn_expandable_flyout.mdx +++ b/api_docs/kbn_expandable_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-expandable-flyout title: "@kbn/expandable-flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/expandable-flyout plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/expandable-flyout'] --- import kbnExpandableFlyoutObj from './kbn_expandable_flyout.devdocs.json'; diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx index b3b5fb2cad4f1..56c31edee2192 100644 --- a/api_docs/kbn_field_types.mdx +++ b/api_docs/kbn_field_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-types title: "@kbn/field-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-types plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index bbf6ea6834ba4..533652fd78545 100644 --- a/api_docs/kbn_find_used_node_modules.mdx +++ b/api_docs/kbn_find_used_node_modules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules title: "@kbn/find-used-node-modules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/find-used-node-modules plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules'] --- import kbnFindUsedNodeModulesObj from './kbn_find_used_node_modules.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_services.mdx b/api_docs/kbn_ftr_common_functional_services.mdx index 78353f0646b14..bc36c9a0d394c 100644 --- a/api_docs/kbn_ftr_common_functional_services.mdx +++ b/api_docs/kbn_ftr_common_functional_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-services title: "@kbn/ftr-common-functional-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-services plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services'] --- import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index f815b2d2ec357..dc56e0660a66c 100644 --- a/api_docs/kbn_generate.mdx +++ b/api_docs/kbn_generate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate title: "@kbn/generate" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] --- import kbnGenerateObj from './kbn_generate.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index b4500c0d32bdf..7ec9a2f6a31fb 100644 --- a/api_docs/kbn_guided_onboarding.mdx +++ b/api_docs/kbn_guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-guided-onboarding title: "@kbn/guided-onboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/guided-onboarding plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/guided-onboarding'] --- import kbnGuidedOnboardingObj from './kbn_guided_onboarding.devdocs.json'; diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx index 7fb7b5ec4fd6f..dffc90d4eadf4 100644 --- a/api_docs/kbn_handlebars.mdx +++ b/api_docs/kbn_handlebars.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars title: "@kbn/handlebars" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/handlebars plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars'] --- import kbnHandlebarsObj from './kbn_handlebars.devdocs.json'; diff --git a/api_docs/kbn_hapi_mocks.mdx b/api_docs/kbn_hapi_mocks.mdx index 56282095c8efe..1a0608d8c3c8c 100644 --- a/api_docs/kbn_hapi_mocks.mdx +++ b/api_docs/kbn_hapi_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks title: "@kbn/hapi-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/hapi-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks'] --- import kbnHapiMocksObj from './kbn_hapi_mocks.devdocs.json'; diff --git a/api_docs/kbn_health_gateway_server.mdx b/api_docs/kbn_health_gateway_server.mdx index 989b5846e9d1b..2ee913b73f7c0 100644 --- a/api_docs/kbn_health_gateway_server.mdx +++ b/api_docs/kbn_health_gateway_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-health-gateway-server title: "@kbn/health-gateway-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/health-gateway-server plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/health-gateway-server'] --- import kbnHealthGatewayServerObj from './kbn_health_gateway_server.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx index 961a6805f7a5a..687185b5e2a42 100644 --- a/api_docs/kbn_home_sample_data_card.mdx +++ b/api_docs/kbn_home_sample_data_card.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-card title: "@kbn/home-sample-data-card" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-card plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-card'] --- import kbnHomeSampleDataCardObj from './kbn_home_sample_data_card.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_tab.mdx b/api_docs/kbn_home_sample_data_tab.mdx index e7d14f3ad9439..9663f48189046 100644 --- a/api_docs/kbn_home_sample_data_tab.mdx +++ b/api_docs/kbn_home_sample_data_tab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-tab title: "@kbn/home-sample-data-tab" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-tab plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-tab'] --- import kbnHomeSampleDataTabObj from './kbn_home_sample_data_tab.devdocs.json'; diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx index 47a8bf734ac84..9437965578e96 100644 --- a/api_docs/kbn_i18n.mdx +++ b/api_docs/kbn_i18n.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n title: "@kbn/i18n" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n'] --- import kbnI18nObj from './kbn_i18n.devdocs.json'; diff --git a/api_docs/kbn_i18n_react.mdx b/api_docs/kbn_i18n_react.mdx index 3cf2eb11a12a2..ae00eea5bab97 100644 --- a/api_docs/kbn_i18n_react.mdx +++ b/api_docs/kbn_i18n_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n-react title: "@kbn/i18n-react" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n-react plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n-react'] --- import kbnI18nReactObj from './kbn_i18n_react.devdocs.json'; diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx index 44193d6d12dda..08aa17ec36b06 100644 --- a/api_docs/kbn_import_resolver.mdx +++ b/api_docs/kbn_import_resolver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver title: "@kbn/import-resolver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/import-resolver plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx index 1317ea24776e3..858624606f92e 100644 --- a/api_docs/kbn_interpreter.mdx +++ b/api_docs/kbn_interpreter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter title: "@kbn/interpreter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/interpreter plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index e7b0db9c8bbd5..f764a5dadc15a 100644 --- a/api_docs/kbn_io_ts_utils.mdx +++ b/api_docs/kbn_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils title: "@kbn/io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/io-ts-utils plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] --- import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index 15fab5802d555..371c1cda646f4 100644 --- a/api_docs/kbn_jest_serializers.mdx +++ b/api_docs/kbn_jest_serializers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers title: "@kbn/jest-serializers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/jest-serializers plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] --- import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json'; diff --git a/api_docs/kbn_journeys.mdx b/api_docs/kbn_journeys.mdx index 470db363abdf5..59dbfc9f49c4e 100644 --- a/api_docs/kbn_journeys.mdx +++ b/api_docs/kbn_journeys.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-journeys title: "@kbn/journeys" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/journeys plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/journeys'] --- import kbnJourneysObj from './kbn_journeys.devdocs.json'; diff --git a/api_docs/kbn_json_ast.mdx b/api_docs/kbn_json_ast.mdx index 598a84291db54..df49c833da0dc 100644 --- a/api_docs/kbn_json_ast.mdx +++ b/api_docs/kbn_json_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-ast title: "@kbn/json-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/json-ast plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast'] --- import kbnJsonAstObj from './kbn_json_ast.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index 4eefec1f8c7e2..61a6b57b5c3dd 100644 --- a/api_docs/kbn_kibana_manifest_schema.mdx +++ b/api_docs/kbn_kibana_manifest_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema title: "@kbn/kibana-manifest-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/kibana-manifest-schema plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema'] --- import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json'; diff --git a/api_docs/kbn_language_documentation_popover.mdx b/api_docs/kbn_language_documentation_popover.mdx index 9816d603df8e2..55eccef3cc87c 100644 --- a/api_docs/kbn_language_documentation_popover.mdx +++ b/api_docs/kbn_language_documentation_popover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-language-documentation-popover title: "@kbn/language-documentation-popover" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/language-documentation-popover plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover'] --- import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index 75001b67344fb..cfa512e42f5dc 100644 --- a/api_docs/kbn_logging.mdx +++ b/api_docs/kbn_logging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging title: "@kbn/logging" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging'] --- import kbnLoggingObj from './kbn_logging.devdocs.json'; diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx index 440db0a0e28d0..42d77cf358227 100644 --- a/api_docs/kbn_logging_mocks.mdx +++ b/api_docs/kbn_logging_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks title: "@kbn/logging-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] --- import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json'; diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx index 407971020e6a7..8d962553477fd 100644 --- a/api_docs/kbn_managed_vscode_config.mdx +++ b/api_docs/kbn_managed_vscode_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-vscode-config title: "@kbn/managed-vscode-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-vscode-config plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config'] --- import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index 3ccac97df7004..398c7dd98e703 100644 --- a/api_docs/kbn_mapbox_gl.mdx +++ b/api_docs/kbn_mapbox_gl.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl title: "@kbn/mapbox-gl" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mapbox-gl plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl'] --- import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json'; diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx index 84706d8b342c3..d131c36443b63 100644 --- a/api_docs/kbn_ml_agg_utils.mdx +++ b/api_docs/kbn_ml_agg_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils title: "@kbn/ml-agg-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-agg-utils plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils'] --- import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_date_picker.mdx b/api_docs/kbn_ml_date_picker.mdx index a6e2c81bc3ecf..22d3fdce3d4c0 100644 --- a/api_docs/kbn_ml_date_picker.mdx +++ b/api_docs/kbn_ml_date_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-picker title: "@kbn/ml-date-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-picker plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-picker'] --- import kbnMlDatePickerObj from './kbn_ml_date_picker.devdocs.json'; diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx index 1f27dba5d82fd..36e9b140dd357 100644 --- a/api_docs/kbn_ml_is_defined.mdx +++ b/api_docs/kbn_ml_is_defined.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-defined title: "@kbn/ml-is-defined" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-defined plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-defined'] --- import kbnMlIsDefinedObj from './kbn_ml_is_defined.devdocs.json'; diff --git a/api_docs/kbn_ml_is_populated_object.mdx b/api_docs/kbn_ml_is_populated_object.mdx index 817d0ceb7ad81..472f440ff93d8 100644 --- a/api_docs/kbn_ml_is_populated_object.mdx +++ b/api_docs/kbn_ml_is_populated_object.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-populated-object title: "@kbn/ml-is-populated-object" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-populated-object plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object'] --- import kbnMlIsPopulatedObjectObj from './kbn_ml_is_populated_object.devdocs.json'; diff --git a/api_docs/kbn_ml_local_storage.mdx b/api_docs/kbn_ml_local_storage.mdx index b6184d566f6e6..135e378c76474 100644 --- a/api_docs/kbn_ml_local_storage.mdx +++ b/api_docs/kbn_ml_local_storage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-local-storage title: "@kbn/ml-local-storage" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-local-storage plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-local-storage'] --- import kbnMlLocalStorageObj from './kbn_ml_local_storage.devdocs.json'; diff --git a/api_docs/kbn_ml_nested_property.mdx b/api_docs/kbn_ml_nested_property.mdx index 06d5dc24a48d5..5033a5bb43a8a 100644 --- a/api_docs/kbn_ml_nested_property.mdx +++ b/api_docs/kbn_ml_nested_property.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-nested-property title: "@kbn/ml-nested-property" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-nested-property plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-nested-property'] --- import kbnMlNestedPropertyObj from './kbn_ml_nested_property.devdocs.json'; diff --git a/api_docs/kbn_ml_query_utils.mdx b/api_docs/kbn_ml_query_utils.mdx index 9f91d1975b15d..17b931e40863c 100644 --- a/api_docs/kbn_ml_query_utils.mdx +++ b/api_docs/kbn_ml_query_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-query-utils title: "@kbn/ml-query-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-query-utils plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-query-utils'] --- import kbnMlQueryUtilsObj from './kbn_ml_query_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx index e6b316f9b493d..541f2a45aa3fa 100644 --- a/api_docs/kbn_ml_string_hash.mdx +++ b/api_docs/kbn_ml_string_hash.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-string-hash title: "@kbn/ml-string-hash" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-string-hash plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash'] --- import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json'; diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index 2964e3e75e68c..80cfb427c5956 100644 --- a/api_docs/kbn_ml_url_state.mdx +++ b/api_docs/kbn_ml_url_state.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-url-state title: "@kbn/ml-url-state" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-url-state plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state'] --- import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index 2822ce78ac79e..53f3d0f4f2754 100644 --- a/api_docs/kbn_monaco.mdx +++ b/api_docs/kbn_monaco.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-monaco title: "@kbn/monaco" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/monaco plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] --- import kbnMonacoObj from './kbn_monaco.devdocs.json'; diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx index 255f023b11bdc..20f324225ad3d 100644 --- a/api_docs/kbn_object_versioning.mdx +++ b/api_docs/kbn_object_versioning.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning title: "@kbn/object-versioning" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-versioning plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning'] --- import kbnObjectVersioningObj from './kbn_object_versioning.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index 823d3cc99beb1..40f82a9ae527f 100644 --- a/api_docs/kbn_optimizer.mdx +++ b/api_docs/kbn_optimizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer title: "@kbn/optimizer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer'] --- import kbnOptimizerObj from './kbn_optimizer.devdocs.json'; diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx index 711b8131d1a99..ed7d0621ca5e6 100644 --- a/api_docs/kbn_optimizer_webpack_helpers.mdx +++ b/api_docs/kbn_optimizer_webpack_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers title: "@kbn/optimizer-webpack-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer-webpack-helpers plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers'] --- import kbnOptimizerWebpackHelpersObj from './kbn_optimizer_webpack_helpers.devdocs.json'; diff --git a/api_docs/kbn_osquery_io_ts_types.mdx b/api_docs/kbn_osquery_io_ts_types.mdx index 98ec89ad35531..b3e3988827f08 100644 --- a/api_docs/kbn_osquery_io_ts_types.mdx +++ b/api_docs/kbn_osquery_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-osquery-io-ts-types title: "@kbn/osquery-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/osquery-io-ts-types plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types'] --- import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index 6679fb8b09926..bc5e45b68a8b8 100644 --- a/api_docs/kbn_performance_testing_dataset_extractor.mdx +++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor title: "@kbn/performance-testing-dataset-extractor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/performance-testing-dataset-extractor plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor'] --- import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json'; diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index 67125c36f062b..9152bbf544967 100644 --- a/api_docs/kbn_plugin_generator.mdx +++ b/api_docs/kbn_plugin_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator title: "@kbn/plugin-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-generator plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator'] --- import kbnPluginGeneratorObj from './kbn_plugin_generator.devdocs.json'; diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx index 1f37e88733bc9..e3945bad5bdab 100644 --- a/api_docs/kbn_plugin_helpers.mdx +++ b/api_docs/kbn_plugin_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers title: "@kbn/plugin-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-helpers plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx index 19d7e939a0ce9..9c2d66a2101d8 100644 --- a/api_docs/kbn_react_field.mdx +++ b/api_docs/kbn_react_field.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-field title: "@kbn/react-field" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-field plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx index ae8dbd01d6297..4932d0b287cef 100644 --- a/api_docs/kbn_repo_file_maps.mdx +++ b/api_docs/kbn_repo_file_maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-file-maps title: "@kbn/repo-file-maps" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-file-maps plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-file-maps'] --- import kbnRepoFileMapsObj from './kbn_repo_file_maps.devdocs.json'; diff --git a/api_docs/kbn_repo_linter.mdx b/api_docs/kbn_repo_linter.mdx index d15555bc08741..e4218b783fd33 100644 --- a/api_docs/kbn_repo_linter.mdx +++ b/api_docs/kbn_repo_linter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-linter title: "@kbn/repo-linter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-linter plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-linter'] --- import kbnRepoLinterObj from './kbn_repo_linter.devdocs.json'; diff --git a/api_docs/kbn_repo_path.mdx b/api_docs/kbn_repo_path.mdx index 0e3e7fb371091..2b07a7dca3d40 100644 --- a/api_docs/kbn_repo_path.mdx +++ b/api_docs/kbn_repo_path.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-path title: "@kbn/repo-path" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-path plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-path'] --- import kbnRepoPathObj from './kbn_repo_path.devdocs.json'; diff --git a/api_docs/kbn_repo_source_classifier.mdx b/api_docs/kbn_repo_source_classifier.mdx index 32a3e2647acfb..bef2abcb9662a 100644 --- a/api_docs/kbn_repo_source_classifier.mdx +++ b/api_docs/kbn_repo_source_classifier.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-source-classifier title: "@kbn/repo-source-classifier" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-source-classifier plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier'] --- import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index 138f755a5bc5d..3f765f43335fc 100644 --- a/api_docs/kbn_rison.mdx +++ b/api_docs/kbn_rison.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rison title: "@kbn/rison" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rison plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index c7e8de258d330..076387e930019 100644 --- a/api_docs/kbn_rule_data_utils.mdx +++ b/api_docs/kbn_rule_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils title: "@kbn/rule-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rule-data-utils plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils'] --- import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json'; diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx index 21f1db706e8b4..ad0d9e9fdbed9 100644 --- a/api_docs/kbn_security_solution_side_nav.mdx +++ b/api_docs/kbn_security_solution_side_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-side-nav title: "@kbn/security-solution-side-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-side-nav plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-side-nav'] --- import kbnSecuritySolutionSideNavObj from './kbn_security_solution_side_nav.devdocs.json'; diff --git a/api_docs/kbn_security_solution_storybook_config.mdx b/api_docs/kbn_security_solution_storybook_config.mdx index 470937ef425a8..f80b298a3c457 100644 --- a/api_docs/kbn_security_solution_storybook_config.mdx +++ b/api_docs/kbn_security_solution_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-storybook-config title: "@kbn/security-solution-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-storybook-config plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-storybook-config'] --- import kbnSecuritySolutionStorybookConfigObj from './kbn_security_solution_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index 961887fcc6e4b..2c79e220d703a 100644 --- a/api_docs/kbn_securitysolution_autocomplete.mdx +++ b/api_docs/kbn_securitysolution_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete title: "@kbn/securitysolution-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-autocomplete plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete'] --- import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx index 3163c333889b6..55511d1ec2c2e 100644 --- a/api_docs/kbn_securitysolution_ecs.mdx +++ b/api_docs/kbn_securitysolution_ecs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-ecs title: "@kbn/securitysolution-ecs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-ecs plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-ecs'] --- import kbnSecuritysolutionEcsObj from './kbn_securitysolution_ecs.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index e9ed96d1fd061..b5b8df004d72a 100644 --- a/api_docs/kbn_securitysolution_es_utils.mdx +++ b/api_docs/kbn_securitysolution_es_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils title: "@kbn/securitysolution-es-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-es-utils plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] --- import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx index 095f86103bf68..11dec6dfe78ce 100644 --- a/api_docs/kbn_securitysolution_exception_list_components.mdx +++ b/api_docs/kbn_securitysolution_exception_list_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-exception-list-components title: "@kbn/securitysolution-exception-list-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-exception-list-components plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-exception-list-components'] --- import kbnSecuritysolutionExceptionListComponentsObj from './kbn_securitysolution_exception_list_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_grouping.mdx b/api_docs/kbn_securitysolution_grouping.mdx index 91331dafc2512..56ca79fe28ef5 100644 --- a/api_docs/kbn_securitysolution_grouping.mdx +++ b/api_docs/kbn_securitysolution_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-grouping title: "@kbn/securitysolution-grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-grouping plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-grouping'] --- import kbnSecuritysolutionGroupingObj from './kbn_securitysolution_grouping.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index 0ef537942e524..42b3c80aa4ddf 100644 --- a/api_docs/kbn_securitysolution_hook_utils.mdx +++ b/api_docs/kbn_securitysolution_hook_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils title: "@kbn/securitysolution-hook-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-hook-utils plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils'] --- import kbnSecuritysolutionHookUtilsObj from './kbn_securitysolution_hook_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx index e5e46c2c64cb1..5f399f4a238b4 100644 --- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-alerting-types title: "@kbn/securitysolution-io-ts-alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types'] --- import kbnSecuritysolutionIoTsAlertingTypesObj from './kbn_securitysolution_io_ts_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx index 724aae7eeb5e0..efda3c2ec6764 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-list-types title: "@kbn/securitysolution-io-ts-list-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-list-types plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types'] --- import kbnSecuritysolutionIoTsListTypesObj from './kbn_securitysolution_io_ts_list_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx index 703d63db37b27..ae9e4d6ea3bde 100644 --- a/api_docs/kbn_securitysolution_io_ts_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types title: "@kbn/securitysolution-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-types plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types'] --- import kbnSecuritysolutionIoTsTypesObj from './kbn_securitysolution_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx index 3b8f5cf996d58..a471f2092cacb 100644 --- a/api_docs/kbn_securitysolution_io_ts_utils.mdx +++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils title: "@kbn/securitysolution-io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-utils plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils'] --- import kbnSecuritysolutionIoTsUtilsObj from './kbn_securitysolution_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx index 1874c83e65f12..c85948e0e79a4 100644 --- a/api_docs/kbn_securitysolution_list_api.mdx +++ b/api_docs/kbn_securitysolution_list_api.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api title: "@kbn/securitysolution-list-api" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-api plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api'] --- import kbnSecuritysolutionListApiObj from './kbn_securitysolution_list_api.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx index 294d358167fb5..340fdb3ab9f06 100644 --- a/api_docs/kbn_securitysolution_list_constants.mdx +++ b/api_docs/kbn_securitysolution_list_constants.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants title: "@kbn/securitysolution-list-constants" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-constants plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants'] --- import kbnSecuritysolutionListConstantsObj from './kbn_securitysolution_list_constants.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx index 91603dd8a4b44..e7e655a19eb73 100644 --- a/api_docs/kbn_securitysolution_list_hooks.mdx +++ b/api_docs/kbn_securitysolution_list_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks title: "@kbn/securitysolution-list-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-hooks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks'] --- import kbnSecuritysolutionListHooksObj from './kbn_securitysolution_list_hooks.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx index 095f456005d7a..163a484ef7c25 100644 --- a/api_docs/kbn_securitysolution_list_utils.mdx +++ b/api_docs/kbn_securitysolution_list_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils title: "@kbn/securitysolution-list-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-utils plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils'] --- import kbnSecuritysolutionListUtilsObj from './kbn_securitysolution_list_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx index 0f21534413542..45e7ae66f3cd7 100644 --- a/api_docs/kbn_securitysolution_rules.mdx +++ b/api_docs/kbn_securitysolution_rules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules title: "@kbn/securitysolution-rules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-rules plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules'] --- import kbnSecuritysolutionRulesObj from './kbn_securitysolution_rules.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx index 7cfbd805f35df..2c734797c155c 100644 --- a/api_docs/kbn_securitysolution_t_grid.mdx +++ b/api_docs/kbn_securitysolution_t_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid title: "@kbn/securitysolution-t-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-t-grid plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid'] --- import kbnSecuritysolutionTGridObj from './kbn_securitysolution_t_grid.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx index 37c9efc5c7950..fae9707f73750 100644 --- a/api_docs/kbn_securitysolution_utils.mdx +++ b/api_docs/kbn_securitysolution_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils title: "@kbn/securitysolution-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-utils plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils'] --- import kbnSecuritysolutionUtilsObj from './kbn_securitysolution_utils.devdocs.json'; diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx index da325789202f2..cc6425ff535ec 100644 --- a/api_docs/kbn_server_http_tools.mdx +++ b/api_docs/kbn_server_http_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools title: "@kbn/server-http-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-http-tools plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools'] --- import kbnServerHttpToolsObj from './kbn_server_http_tools.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx index 713fecfa30d9e..1cad9bd32bca1 100644 --- a/api_docs/kbn_server_route_repository.mdx +++ b/api_docs/kbn_server_route_repository.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository title: "@kbn/server-route-repository" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx index 56dd1ff998e7c..55cba5917fd4e 100644 --- a/api_docs/kbn_shared_svg.mdx +++ b/api_docs/kbn_shared_svg.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-svg title: "@kbn/shared-svg" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-svg plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-svg'] --- import kbnSharedSvgObj from './kbn_shared_svg.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_avatar_solution.mdx b/api_docs/kbn_shared_ux_avatar_solution.mdx index d8b943754a7cb..32b52ae5fe46a 100644 --- a/api_docs/kbn_shared_ux_avatar_solution.mdx +++ b/api_docs/kbn_shared_ux_avatar_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-solution title: "@kbn/shared-ux-avatar-solution" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-solution plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx b/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx index eef84701e1705..c3f2724d36fa0 100644 --- a/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx +++ b/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-user-profile-components title: "@kbn/shared-ux-avatar-user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-user-profile-components plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-user-profile-components'] --- import kbnSharedUxAvatarUserProfileComponentsObj from './kbn_shared_ux_avatar_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx index 3a21f321307c8..ec19d5eac7051 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen title: "@kbn/shared-ux-button-exit-full-screen" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx index c31cb6f440687..bcea483687437 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen-mocks title: "@kbn/shared-ux-button-exit-full-screen-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen-mocks'] --- import kbnSharedUxButtonExitFullScreenMocksObj from './kbn_shared_ux_button_exit_full_screen_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index 393afb54ff288..0aa4ee3b6506f 100644 --- a/api_docs/kbn_shared_ux_button_toolbar.mdx +++ b/api_docs/kbn_shared_ux_button_toolbar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar title: "@kbn/shared-ux-button-toolbar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-toolbar plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar'] --- import kbnSharedUxButtonToolbarObj from './kbn_shared_ux_button_toolbar.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx index c5d65b3a1d961..9fb2245afe692 100644 --- a/api_docs/kbn_shared_ux_card_no_data.mdx +++ b/api_docs/kbn_shared_ux_card_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data title: "@kbn/shared-ux-card-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data'] --- import kbnSharedUxCardNoDataObj from './kbn_shared_ux_card_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx index e8c941c42bdd3..dffe7cdf31076 100644 --- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data-mocks title: "@kbn/shared-ux-card-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data-mocks'] --- import kbnSharedUxCardNoDataMocksObj from './kbn_shared_ux_card_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index 0e86238394d10..e21922d72f077 100644 --- a/api_docs/kbn_shared_ux_file_context.mdx +++ b/api_docs/kbn_shared_ux_file_context.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-context title: "@kbn/shared-ux-file-context" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-context plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-context'] --- import kbnSharedUxFileContextObj from './kbn_shared_ux_file_context.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image.mdx b/api_docs/kbn_shared_ux_file_image.mdx index 7fc436e2c9e57..a7a48797339ad 100644 --- a/api_docs/kbn_shared_ux_file_image.mdx +++ b/api_docs/kbn_shared_ux_file_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image title: "@kbn/shared-ux-file-image" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image'] --- import kbnSharedUxFileImageObj from './kbn_shared_ux_file_image.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image_mocks.mdx b/api_docs/kbn_shared_ux_file_image_mocks.mdx index 56129e0dd05d6..b7cd012436e33 100644 --- a/api_docs/kbn_shared_ux_file_image_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_image_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image-mocks title: "@kbn/shared-ux-file-image-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image-mocks'] --- import kbnSharedUxFileImageMocksObj from './kbn_shared_ux_file_image_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_mocks.mdx b/api_docs/kbn_shared_ux_file_mocks.mdx index 86b9918087479..0cef662f66c7e 100644 --- a/api_docs/kbn_shared_ux_file_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-mocks title: "@kbn/shared-ux-file-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-mocks'] --- import kbnSharedUxFileMocksObj from './kbn_shared_ux_file_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_picker.mdx b/api_docs/kbn_shared_ux_file_picker.mdx index 66fd466441256..0c3a9d8c3be25 100644 --- a/api_docs/kbn_shared_ux_file_picker.mdx +++ b/api_docs/kbn_shared_ux_file_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-picker title: "@kbn/shared-ux-file-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-picker plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-picker'] --- import kbnSharedUxFilePickerObj from './kbn_shared_ux_file_picker.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_types.mdx b/api_docs/kbn_shared_ux_file_types.mdx index 418051ac8d1b3..409c80e1d8ed6 100644 --- a/api_docs/kbn_shared_ux_file_types.mdx +++ b/api_docs/kbn_shared_ux_file_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-types title: "@kbn/shared-ux-file-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-types plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-types'] --- import kbnSharedUxFileTypesObj from './kbn_shared_ux_file_types.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_upload.mdx b/api_docs/kbn_shared_ux_file_upload.mdx index 72ac4020bb264..20c6093566adc 100644 --- a/api_docs/kbn_shared_ux_file_upload.mdx +++ b/api_docs/kbn_shared_ux_file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-upload title: "@kbn/shared-ux-file-upload" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-upload plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-upload'] --- import kbnSharedUxFileUploadObj from './kbn_shared_ux_file_upload.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_util.mdx b/api_docs/kbn_shared_ux_file_util.mdx index 0aaa9277ecefc..778ec2bc66e7a 100644 --- a/api_docs/kbn_shared_ux_file_util.mdx +++ b/api_docs/kbn_shared_ux_file_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-util title: "@kbn/shared-ux-file-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-util plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-util'] --- import kbnSharedUxFileUtilObj from './kbn_shared_ux_file_util.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app.mdx b/api_docs/kbn_shared_ux_link_redirect_app.mdx index cffb146487708..536f0010c8f36 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app title: "@kbn/shared-ux-link-redirect-app" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app'] --- import kbnSharedUxLinkRedirectAppObj from './kbn_shared_ux_link_redirect_app.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx index 0050c1d6080a1..47b6b38b7b04d 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app-mocks title: "@kbn/shared-ux-link-redirect-app-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app-mocks'] --- import kbnSharedUxLinkRedirectAppMocksObj from './kbn_shared_ux_link_redirect_app_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown.mdx b/api_docs/kbn_shared_ux_markdown.mdx index 3c8c8efbbffb3..5a4da1db8fc00 100644 --- a/api_docs/kbn_shared_ux_markdown.mdx +++ b/api_docs/kbn_shared_ux_markdown.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown title: "@kbn/shared-ux-markdown" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown'] --- import kbnSharedUxMarkdownObj from './kbn_shared_ux_markdown.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown_mocks.mdx b/api_docs/kbn_shared_ux_markdown_mocks.mdx index a4b43b7628e97..6a8028b00a095 100644 --- a/api_docs/kbn_shared_ux_markdown_mocks.mdx +++ b/api_docs/kbn_shared_ux_markdown_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown-mocks title: "@kbn/shared-ux-markdown-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown-mocks'] --- import kbnSharedUxMarkdownMocksObj from './kbn_shared_ux_markdown_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx index 8e77b3882600e..5692164ccaf61 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data title: "@kbn/shared-ux-page-analytics-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data'] --- import kbnSharedUxPageAnalyticsNoDataObj from './kbn_shared_ux_page_analytics_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx index 0d0826a264165..e0a361298e9c9 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data-mocks title: "@kbn/shared-ux-page-analytics-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data-mocks'] --- import kbnSharedUxPageAnalyticsNoDataMocksObj from './kbn_shared_ux_page_analytics_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx index 26e81fa1b6518..3162c4820e292 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data title: "@kbn/shared-ux-page-kibana-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data'] --- import kbnSharedUxPageKibanaNoDataObj from './kbn_shared_ux_page_kibana_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx index 462dec3147eb8..1496bbae180cf 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data-mocks title: "@kbn/shared-ux-page-kibana-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data-mocks'] --- import kbnSharedUxPageKibanaNoDataMocksObj from './kbn_shared_ux_page_kibana_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template.mdx b/api_docs/kbn_shared_ux_page_kibana_template.mdx index 0a559d8baf830..0be42cea20af5 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template title: "@kbn/shared-ux-page-kibana-template" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template'] --- import kbnSharedUxPageKibanaTemplateObj from './kbn_shared_ux_page_kibana_template.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx index 39ed1f56487dc..e83025b71d373 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template-mocks title: "@kbn/shared-ux-page-kibana-template-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template-mocks'] --- import kbnSharedUxPageKibanaTemplateMocksObj from './kbn_shared_ux_page_kibana_template_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data.mdx b/api_docs/kbn_shared_ux_page_no_data.mdx index c3d11636513d5..d22af56b064c9 100644 --- a/api_docs/kbn_shared_ux_page_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data title: "@kbn/shared-ux-page-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data'] --- import kbnSharedUxPageNoDataObj from './kbn_shared_ux_page_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config.mdx b/api_docs/kbn_shared_ux_page_no_data_config.mdx index 2cb6e8f04ba41..24d54c836850d 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config title: "@kbn/shared-ux-page-no-data-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config'] --- import kbnSharedUxPageNoDataConfigObj from './kbn_shared_ux_page_no_data_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx index 9809642782207..24a720081389d 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config-mocks title: "@kbn/shared-ux-page-no-data-config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config-mocks'] --- import kbnSharedUxPageNoDataConfigMocksObj from './kbn_shared_ux_page_no_data_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx index 3cd01137e6a12..a1a9d1a795255 100644 --- a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-mocks title: "@kbn/shared-ux-page-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-mocks'] --- import kbnSharedUxPageNoDataMocksObj from './kbn_shared_ux_page_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_solution_nav.mdx b/api_docs/kbn_shared_ux_page_solution_nav.mdx index 1fcdc79c93e2e..213e0b38f2237 100644 --- a/api_docs/kbn_shared_ux_page_solution_nav.mdx +++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-solution-nav title: "@kbn/shared-ux-page-solution-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-solution-nav plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-solution-nav'] --- import kbnSharedUxPageSolutionNavObj from './kbn_shared_ux_page_solution_nav.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx index d2cf4d6fdd7e0..2d029c6a4e370 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views title: "@kbn/shared-ux-prompt-no-data-views" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views'] --- import kbnSharedUxPromptNoDataViewsObj from './kbn_shared_ux_prompt_no_data_views.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx index 948ce831578c5..8dc68fd14837f 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views-mocks title: "@kbn/shared-ux-prompt-no-data-views-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views-mocks'] --- import kbnSharedUxPromptNoDataViewsMocksObj from './kbn_shared_ux_prompt_no_data_views_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_not_found.mdx b/api_docs/kbn_shared_ux_prompt_not_found.mdx index 079008a4dc0ed..62c79d84f5fbc 100644 --- a/api_docs/kbn_shared_ux_prompt_not_found.mdx +++ b/api_docs/kbn_shared_ux_prompt_not_found.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-not-found title: "@kbn/shared-ux-prompt-not-found" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-not-found plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-not-found'] --- import kbnSharedUxPromptNotFoundObj from './kbn_shared_ux_prompt_not_found.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router.mdx b/api_docs/kbn_shared_ux_router.mdx index 60fe03cfe019a..3f988d769f8d6 100644 --- a/api_docs/kbn_shared_ux_router.mdx +++ b/api_docs/kbn_shared_ux_router.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router title: "@kbn/shared-ux-router" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router'] --- import kbnSharedUxRouterObj from './kbn_shared_ux_router.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router_mocks.mdx b/api_docs/kbn_shared_ux_router_mocks.mdx index e173b268b98c2..1acaaaf0262f4 100644 --- a/api_docs/kbn_shared_ux_router_mocks.mdx +++ b/api_docs/kbn_shared_ux_router_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router-mocks title: "@kbn/shared-ux-router-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router-mocks plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router-mocks'] --- import kbnSharedUxRouterMocksObj from './kbn_shared_ux_router_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_config.mdx b/api_docs/kbn_shared_ux_storybook_config.mdx index 44a778d9f235f..2304077a3b0a2 100644 --- a/api_docs/kbn_shared_ux_storybook_config.mdx +++ b/api_docs/kbn_shared_ux_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-config title: "@kbn/shared-ux-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-config plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-config'] --- import kbnSharedUxStorybookConfigObj from './kbn_shared_ux_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx index 7be7221df7cb1..059f18147d261 100644 --- a/api_docs/kbn_shared_ux_storybook_mock.mdx +++ b/api_docs/kbn_shared_ux_storybook_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock title: "@kbn/shared-ux-storybook-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-mock plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock'] --- import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index 7092c72b488ea..2cb7431cc2a6b 100644 --- a/api_docs/kbn_shared_ux_utility.mdx +++ b/api_docs/kbn_shared_ux_utility.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility title: "@kbn/shared-ux-utility" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-utility plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] --- import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json'; diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx index 53d666b23ed47..158a7f54795b4 100644 --- a/api_docs/kbn_slo_schema.mdx +++ b/api_docs/kbn_slo_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-slo-schema title: "@kbn/slo-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/slo-schema plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/slo-schema'] --- import kbnSloSchemaObj from './kbn_slo_schema.devdocs.json'; diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx index 1a84084ca8dee..6f8db223e20e6 100644 --- a/api_docs/kbn_some_dev_log.mdx +++ b/api_docs/kbn_some_dev_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-some-dev-log title: "@kbn/some-dev-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/some-dev-log plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index f536c7e42132e..32d887e24607b 100644 --- a/api_docs/kbn_std.mdx +++ b/api_docs/kbn_std.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-std title: "@kbn/std" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/std plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std'] --- import kbnStdObj from './kbn_std.devdocs.json'; diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx index 5beac59ef976e..588a8844c1891 100644 --- a/api_docs/kbn_stdio_dev_helpers.mdx +++ b/api_docs/kbn_stdio_dev_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers title: "@kbn/stdio-dev-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/stdio-dev-helpers plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers'] --- import kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json'; diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx index 6ebe4caf8fd2b..726f598130b2e 100644 --- a/api_docs/kbn_storybook.mdx +++ b/api_docs/kbn_storybook.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-storybook title: "@kbn/storybook" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/storybook plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index 774a1f1d7abc2..ae2e4707a7fce 100644 --- a/api_docs/kbn_telemetry_tools.mdx +++ b/api_docs/kbn_telemetry_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools title: "@kbn/telemetry-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/telemetry-tools plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools'] --- import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json'; diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx index a52f35eaf4d4f..6b9cf704c37d4 100644 --- a/api_docs/kbn_test.mdx +++ b/api_docs/kbn_test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test title: "@kbn/test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] --- import kbnTestObj from './kbn_test.devdocs.json'; diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index be070196ef89c..cea6997f4a493 100644 --- a/api_docs/kbn_test_jest_helpers.mdx +++ b/api_docs/kbn_test_jest_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers title: "@kbn/test-jest-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-jest-helpers plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers'] --- import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_subj_selector.mdx b/api_docs/kbn_test_subj_selector.mdx index f455f4185db78..f060d6ba2ebb3 100644 --- a/api_docs/kbn_test_subj_selector.mdx +++ b/api_docs/kbn_test_subj_selector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-subj-selector title: "@kbn/test-subj-selector" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-subj-selector plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector'] --- import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json'; diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index 9cce6a92bb1e4..c883af8e667a1 100644 --- a/api_docs/kbn_tooling_log.mdx +++ b/api_docs/kbn_tooling_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log title: "@kbn/tooling-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/tooling-log plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index 04c4158ed6557..17a1818aa8448 100644 --- a/api_docs/kbn_ts_projects.mdx +++ b/api_docs/kbn_ts_projects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ts-projects title: "@kbn/ts-projects" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ts-projects plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ts-projects'] --- import kbnTsProjectsObj from './kbn_ts_projects.devdocs.json'; diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx index 64b454fced85a..d4cd19ac70943 100644 --- a/api_docs/kbn_typed_react_router_config.mdx +++ b/api_docs/kbn_typed_react_router_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config title: "@kbn/typed-react-router-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/typed-react-router-config plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config'] --- import kbnTypedReactRouterConfigObj from './kbn_typed_react_router_config.devdocs.json'; diff --git a/api_docs/kbn_ui_actions_browser.mdx b/api_docs/kbn_ui_actions_browser.mdx index 2cf5868264b0e..47203692524b4 100644 --- a/api_docs/kbn_ui_actions_browser.mdx +++ b/api_docs/kbn_ui_actions_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-actions-browser title: "@kbn/ui-actions-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-actions-browser plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-actions-browser'] --- import kbnUiActionsBrowserObj from './kbn_ui_actions_browser.devdocs.json'; diff --git a/api_docs/kbn_ui_shared_deps_src.mdx b/api_docs/kbn_ui_shared_deps_src.mdx index 9959a35ae4522..e0e747a5ca16c 100644 --- a/api_docs/kbn_ui_shared_deps_src.mdx +++ b/api_docs/kbn_ui_shared_deps_src.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-shared-deps-src title: "@kbn/ui-shared-deps-src" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-shared-deps-src plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-shared-deps-src'] --- import kbnUiSharedDepsSrcObj from './kbn_ui_shared_deps_src.devdocs.json'; diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx index 150952fe12ef9..a68aec5ec8edc 100644 --- a/api_docs/kbn_ui_theme.mdx +++ b/api_docs/kbn_ui_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme title: "@kbn/ui-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-theme plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index 04b8b234bf25d..ed2c3c7e509fc 100644 --- a/api_docs/kbn_user_profile_components.mdx +++ b/api_docs/kbn_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-user-profile-components title: "@kbn/user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/user-profile-components plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components'] --- import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index e9befd0c86413..b6d7910c637c2 100644 --- a/api_docs/kbn_utility_types.mdx +++ b/api_docs/kbn_utility_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types title: "@kbn/utility-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types'] --- import kbnUtilityTypesObj from './kbn_utility_types.devdocs.json'; diff --git a/api_docs/kbn_utility_types_jest.mdx b/api_docs/kbn_utility_types_jest.mdx index 3c2421968265f..6582117d9d53e 100644 --- a/api_docs/kbn_utility_types_jest.mdx +++ b/api_docs/kbn_utility_types_jest.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest title: "@kbn/utility-types-jest" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types-jest plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types-jest'] --- import kbnUtilityTypesJestObj from './kbn_utility_types_jest.devdocs.json'; diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx index 6d2f86b16913b..393f749d14c39 100644 --- a/api_docs/kbn_utils.mdx +++ b/api_docs/kbn_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utils title: "@kbn/utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utils plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] --- import kbnUtilsObj from './kbn_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index ae3131085357e..68df7ea91c07c 100644 --- a/api_docs/kbn_yarn_lock_validator.mdx +++ b/api_docs/kbn_yarn_lock_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-yarn-lock-validator title: "@kbn/yarn-lock-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/yarn-lock-validator plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index 3898fb7027ff4..7cb3a6e3c186b 100644 --- a/api_docs/kibana_overview.mdx +++ b/api_docs/kibana_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaOverview title: "kibanaOverview" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaOverview plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index 1229e10585770..5f2fc433446ef 100644 --- a/api_docs/kibana_react.mdx +++ b/api_docs/kibana_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaReact title: "kibanaReact" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaReact plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact'] --- import kibanaReactObj from './kibana_react.devdocs.json'; diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx index 0b45ccfec77d4..1d280115c010d 100644 --- a/api_docs/kibana_utils.mdx +++ b/api_docs/kibana_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaUtils title: "kibanaUtils" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaUtils plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils'] --- import kibanaUtilsObj from './kibana_utils.devdocs.json'; diff --git a/api_docs/kubernetes_security.mdx b/api_docs/kubernetes_security.mdx index 5a41d98df7837..90dc7fe89d082 100644 --- a/api_docs/kubernetes_security.mdx +++ b/api_docs/kubernetes_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kubernetesSecurity title: "kubernetesSecurity" image: https://source.unsplash.com/400x175/?github description: API docs for the kubernetesSecurity plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity'] --- import kubernetesSecurityObj from './kubernetes_security.devdocs.json'; diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index 32724c847768e..0f03560a4a277 100644 --- a/api_docs/lens.mdx +++ b/api_docs/lens.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens title: "lens" image: https://source.unsplash.com/400x175/?github description: API docs for the lens plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens'] --- import lensObj from './lens.devdocs.json'; diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx index 8ff7d9ce7a897..c1e606d924ea1 100644 --- a/api_docs/license_api_guard.mdx +++ b/api_docs/license_api_guard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard title: "licenseApiGuard" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseApiGuard plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard'] --- import licenseApiGuardObj from './license_api_guard.devdocs.json'; diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx index 4812f42baa0b9..d4ca01b414c47 100644 --- a/api_docs/license_management.mdx +++ b/api_docs/license_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement title: "licenseManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseManagement plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index fcee59ae55f5b..e63980322c269 100644 --- a/api_docs/licensing.mdx +++ b/api_docs/licensing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing title: "licensing" image: https://source.unsplash.com/400x175/?github description: API docs for the licensing plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 2eda9e8dfe861..c7a005e2525a1 100644 --- a/api_docs/lists.mdx +++ b/api_docs/lists.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists title: "lists" image: https://source.unsplash.com/400x175/?github description: API docs for the lists plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/management.mdx b/api_docs/management.mdx index 5a8f85f0fc143..31a05d36b85ef 100644 --- a/api_docs/management.mdx +++ b/api_docs/management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management title: "management" image: https://source.unsplash.com/400x175/?github description: API docs for the management plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management'] --- import managementObj from './management.devdocs.json'; diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx index 9a164201ef02c..b96bb3a71f5c2 100644 --- a/api_docs/maps.mdx +++ b/api_docs/maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/maps title: "maps" image: https://source.unsplash.com/400x175/?github description: API docs for the maps plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps'] --- import mapsObj from './maps.devdocs.json'; diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx index b1e8f783cc499..5411114a80d15 100644 --- a/api_docs/maps_ems.mdx +++ b/api_docs/maps_ems.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mapsEms title: "mapsEms" image: https://source.unsplash.com/400x175/?github description: API docs for the mapsEms plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 8f1067311a730..054a18a8597de 100644 --- a/api_docs/ml.mdx +++ b/api_docs/ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ml title: "ml" image: https://source.unsplash.com/400x175/?github description: API docs for the ml plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 60aafa5889833..ce0d358de2aa1 100644 --- a/api_docs/monitoring.mdx +++ b/api_docs/monitoring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoring title: "monitoring" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoring plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring'] --- import monitoringObj from './monitoring.devdocs.json'; diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx index fb51a7c6b9a89..edca5470f5216 100644 --- a/api_docs/monitoring_collection.mdx +++ b/api_docs/monitoring_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoringCollection title: "monitoringCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoringCollection plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection'] --- import monitoringCollectionObj from './monitoring_collection.devdocs.json'; diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx index db25e476b415e..a8a7dbeaf9cf1 100644 --- a/api_docs/navigation.mdx +++ b/api_docs/navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/navigation title: "navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the navigation plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation'] --- import navigationObj from './navigation.devdocs.json'; diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx index 487f2e052c33d..0a4f4740978c7 100644 --- a/api_docs/newsfeed.mdx +++ b/api_docs/newsfeed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/newsfeed title: "newsfeed" image: https://source.unsplash.com/400x175/?github description: API docs for the newsfeed plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index a7471b57fbe69..5ab1631eedd06 100644 --- a/api_docs/notifications.mdx +++ b/api_docs/notifications.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/notifications title: "notifications" image: https://source.unsplash.com/400x175/?github description: API docs for the notifications plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.devdocs.json b/api_docs/observability.devdocs.json index fd378f95f0542..6d7bd10f2aaee 100644 --- a/api_docs/observability.devdocs.json +++ b/api_docs/observability.devdocs.json @@ -6207,37 +6207,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "observability", - "id": "def-public.DragHandleProps", - "type": "Type", - "tags": [], - "label": "DragHandleProps", - "description": [], - "signature": [ - "DraggableProvidedDragHandleProps", - " | undefined" - ], - "path": "x-pack/plugins/observability/public/typings/eui_draggable/index.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "observability", - "id": "def-public.DropResult", - "type": "Type", - "tags": [], - "label": "DropResult", - "description": [], - "signature": [ - "DropResult" - ], - "path": "x-pack/plugins/observability/public/typings/eui_draggable/index.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "observability", "id": "def-public.DurationUnit", diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 7ca3c3a2b464f..9e5aea3bdae3a 100644 --- a/api_docs/observability.mdx +++ b/api_docs/observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observability title: "observability" image: https://source.unsplash.com/400x175/?github description: API docs for the observability plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/actionable-observability](https://github.com/orgs/elastic/team | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 652 | 44 | 646 | 34 | +| 650 | 44 | 644 | 34 | ## Client diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index da56fe348afcb..6da7633ec0f6e 100644 --- a/api_docs/osquery.mdx +++ b/api_docs/osquery.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/osquery title: "osquery" image: https://source.unsplash.com/400x175/?github description: API docs for the osquery plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 3458b88b8210c..6e69901d36475 100644 --- a/api_docs/plugin_directory.mdx +++ b/api_docs/plugin_directory.mdx @@ -7,7 +7,7 @@ id: kibDevDocsPluginDirectory slug: /kibana-dev-docs/api-meta/plugin-api-directory title: Directory description: Directory of public APIs available through plugins or packages. -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -21,7 +21,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 68217 | 519 | 58890 | 1288 | +| 68214 | 519 | 58887 | 1288 | ## Plugin Directory @@ -49,7 +49,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-cloud-security-posture](https://github.com/orgs/elastic/teams/kibana-cloud-security-posture) | The cloud security posture plugin | 17 | 0 | 2 | 2 | | | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 13 | 0 | 13 | 1 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Content management app | 118 | 0 | 104 | 4 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | The Controls Plugin contains embeddable components intended to create a simple query interface for end users, and a powerful editing suite that allows dashboard authors to build controls | 274 | 0 | 270 | 11 | +| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | The Controls Plugin contains embeddable components intended to create a simple query interface for end users, and a powerful editing suite that allows dashboard authors to build controls | 273 | 0 | 269 | 11 | | crossClusterReplication | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 0 | 0 | 0 | 0 | | customBranding | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Enables customization of Kibana | 0 | 0 | 0 | 0 | | | [@elastic/fleet](https://github.com/orgs/elastic/teams/fleet) | Add custom data integrations so they can be displayed in the Fleet integrations app | 175 | 0 | 156 | 1 | @@ -128,7 +128,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 34 | 0 | 34 | 2 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 17 | 0 | 17 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 2 | 1 | -| | [@elastic/actionable-observability](https://github.com/orgs/elastic/teams/actionable-observability) | - | 652 | 44 | 646 | 34 | +| | [@elastic/actionable-observability](https://github.com/orgs/elastic/teams/actionable-observability) | - | 650 | 44 | 644 | 34 | | | [@elastic/security-defend-workflows](https://github.com/orgs/elastic/teams/security-defend-workflows) | - | 24 | 0 | 24 | 6 | | painlessLab | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 0 | 0 | 0 | 0 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | The Presentation Utility Plugin is a set of common, shared components and toolkits for solutions within the Presentation space, (e.g. Dashboards, Canvas). | 202 | 7 | 146 | 12 | diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index c8d355f4f6bc8..90a33a5efe1d5 100644 --- a/api_docs/presentation_util.mdx +++ b/api_docs/presentation_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil title: "presentationUtil" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationUtil plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] --- import presentationUtilObj from './presentation_util.devdocs.json'; diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx index fe7345bcfeb2f..f15c3b3d16e8e 100644 --- a/api_docs/profiling.mdx +++ b/api_docs/profiling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profiling title: "profiling" image: https://source.unsplash.com/400x175/?github description: API docs for the profiling plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 7e755399d5061..6679c06fb51c8 100644 --- a/api_docs/remote_clusters.mdx +++ b/api_docs/remote_clusters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters title: "remoteClusters" image: https://source.unsplash.com/400x175/?github description: API docs for the remoteClusters plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters'] --- import remoteClustersObj from './remote_clusters.devdocs.json'; diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx index e361bd8865f49..61368ac6be18e 100644 --- a/api_docs/reporting.mdx +++ b/api_docs/reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting title: "reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the reporting plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index d3c9dc86398ef..3013ac9d2d410 100644 --- a/api_docs/rollup.mdx +++ b/api_docs/rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup title: "rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the rollup plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] --- import rollupObj from './rollup.devdocs.json'; diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index cf44b2a004ca2..7dc1bdd156420 100644 --- a/api_docs/rule_registry.mdx +++ b/api_docs/rule_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry title: "ruleRegistry" image: https://source.unsplash.com/400x175/?github description: API docs for the ruleRegistry plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry'] --- import ruleRegistryObj from './rule_registry.devdocs.json'; diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx index 2705a0d0fdc9b..9ee3e384a8e97 100644 --- a/api_docs/runtime_fields.mdx +++ b/api_docs/runtime_fields.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields title: "runtimeFields" image: https://source.unsplash.com/400x175/?github description: API docs for the runtimeFields plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields'] --- import runtimeFieldsObj from './runtime_fields.devdocs.json'; diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx index fa0abb419ac24..b99b764f2a407 100644 --- a/api_docs/saved_objects.mdx +++ b/api_docs/saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects title: "savedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjects plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx index 2efef67baa6f9..ce1310d5e11b0 100644 --- a/api_docs/saved_objects_finder.mdx +++ b/api_docs/saved_objects_finder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder title: "savedObjectsFinder" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsFinder plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder'] --- import savedObjectsFinderObj from './saved_objects_finder.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index faf35cb876960..31af257df8f93 100644 --- a/api_docs/saved_objects_management.mdx +++ b/api_docs/saved_objects_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement title: "savedObjectsManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsManagement plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] --- import savedObjectsManagementObj from './saved_objects_management.devdocs.json'; diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index 905890c938fb7..5f6f7eca4aefc 100644 --- a/api_docs/saved_objects_tagging.mdx +++ b/api_docs/saved_objects_tagging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging title: "savedObjectsTagging" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTagging plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging'] --- import savedObjectsTaggingObj from './saved_objects_tagging.devdocs.json'; diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx index ebd97a4789ef6..f697dabca67f7 100644 --- a/api_docs/saved_objects_tagging_oss.mdx +++ b/api_docs/saved_objects_tagging_oss.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss title: "savedObjectsTaggingOss" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTaggingOss plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss'] --- import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json'; diff --git a/api_docs/saved_search.mdx b/api_docs/saved_search.mdx index e7d1b21be45c4..353f875c190cd 100644 --- a/api_docs/saved_search.mdx +++ b/api_docs/saved_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedSearch title: "savedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the savedSearch plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedSearch'] --- import savedSearchObj from './saved_search.devdocs.json'; diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx index 17f34fcc95a2e..bad215841fd01 100644 --- a/api_docs/screenshot_mode.mdx +++ b/api_docs/screenshot_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotMode title: "screenshotMode" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotMode plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode'] --- import screenshotModeObj from './screenshot_mode.devdocs.json'; diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx index cfd2c39dfc097..2f861898519de 100644 --- a/api_docs/screenshotting.mdx +++ b/api_docs/screenshotting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotting title: "screenshotting" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotting plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index dc54dc8e7735f..6ae6dccaa4bb4 100644 --- a/api_docs/security.mdx +++ b/api_docs/security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/security title: "security" image: https://source.unsplash.com/400x175/?github description: API docs for the security plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index 7479c1e5ec3e4..65e8c69e1b323 100644 --- a/api_docs/security_solution.mdx +++ b/api_docs/security_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolution title: "securitySolution" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolution plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index a0078cbde4af6..ac4878f86a370 100644 --- a/api_docs/session_view.mdx +++ b/api_docs/session_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/sessionView title: "sessionView" image: https://source.unsplash.com/400x175/?github description: API docs for the sessionView plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView'] --- import sessionViewObj from './session_view.devdocs.json'; diff --git a/api_docs/share.mdx b/api_docs/share.mdx index 39ba8f18b3eb2..3e45d295be2df 100644 --- a/api_docs/share.mdx +++ b/api_docs/share.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/share title: "share" image: https://source.unsplash.com/400x175/?github description: API docs for the share plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] --- import shareObj from './share.devdocs.json'; diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index 32d667f35933b..25601ccd7fa91 100644 --- a/api_docs/snapshot_restore.mdx +++ b/api_docs/snapshot_restore.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/snapshotRestore title: "snapshotRestore" image: https://source.unsplash.com/400x175/?github description: API docs for the snapshotRestore plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore'] --- import snapshotRestoreObj from './snapshot_restore.devdocs.json'; diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx index fc7a6b7fa7fc0..eb942f22eae8f 100644 --- a/api_docs/spaces.mdx +++ b/api_docs/spaces.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/spaces title: "spaces" image: https://source.unsplash.com/400x175/?github description: API docs for the spaces plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces'] --- import spacesObj from './spaces.devdocs.json'; diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx index 21f9941a66484..aa34bda26dda7 100644 --- a/api_docs/stack_alerts.mdx +++ b/api_docs/stack_alerts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackAlerts title: "stackAlerts" image: https://source.unsplash.com/400x175/?github description: API docs for the stackAlerts plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts'] --- import stackAlertsObj from './stack_alerts.devdocs.json'; diff --git a/api_docs/stack_connectors.mdx b/api_docs/stack_connectors.mdx index ea3fb805f4051..ff4d7d2158aa1 100644 --- a/api_docs/stack_connectors.mdx +++ b/api_docs/stack_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackConnectors title: "stackConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the stackConnectors plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors'] --- import stackConnectorsObj from './stack_connectors.devdocs.json'; diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index 7362573f882b9..cf30f79a00e57 100644 --- a/api_docs/task_manager.mdx +++ b/api_docs/task_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/taskManager title: "taskManager" image: https://source.unsplash.com/400x175/?github description: API docs for the taskManager plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] --- import taskManagerObj from './task_manager.devdocs.json'; diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index a96e35a76f936..5e2be0214e9e9 100644 --- a/api_docs/telemetry.mdx +++ b/api_docs/telemetry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetry title: "telemetry" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetry plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry'] --- import telemetryObj from './telemetry.devdocs.json'; diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx index 1de6a3350db6a..353936693a36c 100644 --- a/api_docs/telemetry_collection_manager.mdx +++ b/api_docs/telemetry_collection_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager title: "telemetryCollectionManager" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionManager plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager'] --- import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json'; diff --git a/api_docs/telemetry_collection_xpack.mdx b/api_docs/telemetry_collection_xpack.mdx index f404c43e3d7b7..04e7671d80e05 100644 --- a/api_docs/telemetry_collection_xpack.mdx +++ b/api_docs/telemetry_collection_xpack.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionXpack title: "telemetryCollectionXpack" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionXpack plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionXpack'] --- import telemetryCollectionXpackObj from './telemetry_collection_xpack.devdocs.json'; diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx index 7be40a9cc828f..1abbbcc31289e 100644 --- a/api_docs/telemetry_management_section.mdx +++ b/api_docs/telemetry_management_section.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection title: "telemetryManagementSection" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryManagementSection plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] --- import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json'; diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx index 5d9b8cdaaf5ee..77ec3431d05a7 100644 --- a/api_docs/threat_intelligence.mdx +++ b/api_docs/threat_intelligence.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/threatIntelligence title: "threatIntelligence" image: https://source.unsplash.com/400x175/?github description: API docs for the threatIntelligence plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence'] --- import threatIntelligenceObj from './threat_intelligence.devdocs.json'; diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index 78377117cd140..f4dbd6092fd44 100644 --- a/api_docs/timelines.mdx +++ b/api_docs/timelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/timelines title: "timelines" image: https://source.unsplash.com/400x175/?github description: API docs for the timelines plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines'] --- import timelinesObj from './timelines.devdocs.json'; diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx index 538129525eaa6..4e3aafa2c836e 100644 --- a/api_docs/transform.mdx +++ b/api_docs/transform.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/transform title: "transform" image: https://source.unsplash.com/400x175/?github description: API docs for the transform plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index 1dd6eafab01b4..f93d0febbf3fe 100644 --- a/api_docs/triggers_actions_ui.mdx +++ b/api_docs/triggers_actions_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi title: "triggersActionsUi" image: https://source.unsplash.com/400x175/?github description: API docs for the triggersActionsUi plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index 901f90ef5abcb..c2d25e29c5c8a 100644 --- a/api_docs/ui_actions.mdx +++ b/api_docs/ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActions title: "uiActions" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActions plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] --- import uiActionsObj from './ui_actions.devdocs.json'; diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index 0754f9ad59a18..f9a14b8aeef9a 100644 --- a/api_docs/ui_actions_enhanced.mdx +++ b/api_docs/ui_actions_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced title: "uiActionsEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActionsEnhanced plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_field_list.mdx b/api_docs/unified_field_list.mdx index c2b75fee849ae..3173b34937840 100644 --- a/api_docs/unified_field_list.mdx +++ b/api_docs/unified_field_list.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedFieldList title: "unifiedFieldList" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedFieldList plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedFieldList'] --- import unifiedFieldListObj from './unified_field_list.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index 006580e7e5988..d9e9d8bb98419 100644 --- a/api_docs/unified_histogram.mdx +++ b/api_docs/unified_histogram.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedHistogram title: "unifiedHistogram" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedHistogram plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram'] --- import unifiedHistogramObj from './unified_histogram.devdocs.json'; diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index 235900c433739..93a2f26ae5ca4 100644 --- a/api_docs/unified_search.mdx +++ b/api_docs/unified_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch title: "unifiedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch'] --- import unifiedSearchObj from './unified_search.devdocs.json'; diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx index b885fad5e36d5..0a636ace7def3 100644 --- a/api_docs/unified_search_autocomplete.mdx +++ b/api_docs/unified_search_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete title: "unifiedSearch.autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch.autocomplete plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index f70ecd4289ed6..969b991c74be7 100644 --- a/api_docs/url_forwarding.mdx +++ b/api_docs/url_forwarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/urlForwarding title: "urlForwarding" image: https://source.unsplash.com/400x175/?github description: API docs for the urlForwarding plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding'] --- import urlForwardingObj from './url_forwarding.devdocs.json'; diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx index 928ce83538d32..72d6e81d8c306 100644 --- a/api_docs/usage_collection.mdx +++ b/api_docs/usage_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/usageCollection title: "usageCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the usageCollection plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection'] --- import usageCollectionObj from './usage_collection.devdocs.json'; diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx index b75a0dcd97537..233a56570afc9 100644 --- a/api_docs/ux.mdx +++ b/api_docs/ux.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ux title: "ux" image: https://source.unsplash.com/400x175/?github description: API docs for the ux plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux'] --- import uxObj from './ux.devdocs.json'; diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx index 1addd741b9e31..92f9798024179 100644 --- a/api_docs/vis_default_editor.mdx +++ b/api_docs/vis_default_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor title: "visDefaultEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the visDefaultEditor plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor'] --- import visDefaultEditorObj from './vis_default_editor.devdocs.json'; diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx index 6b9cb43be510b..3f408bd3ba952 100644 --- a/api_docs/vis_type_gauge.mdx +++ b/api_docs/vis_type_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeGauge title: "visTypeGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeGauge plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge'] --- import visTypeGaugeObj from './vis_type_gauge.devdocs.json'; diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx index 4bbb6af25602c..aeae008f82f29 100644 --- a/api_docs/vis_type_heatmap.mdx +++ b/api_docs/vis_type_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap title: "visTypeHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeHeatmap plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap'] --- import visTypeHeatmapObj from './vis_type_heatmap.devdocs.json'; diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx index 79acd4678e38f..88eaccad9e674 100644 --- a/api_docs/vis_type_pie.mdx +++ b/api_docs/vis_type_pie.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypePie title: "visTypePie" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypePie plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie'] --- import visTypePieObj from './vis_type_pie.devdocs.json'; diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx index 7bcf654c39711..a6997bd43648e 100644 --- a/api_docs/vis_type_table.mdx +++ b/api_docs/vis_type_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTable title: "visTypeTable" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTable plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable'] --- import visTypeTableObj from './vis_type_table.devdocs.json'; diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx index 36fa6d62e34fd..0c329a7edddf4 100644 --- a/api_docs/vis_type_timelion.mdx +++ b/api_docs/vis_type_timelion.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion title: "visTypeTimelion" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimelion plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion'] --- import visTypeTimelionObj from './vis_type_timelion.devdocs.json'; diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx index 4799bce5a231b..5996fc0feb89e 100644 --- a/api_docs/vis_type_timeseries.mdx +++ b/api_docs/vis_type_timeseries.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries title: "visTypeTimeseries" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimeseries plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries'] --- import visTypeTimeseriesObj from './vis_type_timeseries.devdocs.json'; diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx index 59bcaa7009be9..8ac6c0c6b1189 100644 --- a/api_docs/vis_type_vega.mdx +++ b/api_docs/vis_type_vega.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVega title: "visTypeVega" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVega plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega'] --- import visTypeVegaObj from './vis_type_vega.devdocs.json'; diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx index 1e9f2974827ca..e57959a70e754 100644 --- a/api_docs/vis_type_vislib.mdx +++ b/api_docs/vis_type_vislib.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVislib title: "visTypeVislib" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVislib plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib'] --- import visTypeVislibObj from './vis_type_vislib.devdocs.json'; diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx index dc4ed7a519d2b..fd7ebbaaba233 100644 --- a/api_docs/vis_type_xy.mdx +++ b/api_docs/vis_type_xy.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeXy title: "visTypeXy" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeXy plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index a224b1e34642e..63444edea7a6f 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations title: "visualizations" image: https://source.unsplash.com/400x175/?github description: API docs for the visualizations plugin -date: 2023-03-22 +date: 2023-03-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From fa4d873fa28b5dbe44108f423948b771d8eb70dc Mon Sep 17 00:00:00 2001 From: Peter Pisljar Date: Thu, 23 Mar 2023 08:11:52 +0100 Subject: [PATCH 08/40] [ML][tsdb] Treat time series counter field as non aggregatable in Index data visualizer (#152898) --- .../hooks/use_data_visualizer_grid_data.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_data_visualizer_grid_data.ts b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_data_visualizer_grid_data.ts index 66902ed0fe190..596c6e7a39b1f 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_data_visualizer_grid_data.ts +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_data_visualizer_grid_data.ts @@ -392,7 +392,7 @@ export const useDataVisualizerGridData = ( const createNonMetricCards = useCallback(() => { const allNonMetricFields = dataViewFields.filter((f) => { return ( - f.type !== KBN_FIELD_TYPES.NUMBER && + (f.type !== KBN_FIELD_TYPES.NUMBER || f.timeSeriesMetric === 'counter') && f.displayName !== undefined && isDisplayField(f.displayName) === true ); From 2dbc3ec21b74246dc99433fe87764926add9ac99 Mon Sep 17 00:00:00 2001 From: Stratoula Kalafateli Date: Thu, 23 Mar 2023 09:32:18 +0200 Subject: [PATCH 09/40] [Lens] Remove the flattened field type from the Lens SO (#153361) ## Summary Closes https://github.com/elastic/kibana/issues/152582 This PR: - removes the expression property from the mappings as it was removed in 7.10 https://github.com/elastic/kibana/blob/main/x-pack/plugins/lens/server/migrations/saved_object_migrations.ts#L309 - changes the mapping of the state property. With this change: - we are adding the state without the type with dynamic false. In this case, ES is not going to automatically add mappings to the sub fields - If we want to aggregate on one state property on the future we can do it by adding this on the mapping as: ``` state: { dynamic: false, properties: { fieldToAggregate: long }, }, ``` ### How to test Migrate Lens SOs from 7.17 and 8.7 or 8.6 to this branch. --- .../migrations/group2/check_registered_types.test.ts | 2 +- x-pack/plugins/lens/server/saved_objects.ts | 8 ++------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/core/server/integration_tests/saved_objects/migrations/group2/check_registered_types.test.ts b/src/core/server/integration_tests/saved_objects/migrations/group2/check_registered_types.test.ts index b919bac313c8f..eaebae45b05e8 100644 --- a/src/core/server/integration_tests/saved_objects/migrations/group2/check_registered_types.test.ts +++ b/src/core/server/integration_tests/saved_objects/migrations/group2/check_registered_types.test.ts @@ -110,7 +110,7 @@ describe('checking migration metadata changes on all registered SO types', () => "inventory-view": "6d47ef0b38166ecbd1c2fc7394599a4500db1ae4", "kql-telemetry": "23ed96ff02cd69cbfaa22f313cae3a54c434db51", "legacy-url-alias": "9b8cca3fbb2da46fd12823d3cd38fdf1c9f24bc8", - "lens": "42793535312de4e3e3df16a69cb85f5df3b14f72", + "lens": "2f6a8231591e3d62a83506b19e165774d74588ea", "lens-ui-telemetry": "d6c4e330d170eefc6214dbf77a53de913fa3eebc", "map": "7902b2e2a550e0b73fd5aa6c4e2ba3a4e6558877", "metrics-explorer-view": "713dbf1ab5e067791d19170f715eb82cf07ebbcc", diff --git a/x-pack/plugins/lens/server/saved_objects.ts b/x-pack/plugins/lens/server/saved_objects.ts index b5afa19c31119..a6b32f459b949 100644 --- a/x-pack/plugins/lens/server/saved_objects.ts +++ b/x-pack/plugins/lens/server/saved_objects.ts @@ -50,12 +50,8 @@ export function setupSavedObjects( type: 'keyword', }, state: { - type: 'flattened', - }, - expression: { - index: false, - doc_values: false, - type: 'keyword', + dynamic: false, + properties: {}, }, }, }, From ec3294f2b340a5f6dbfdada3a997e17047bc8f17 Mon Sep 17 00:00:00 2001 From: Cristina Amico Date: Thu, 23 Mar 2023 09:00:26 +0100 Subject: [PATCH 10/40] [Fleet] Updates to output logic (#153226) Closes https://github.com/elastic/kibana/issues/152234 ## Summary - If the user changes an output from `ES` to `logstash` when there are Fleet server policies that use that output, we throw asking the user to create a new output - If the user changes the default output to a `logstash` one, we update the Fleet server policies to use the previous default output (that should be ES) - Removed limitations to basic licenses so that fleet server policies can select a per-policy output (between the available ES outputs). This means that "Basic" users should be able to set their default output to Logstash but still have the Fleet Server policy attached to an ES output. - Added some tests to cover new functionalities ### UI changes When editing a "logstash" output the modal displays a warning: Screenshot 2023-03-16 at 15 04 54 ### Testing 1. **Edit existing logstash output to be default** - Have a default ES output and a fleet server policy (verify that has fleet server integration) - Create a new logstash output - Update it to make it default (this is valid for both integrations and monitoring output) - Check that fleet server policy keeps the ES output, it can be verified from agent policies > fleet server policy > settings. - The other policies should be switched to the logstash output **Note** if the previous output is logstash, it will be switched to the default one. However, users who updated the system and already had a logstash ouput set as a default will need to to manually set the output from the agent policy settings page. 2. **Edit existing ES output to become a logstash one** - Have a default ES output and a fleet server policy (verify that has fleet server integration) - Edit the output and change it to type 'logstash' - Check that the endpoint throws with an error Screenshot 2023-03-21 at 18 06 25 3. **Create new logstash output as default** - Have a default ES output and a fleet server policy (verify that has fleet server integration) - Create a new logstash output as set it as default output - Check that the fleet server policy keeps the previous ES default output - basically this should behave like case 1 (PUT and POST should have the same behaviour) 5. **Delete ES Output** - Once in the previous case (fleet server on ES output, other policies on logstash), try to delete the ES output - It should be prevented with an error Screenshot 2023-03-16 at 15 05 44 6. **Custom output per policy** - With "basic" license, go to an agent policy with fleet server > settings - Check that "output for integrations" can select any output of type `elasticsearch`, while the logstash ones are disabled Screenshot 2023-03-21 at 18 09 29 ### Checklist - [x] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) - [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 --------- Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../common/services/agent_policies_helpers.ts | 26 +++ x-pack/plugins/fleet/common/services/index.ts | 2 + .../agent_policy_advanced_fields/hooks.tsx | 11 +- .../edit_output_flyout/confirm_update.tsx | 80 ++++--- .../components/outputs_table/index.tsx | 2 +- .../agent_enrollment_flyout.test.mocks.ts | 2 +- .../fleet/public/services/has_fleet_server.ts | 19 -- x-pack/plugins/fleet/public/services/index.ts | 2 +- .../server/routes/fleet_proxies/handler.ts | 2 +- .../fleet/server/routes/output/handler.ts | 4 +- .../agent_policies/output_helpers.test.ts | 5 +- .../agent_policies/outputs_helpers.ts | 9 +- .../server/services/agent_policy.test.ts | 19 +- .../fleet/server/services/agent_policy.ts | 18 +- .../server/services/fleet_proxies.test.ts | 13 +- .../fleet/server/services/fleet_proxies.ts | 12 +- .../fleet/server/services/output.test.ts | 206 ++++++++++++++++-- .../plugins/fleet/server/services/output.ts | 141 ++++++++++-- .../preconfiguration/fleet_proxies.ts | 2 +- .../services/preconfiguration/outputs.test.ts | 16 +- .../services/preconfiguration/outputs.ts | 9 +- x-pack/plugins/fleet/server/services/setup.ts | 2 +- 22 files changed, 491 insertions(+), 111 deletions(-) create mode 100644 x-pack/plugins/fleet/common/services/agent_policies_helpers.ts delete mode 100644 x-pack/plugins/fleet/public/services/has_fleet_server.ts diff --git a/x-pack/plugins/fleet/common/services/agent_policies_helpers.ts b/x-pack/plugins/fleet/common/services/agent_policies_helpers.ts new file mode 100644 index 0000000000000..9db799997fad3 --- /dev/null +++ b/x-pack/plugins/fleet/common/services/agent_policies_helpers.ts @@ -0,0 +1,26 @@ +/* + * 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 type { AgentPolicy } from '../types'; +import { FLEET_SERVER_PACKAGE, FLEET_APM_PACKAGE } from '../constants'; + +export function policyHasFleetServer(agentPolicy: AgentPolicy) { + if (!agentPolicy.package_policies) { + return false; + } + return ( + agentPolicy.package_policies?.some((p) => p.package?.name === FLEET_SERVER_PACKAGE) || + !!agentPolicy.has_fleet_server + ); +} + +export function policyHasAPMIntegration(agentPolicy: AgentPolicy) { + if (!agentPolicy.package_policies) { + return false; + } + return agentPolicy.package_policies?.some((p) => p.package?.name === FLEET_APM_PACKAGE); +} diff --git a/x-pack/plugins/fleet/common/services/index.ts b/x-pack/plugins/fleet/common/services/index.ts index 2b700a6aaca6f..6f799c4a01b0e 100644 --- a/x-pack/plugins/fleet/common/services/index.ts +++ b/x-pack/plugins/fleet/common/services/index.ts @@ -63,3 +63,5 @@ export { export { getAllowedOutputTypeForPolicy } from './output_helpers'; export { agentStatusesToSummary } from './agent_statuses_to_summary'; + +export { policyHasFleetServer, policyHasAPMIntegration } from './agent_policies_helpers'; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/hooks.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/hooks.tsx index 8150b0dd96e2b..869034dca74c5 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/hooks.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/hooks.tsx @@ -17,7 +17,10 @@ import { useGetFleetServerHosts, } from '../../../../hooks'; import { LICENCE_FOR_PER_POLICY_OUTPUT } from '../../../../../../../common/constants'; -import { getAllowedOutputTypeForPolicy } from '../../../../../../../common/services'; +import { + getAllowedOutputTypeForPolicy, + policyHasFleetServer, +} from '../../../../../../../common/services'; import type { NewAgentPolicy, AgentPolicy } from '../../../../types'; // The super select component do not support null or '' as a value @@ -59,7 +62,11 @@ export function useOutputOptions(agentPolicy: Partial getAllowedOutputTypeForPolicy(agentPolicy as AgentPolicy), [agentPolicy] diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/confirm_update.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/confirm_update.tsx index 61addb3e6d3ea..8d96c5f314547 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/confirm_update.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/confirm_update.tsx @@ -7,6 +7,7 @@ import React from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; +import { EuiCallOut, EuiSpacer } from '@elastic/eui'; import type { Output } from '../../../../types'; import type { useConfirmModal } from '../../hooks/use_confirm_modal'; @@ -30,35 +31,60 @@ const ConfirmDescription: React.FunctionComponent = ({ agentCount, agentPolicyCount, }) => ( - {output.name}, - agents: ( - - - - ), - policies: ( - + <> + {output.name}, + agents: ( + + + + ), + policies: ( + + + + ), + }} + /> + + {output.type === 'logstash' ? ( + <> + + + } + > - - ), - }} - /> + {' '} + + ) : null} + ); export async function confirmUpdate( diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/outputs_table/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/outputs_table/index.tsx index 331c7dc192ecb..464c512ecf8e0 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/outputs_table/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/outputs_table/index.tsx @@ -61,7 +61,7 @@ export const OutputsTable: React.FunctionComponent = ({ { }; }); -jest.mock('../../services/has_fleet_server', () => { +jest.mock('../../../common/services/agent_policies_helpers', () => { return { policyHasFleetServer: jest.fn().mockReturnValue(true), }; diff --git a/x-pack/plugins/fleet/public/services/has_fleet_server.ts b/x-pack/plugins/fleet/public/services/has_fleet_server.ts deleted file mode 100644 index 43724d121b90f..0000000000000 --- a/x-pack/plugins/fleet/public/services/has_fleet_server.ts +++ /dev/null @@ -1,19 +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 { FLEET_SERVER_PACKAGE } from '../constants'; -import type { AgentPolicy, PackagePolicy } from '../types'; - -export function policyHasFleetServer(agentPolicy: AgentPolicy) { - if (!agentPolicy.package_policies) { - return false; - } - - return agentPolicy.package_policies.some( - (ap: PackagePolicy) => ap.package?.name === FLEET_SERVER_PACKAGE - ); -} diff --git a/x-pack/plugins/fleet/public/services/index.ts b/x-pack/plugins/fleet/public/services/index.ts index ad5dab5d5868d..6961069ebdce7 100644 --- a/x-pack/plugins/fleet/public/services/index.ts +++ b/x-pack/plugins/fleet/public/services/index.ts @@ -41,11 +41,11 @@ export { countValidationErrors, getStreamsForInputType, downloadSourceRoutesService, + policyHasFleetServer, } from '../../common/services'; export { isPackageUnverified, isVerificationError } from './package_verification'; export { isPackageUpdatable } from './is_package_updatable'; export { pkgKeyFromPackageInfo } from './pkg_key_from_package_info'; export { createExtensionRegistrationCallback } from './ui_extensions'; export { incrementPolicyName } from './increment_policy_name'; -export { policyHasFleetServer } from './has_fleet_server'; export { generateNewAgentPolicyWithDefaults } from './generate_new_agent_policy'; diff --git a/x-pack/plugins/fleet/server/routes/fleet_proxies/handler.ts b/x-pack/plugins/fleet/server/routes/fleet_proxies/handler.ts index 5b00baf9bf2c1..ab5750e187bbc 100644 --- a/x-pack/plugins/fleet/server/routes/fleet_proxies/handler.ts +++ b/x-pack/plugins/fleet/server/routes/fleet_proxies/handler.ts @@ -148,7 +148,7 @@ export const deleteFleetProxyHandler: RequestHandler< const { fleetServerHosts, outputs } = await getFleetProxyRelatedSavedObjects(soClient, proxyId); - await deleteFleetProxy(soClient, request.params.itemId); + await deleteFleetProxy(soClient, esClient, request.params.itemId); await bumpRelatedPolicies(soClient, esClient, fleetServerHosts, outputs); diff --git a/x-pack/plugins/fleet/server/routes/output/handler.ts b/x-pack/plugins/fleet/server/routes/output/handler.ts index 9a597be874bd6..71e30b84677c5 100644 --- a/x-pack/plugins/fleet/server/routes/output/handler.ts +++ b/x-pack/plugins/fleet/server/routes/output/handler.ts @@ -75,7 +75,7 @@ export const putOuputHandler: RequestHandler< const soClient = coreContext.savedObjects.client; const esClient = coreContext.elasticsearch.client.asInternalUser; try { - await outputService.update(soClient, request.params.outputId, request.body); + await outputService.update(soClient, esClient, request.params.outputId, request.body); const output = await outputService.get(soClient, request.params.outputId); if (output.is_default || output.is_default_monitoring) { await agentPolicyService.bumpAllAgentPolicies(soClient, esClient); @@ -109,7 +109,7 @@ export const postOuputHandler: RequestHandler< const esClient = coreContext.elasticsearch.client.asInternalUser; try { const { id, ...data } = request.body; - const output = await outputService.create(soClient, data, { id }); + const output = await outputService.create(soClient, esClient, data, { id }); if (output.is_default || output.is_default_monitoring) { await agentPolicyService.bumpAllAgentPolicies(soClient, esClient); } diff --git a/x-pack/plugins/fleet/server/services/agent_policies/output_helpers.test.ts b/x-pack/plugins/fleet/server/services/agent_policies/output_helpers.test.ts index 99437480b86f9..629640c574b09 100644 --- a/x-pack/plugins/fleet/server/services/agent_policies/output_helpers.test.ts +++ b/x-pack/plugins/fleet/server/services/agent_policies/output_helpers.test.ts @@ -199,13 +199,16 @@ describe('validateOutputForPolicy', () => { validateOutputForPolicy( savedObjectsClientMock.create(), { + name: 'Fleet server policy', data_output_id: 'test1', monitoring_output_id: 'test1', }, { data_output_id: 'newdataoutput', monitoring_output_id: 'test1' }, ['elasticsearch'] ) - ).rejects.toThrow(/logstash output is not usable with that policy./); + ).rejects.toThrow( + 'Output of type "logstash" is not usable with policy "Fleet server policy".' + ); }); it('should allow elasticsearch output to be used with a policy using fleet server or APM', async () => { diff --git a/x-pack/plugins/fleet/server/services/agent_policies/outputs_helpers.ts b/x-pack/plugins/fleet/server/services/agent_policies/outputs_helpers.ts index b127788533594..4873d2aa21426 100644 --- a/x-pack/plugins/fleet/server/services/agent_policies/outputs_helpers.ts +++ b/x-pack/plugins/fleet/server/services/agent_policies/outputs_helpers.ts @@ -7,8 +7,9 @@ import type { SavedObjectsClientContract } from '@kbn/core/server'; -import type { AgentPolicySOAttributes } from '../../types'; +import type { AgentPolicySOAttributes, AgentPolicy } from '../../types'; import { LICENCE_FOR_PER_POLICY_OUTPUT, outputType } from '../../../common/constants'; +import { policyHasFleetServer } from '../../../common/services'; import { appContextService } from '..'; import { outputService } from '../output'; import { OutputInvalidError, OutputLicenceError } from '../../errors'; @@ -59,7 +60,9 @@ export async function validateOutputForPolicy( if (isOutputTypeRestricted) { const dataOutput = await getDataOutputForAgentPolicy(soClient, data); if (!allowedOutputTypeForPolicy.includes(dataOutput.type)) { - throw new OutputInvalidError(`${dataOutput.type} output is not usable with that policy.`); + throw new OutputInvalidError( + `Output of type "${dataOutput.type}" is not usable with policy "${data.name}".` + ); } } @@ -71,6 +74,8 @@ export async function validateOutputForPolicy( if (data.is_managed && data.is_preconfigured) { return; } + // Validate output when the policy has fleet server + if (policyHasFleetServer(data as AgentPolicy)) return; const hasLicence = appContextService .getSecurityLicense() diff --git a/x-pack/plugins/fleet/server/services/agent_policy.test.ts b/x-pack/plugins/fleet/server/services/agent_policy.test.ts index b223e88102d9c..1d2241696704d 100644 --- a/x-pack/plugins/fleet/server/services/agent_policy.test.ts +++ b/x-pack/plugins/fleet/server/services/agent_policy.test.ts @@ -101,6 +101,7 @@ function getAgentPolicyCreateMock() { }); return soClient; } + describe('agent policy', () => { beforeEach(() => { getAgentPolicyUpdateMock().mockClear(); @@ -108,9 +109,9 @@ describe('agent policy', () => { describe('create', () => { it('is_managed present and false by default', async () => { + const soClient = getAgentPolicyCreateMock(); // ignore unrelated unique name constraint agentPolicyService.requireUniqueName = async () => {}; - const soClient = getAgentPolicyCreateMock(); const esClient = elasticsearchServiceMock.createClusterClient().asInternalUser; await expect( @@ -169,7 +170,7 @@ describe('agent policy', () => { ]); }); - it('should throw error for agent policy which has managed package poolicy', async () => { + it('should throw error for agent policy which has managed package policy', async () => { mockedPackagePolicyService.findAllForAgentPolicy.mockReturnValue([ { id: 'package-1', @@ -212,6 +213,20 @@ describe('agent policy', () => { await agentPolicyService.bumpAllAgentPolicies(soClient, esClient, undefined); + expect(soClient.bulkUpdate).toHaveBeenCalledWith([ + { + attributes: expect.objectContaining({ + fleet_server_hosts: ['http://fleetserver:8220'], + revision: NaN, + updated_by: 'system', + }), + id: '93f74c0-e876-11ea-b7d3-8b2acec6f75c', + references: [], + score: 1, + type: 'ingest_manager_settings', + }, + ]); + expect(agentPolicyUpdateEventHandler).toHaveBeenCalledTimes(1); }); }); diff --git a/x-pack/plugins/fleet/server/services/agent_policy.ts b/x-pack/plugins/fleet/server/services/agent_policy.ts index 5912e022370de..2720701f0b29c 100644 --- a/x-pack/plugins/fleet/server/services/agent_policy.ts +++ b/x-pack/plugins/fleet/server/services/agent_policy.ts @@ -38,12 +38,16 @@ import type { ListWithKuery, NewPackagePolicy, } from '../types'; -import { getAllowedOutputTypeForPolicy, packageToPackagePolicy } from '../../common/services'; +import { + getAllowedOutputTypeForPolicy, + packageToPackagePolicy, + policyHasFleetServer, + policyHasAPMIntegration, +} from '../../common/services'; import { agentPolicyStatuses, AGENT_POLICY_INDEX, UUID_V5_NAMESPACE, - FLEET_APM_PACKAGE, FLEET_ELASTIC_AGENT_PACKAGE, } from '../../common/constants'; import type { @@ -186,10 +190,11 @@ class AgentPolicyService { } public hasAPMIntegration(agentPolicy: AgentPolicy) { - return ( - agentPolicy.package_policies && - agentPolicy.package_policies.some((p) => p.package?.name === FLEET_APM_PACKAGE) - ); + return policyHasAPMIntegration(agentPolicy); + } + + public hasFleetServerIntegration(agentPolicy: AgentPolicy) { + return policyHasFleetServer(agentPolicy); } public async create( @@ -1054,6 +1059,7 @@ class AgentPolicyService { export const agentPolicyService = new AgentPolicyService(); +// TODO: remove unused parameters export async function addPackageToAgentPolicy( soClient: SavedObjectsClientContract, esClient: ElasticsearchClient, diff --git a/x-pack/plugins/fleet/server/services/fleet_proxies.test.ts b/x-pack/plugins/fleet/server/services/fleet_proxies.test.ts index 024860e0b6490..bed55ec26d0f6 100644 --- a/x-pack/plugins/fleet/server/services/fleet_proxies.test.ts +++ b/x-pack/plugins/fleet/server/services/fleet_proxies.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { savedObjectsClientMock } from '@kbn/core/server/mocks'; +import { savedObjectsClientMock, elasticsearchServiceMock } from '@kbn/core/server/mocks'; import { FLEET_PROXY_SAVED_OBJECT_TYPE } from '../constants'; @@ -33,6 +33,7 @@ const PROXY_IDS = { describe('Fleet proxies service', () => { const soClientMock = savedObjectsClientMock.create(); + const esClientMock = elasticsearchServiceMock.createElasticsearchClient(); beforeEach(() => { mockedOutputService.update.mockReset(); @@ -125,26 +126,28 @@ describe('Fleet proxies service', () => { describe('delete', () => { it('should not allow to delete preconfigured proxy', async () => { await expect(() => - deleteFleetProxy(soClientMock, PROXY_IDS.PRECONFIGURED) + deleteFleetProxy(soClientMock, esClientMock, PROXY_IDS.PRECONFIGURED) ).rejects.toThrowError(/Cannot delete test-preconfigured preconfigured proxy/); }); it('should allow to delete preconfigured proxy with option fromPreconfiguration:true', async () => { - await deleteFleetProxy(soClientMock, PROXY_IDS.PRECONFIGURED, { fromPreconfiguration: true }); + await deleteFleetProxy(soClientMock, esClientMock, PROXY_IDS.PRECONFIGURED, { + fromPreconfiguration: true, + }); expect(soClientMock.delete).toBeCalled(); }); it('should not allow to delete proxy wiht related preconfigured saved object', async () => { await expect(() => - deleteFleetProxy(soClientMock, PROXY_IDS.RELATED_PRECONFIGURED) + deleteFleetProxy(soClientMock, esClientMock, PROXY_IDS.RELATED_PRECONFIGURED) ).rejects.toThrowError( /Cannot delete a proxy used in a preconfigured fleet server hosts or output./ ); }); it('should allow to delete proxy wiht related preconfigured saved object option fromPreconfiguration:true', async () => { - await deleteFleetProxy(soClientMock, PROXY_IDS.RELATED_PRECONFIGURED, { + await deleteFleetProxy(soClientMock, esClientMock, PROXY_IDS.RELATED_PRECONFIGURED, { fromPreconfiguration: true, }); expect(mockedOutputService.update).toBeCalled(); diff --git a/x-pack/plugins/fleet/server/services/fleet_proxies.ts b/x-pack/plugins/fleet/server/services/fleet_proxies.ts index 09868568e84a8..2677714d6c436 100644 --- a/x-pack/plugins/fleet/server/services/fleet_proxies.ts +++ b/x-pack/plugins/fleet/server/services/fleet_proxies.ts @@ -5,7 +5,11 @@ * 2.0. */ -import type { SavedObjectsClientContract, SavedObject } from '@kbn/core/server'; +import type { + SavedObjectsClientContract, + SavedObject, + ElasticsearchClient, +} from '@kbn/core/server'; import { omit } from 'lodash'; import pMap from 'p-map'; @@ -87,6 +91,7 @@ export async function getFleetProxy( export async function deleteFleetProxy( soClient: SavedObjectsClientContract, + esClient: ElasticsearchClient, id: string, options?: { fromPreconfiguration?: boolean } ) { @@ -108,7 +113,7 @@ export async function deleteFleetProxy( ); } - await updateRelatedSavedObject(soClient, fleetServerHosts, outputs); + await updateRelatedSavedObject(soClient, esClient, fleetServerHosts, outputs); return await soClient.delete(FLEET_PROXY_SAVED_OBJECT_TYPE, id); } @@ -172,6 +177,7 @@ export async function bulkGetFleetProxies( async function updateRelatedSavedObject( soClient: SavedObjectsClientContract, + esClient: ElasticsearchClient, fleetServerHosts: FleetServerHost[], outputs: Output[] ) { @@ -189,7 +195,7 @@ async function updateRelatedSavedObject( await pMap( outputs, (output) => { - outputService.update(soClient, output.id, { + outputService.update(soClient, esClient, output.id, { ...omit(output, 'id'), proxy_id: null, }); diff --git a/x-pack/plugins/fleet/server/services/output.test.ts b/x-pack/plugins/fleet/server/services/output.test.ts index 0e063fa667ec1..e8adefe47e27b 100644 --- a/x-pack/plugins/fleet/server/services/output.test.ts +++ b/x-pack/plugins/fleet/server/services/output.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { savedObjectsClientMock } from '@kbn/core/server/mocks'; +import { savedObjectsClientMock, elasticsearchServiceMock } from '@kbn/core/server/mocks'; import type { OutputSOAttributes } from '../types'; @@ -168,9 +168,12 @@ function getMockedSoClient( } describe('Output Service', () => { + const esClientMock = elasticsearchServiceMock.createElasticsearchClient(); + beforeEach(() => { mockedAgentPolicyService.list.mockClear(); mockedAgentPolicyService.hasAPMIntegration.mockClear(); + mockedAgentPolicyService.hasFleetServerIntegration.mockClear(); mockedAgentPolicyService.removeOutputFromAll.mockReset(); mockedAppContextService.getInternalUserSOClient.mockReset(); mockedAppContextService.getEncryptedSavedObjectsSetup.mockReset(); @@ -181,6 +184,7 @@ describe('Output Service', () => { await outputService.create( soClient, + esClientMock, { is_default: false, is_default_monitoring: false, @@ -204,6 +208,7 @@ describe('Output Service', () => { await outputService.create( soClient, + esClientMock, { is_default: true, is_default_monitoring: false, @@ -223,6 +228,7 @@ describe('Output Service', () => { await outputService.create( soClient, + esClientMock, { is_default: true, is_default_monitoring: false, @@ -245,6 +251,7 @@ describe('Output Service', () => { await outputService.create( soClient, + esClientMock, { is_default: false, is_default_monitoring: true, @@ -264,6 +271,7 @@ describe('Output Service', () => { await outputService.create( soClient, + esClientMock, { is_default: true, is_default_monitoring: true, @@ -290,6 +298,7 @@ describe('Output Service', () => { await expect( outputService.create( soClient, + esClientMock, { is_default: true, is_default_monitoring: false, @@ -310,6 +319,7 @@ describe('Output Service', () => { await outputService.create( soClient, + esClientMock, { is_default: true, is_default_monitoring: true, @@ -334,6 +344,7 @@ describe('Output Service', () => { await expect( outputService.create( soClient, + esClientMock, { is_default: false, is_default_monitoring: false, @@ -345,13 +356,14 @@ describe('Output Service', () => { ).rejects.toThrow(`Logstash output needs encrypted saved object api key to be set`); }); - it('should work if encryptedSavedObject is configured', async () => { + it('should work if encryptedSavedObject is configured', async () => { const soClient = getMockedSoClient({}); mockedAppContextService.getEncryptedSavedObjectsSetup.mockReturnValue({ canEncrypt: true, } as any); await outputService.create( soClient, + esClientMock, { is_default: false, is_default_monitoring: false, @@ -362,6 +374,66 @@ describe('Output Service', () => { ); expect(soClient.create).toBeCalled(); }); + + it('Should update fleet server policies with data_output_id=default_output_id if a default new logstash output is created', async () => { + const soClient = getMockedSoClient({ + defaultOutputId: 'output-test', + }); + mockedAppContextService.getEncryptedSavedObjectsSetup.mockReturnValue({ + canEncrypt: true, + } as any); + mockedAgentPolicyService.list.mockResolvedValue({ + items: [ + { + name: 'fleet server policy', + id: 'fleet_server_policy', + is_default_fleet_server: true, + package_policies: [ + { + name: 'fleet-server-123', + package: { + name: 'fleet_server', + }, + }, + ], + }, + { + name: 'agent policy 1', + id: 'agent_policy_1', + is_managed: false, + package_policies: [ + { + name: 'nginx', + package: { + name: 'nginx', + }, + }, + ], + }, + ], + } as unknown as ReturnType); + mockedAgentPolicyService.hasFleetServerIntegration.mockReturnValue(true); + + await outputService.create( + soClient, + esClientMock, + { + is_default: true, + is_default_monitoring: false, + name: 'Test', + type: 'logstash', + }, + { id: 'output-1' } + ); + + expect(mockedAgentPolicyService.update).toBeCalledWith( + expect.anything(), + expect.anything(), + 'fleet_server_policy', + { data_output_id: 'output-test' }, + { force: true } + ); + }); }); describe('update', () => { @@ -370,7 +442,7 @@ describe('Output Service', () => { defaultOutputId: 'existing-default-output', }); - await outputService.update(soClient, 'output-test', { + await outputService.update(soClient, esClientMock, 'output-test', { is_default: true, }); @@ -390,7 +462,7 @@ describe('Output Service', () => { defaultOutputId: 'existing-default-output', }); - await outputService.update(soClient, 'existing-default-output', { + await outputService.update(soClient, esClientMock, 'existing-default-output', { is_default: true, name: 'Test', }); @@ -408,7 +480,7 @@ describe('Output Service', () => { defaultOutputMonitoringId: 'existing-default-monitoring-output', }); - await outputService.update(soClient, 'output-test', { + await outputService.update(soClient, esClientMock, 'output-test', { is_default_monitoring: true, }); @@ -427,7 +499,7 @@ describe('Output Service', () => { it('Do not allow to update a preconfigured output outisde from preconfiguration', async () => { const soClient = getMockedSoClient(); await expect( - outputService.update(soClient, 'existing-preconfigured-default-output', { + outputService.update(soClient, esClientMock, 'existing-preconfigured-default-output', { config_yaml: '', }) ).rejects.toThrow( @@ -439,6 +511,7 @@ describe('Output Service', () => { const soClient = getMockedSoClient(); await outputService.update( soClient, + esClientMock, 'existing-preconfigured-default-output', { config_yaml: '', @@ -457,7 +530,7 @@ describe('Output Service', () => { }); await expect( - outputService.update(soClient, 'output-test', { + outputService.update(soClient, esClientMock, 'output-test', { is_default: true, is_default_monitoring: false, name: 'Test', @@ -475,6 +548,7 @@ describe('Output Service', () => { await outputService.update( soClient, + esClientMock, 'output-test', { is_default: true, @@ -501,7 +575,7 @@ describe('Output Service', () => { } as unknown as ReturnType); mockedAgentPolicyService.hasAPMIntegration.mockReturnValue(false); - await outputService.update(soClient, 'existing-logstash-output', { + await outputService.update(soClient, esClientMock, 'existing-logstash-output', { type: 'elasticsearch', hosts: ['http://test:4343'], }); @@ -521,12 +595,13 @@ describe('Output Service', () => { } as unknown as ReturnType); mockedAgentPolicyService.hasAPMIntegration.mockReturnValue(false); - await outputService.update(soClient, 'existing-logstash-output', { + await outputService.update(soClient, esClientMock, 'existing-logstash-output', { is_default: true, }); expect(soClient.update).toBeCalled(); }); + it('Should call update with null fields if', async () => { const soClient = getMockedSoClient({}); mockedAgentPolicyService.list.mockResolvedValue({ @@ -534,7 +609,7 @@ describe('Output Service', () => { } as unknown as ReturnType); mockedAgentPolicyService.hasAPMIntegration.mockReturnValue(false); - await outputService.update(soClient, 'existing-logstash-output', { + await outputService.update(soClient, esClientMock, 'existing-logstash-output', { is_default: true, ca_sha256: null, ca_trusted_fingerprint: null, @@ -551,6 +626,7 @@ describe('Output Service', () => { ssl: null, }); }); + it('Should throw if you try to make that output the default output and somne policies using default output has APM integration', async () => { const soClient = getMockedSoClient({}); mockedAgentPolicyService.list.mockResolvedValue({ @@ -559,29 +635,133 @@ describe('Output Service', () => { mockedAgentPolicyService.hasAPMIntegration.mockReturnValue(true); await expect( - outputService.update(soClient, 'existing-logstash-output', { + outputService.update(soClient, esClientMock, 'existing-logstash-output', { is_default: true, }) ).rejects.toThrow(`Logstash output cannot be used with APM integration.`); }); - it('Should delete ES specific fields if the output type change to logstash', async () => { + + it('Should delete ES specific fields if the output type changes to logstash', async () => { const soClient = getMockedSoClient({}); mockedAgentPolicyService.list.mockResolvedValue({ items: [{}], } as unknown as ReturnType); mockedAgentPolicyService.hasAPMIntegration.mockReturnValue(false); + mockedAgentPolicyService.hasFleetServerIntegration.mockReturnValue(false); + + await outputService.update(soClient, esClientMock, 'existing-es-output', { + type: 'logstash', + hosts: ['test:4343'], + }); + + expect(soClient.update).toBeCalledWith(expect.anything(), expect.anything(), { + type: 'logstash', + hosts: ['test:4343'], + ca_sha256: null, + ca_trusted_fingerprint: null, + }); + }); - await outputService.update(soClient, 'existing-es-output', { + it('Should update fleet server policies with data_output_id=default_output_id if a default ES output is changed to logstash', async () => { + const soClient = getMockedSoClient({ + defaultOutputId: 'output-test', + }); + mockedAgentPolicyService.list.mockResolvedValue({ + items: [ + { + name: 'fleet server policy', + id: 'fleet_server_policy', + is_default_fleet_server: true, + package_policies: [ + { + name: 'fleet-server-123', + package: { + name: 'fleet_server', + }, + }, + ], + }, + { + name: 'agent policy 1', + id: 'agent_policy_1', + is_managed: false, + package_policies: [ + { + name: 'nginx', + package: { + name: 'nginx', + }, + }, + ], + }, + ], + } as unknown as ReturnType); + mockedAgentPolicyService.hasFleetServerIntegration.mockReturnValue(true); + + await outputService.update(soClient, esClientMock, 'output-test', { type: 'logstash', hosts: ['test:4343'], + is_default: true, }); expect(soClient.update).toBeCalledWith(expect.anything(), expect.anything(), { type: 'logstash', hosts: ['test:4343'], + is_default: true, ca_sha256: null, ca_trusted_fingerprint: null, }); + expect(mockedAgentPolicyService.update).toBeCalledWith( + expect.anything(), + expect.anything(), + 'fleet_server_policy', + { data_output_id: 'output-test' }, + { force: true } + ); + }); + + it('Should return an error if trying to change the output to logstash for fleet server policy', async () => { + const soClient = getMockedSoClient({}); + mockedAgentPolicyService.list.mockResolvedValue({ + items: [ + { + name: 'fleet server policy', + id: 'fleet_server_policy', + is_default_fleet_server: true, + package_policies: [ + { + name: 'fleet-server-123', + package: { + name: 'fleet_server', + }, + }, + ], + }, + { + name: 'agent policy 1', + id: 'agent_policy_1', + is_managed: false, + package_policies: [ + { + name: 'nginx', + package: { + name: 'nginx', + }, + }, + ], + }, + ], + } as unknown as ReturnType); + mockedAgentPolicyService.hasFleetServerIntegration.mockReturnValue(true); + + await expect( + outputService.update(soClient, esClientMock, 'existing-es-output', { + type: 'logstash', + hosts: ['test:4343'], + }) + ).rejects.toThrowError( + 'Logstash output cannot be used with Fleet Server integration in fleet server policy. Please create a new ElasticSearch output.' + ); }); }); diff --git a/x-pack/plugins/fleet/server/services/output.ts b/x-pack/plugins/fleet/server/services/output.ts index 41f699ab5e318..86fadfc7524ed 100644 --- a/x-pack/plugins/fleet/server/services/output.ts +++ b/x-pack/plugins/fleet/server/services/output.ts @@ -5,12 +5,17 @@ * 2.0. */ -import type { KibanaRequest, SavedObject, SavedObjectsClientContract } from '@kbn/core/server'; +import type { + KibanaRequest, + SavedObject, + SavedObjectsClientContract, + ElasticsearchClient, +} from '@kbn/core/server'; import { v5 as uuidv5 } from 'uuid'; import { omit } from 'lodash'; import { safeLoad } from 'js-yaml'; -import type { NewOutput, Output, OutputSOAttributes } from '../types'; +import type { NewOutput, Output, OutputSOAttributes, AgentPolicy } from '../types'; import { DEFAULT_OUTPUT, DEFAULT_OUTPUT_ID, @@ -78,12 +83,11 @@ function outputSavedObjectToOutput(so: SavedObject): Output }; } -async function validateLogstashOutputNotUsedInAPMPolicy( +async function getAgentPoliciesPerOutput( soClient: SavedObjectsClientContract, outputId?: string, isDefault?: boolean ) { - // Validate no policy with APM use that policy let kuery: string; if (outputId) { if (isDefault) { @@ -104,9 +108,86 @@ async function validateLogstashOutputNotUsedInAPMPolicy( perPage: SO_SEARCH_LIMIT, withPackagePolicies: true, }); - for (const agentPolicy of agentPolicySO.items) { - if (agentPolicyService.hasAPMIntegration(agentPolicy)) { - throw new OutputInvalidError('Logstash output cannot be used with APM integration.'); + return agentPolicySO?.items; +} + +async function validateLogstashOutputNotUsedInAPMPolicy( + soClient: SavedObjectsClientContract, + outputId?: string, + isDefault?: boolean +) { + const agentPolicies = await getAgentPoliciesPerOutput(soClient, outputId, isDefault); + + // Validate no policy with APM use that policy + if (agentPolicies) { + for (const agentPolicy of agentPolicies) { + if (agentPolicyService.hasAPMIntegration(agentPolicy)) { + throw new OutputInvalidError('Logstash output cannot be used with APM integration.'); + } + } + } +} + +async function findPoliciesWithFleetServer( + soClient: SavedObjectsClientContract, + outputId?: string, + isDefault?: boolean +) { + // find agent policies by outputId + // otherwise query all the policies + const agentPolicies = outputId + ? await getAgentPoliciesPerOutput(soClient, outputId, isDefault) + : (await agentPolicyService.list(soClient, { withPackagePolicies: true }))?.items; + + if (agentPolicies) { + const policiesWithFleetServer = agentPolicies.filter((policy) => + agentPolicyService.hasFleetServerIntegration(policy) + ); + return policiesWithFleetServer; + } + return []; +} + +function validateLogstashOutputNotUsedInFleetServerPolicy(agentPolicies: AgentPolicy[]) { + // Validate no policy with fleet server use that policy + for (const agentPolicy of agentPolicies) { + throw new OutputInvalidError( + `Logstash output cannot be used with Fleet Server integration in ${agentPolicy.name}. Please create a new ElasticSearch output.` + ); + } +} + +async function validateTypeChanges( + soClient: SavedObjectsClientContract, + esClient: ElasticsearchClient, + id: string, + data: Partial, + originalOutput: Output, + defaultDataOutputId: string | null +) { + const mergedIsDefault = data.is_default ?? originalOutput.is_default; + const fleetServerPolicies = await findPoliciesWithFleetServer(soClient, id, mergedIsDefault); + + if (data.type === outputType.Logstash || originalOutput.type === outputType.Logstash) { + await validateLogstashOutputNotUsedInAPMPolicy(soClient, id, mergedIsDefault); + } + // prevent changing an ES output to logstash if it's used by fleet server policies + if (originalOutput.type === outputType.Elasticsearch && data?.type === outputType.Logstash) { + // Validate no policy with fleet server use that policy + validateLogstashOutputNotUsedInFleetServerPolicy(fleetServerPolicies); + } + // if a logstash output is updated to become default, update the fleet server policies to use the previous ES output or default output + if (data?.type === outputType.Logstash && mergedIsDefault) { + for (const policy of fleetServerPolicies) { + await agentPolicyService.update( + soClient, + esClient, + policy.id, + { data_output_id: defaultDataOutputId }, + { + force: true, + } + ); } } } @@ -132,7 +213,10 @@ class OutputService { }); } - public async ensureDefaultOutput(soClient: SavedObjectsClientContract) { + public async ensureDefaultOutput( + soClient: SavedObjectsClientContract, + esClient: ElasticsearchClient + ) { const outputs = await this.list(soClient); const defaultOutput = outputs.items.find((o) => o.is_default); @@ -146,7 +230,7 @@ class OutputService { is_default_monitoring: !defaultMonitoringOutput, } as NewOutput; - return await this.create(soClient, newDefaultOutput, { + return await this.create(soClient, esClient, newDefaultOutput, { id: DEFAULT_OUTPUT_ID, overwrite: true, }); @@ -191,6 +275,7 @@ class OutputService { public async create( soClient: SavedObjectsClientContract, + esClient: ElasticsearchClient, output: NewOutput, options?: { id?: string; fromPreconfiguration?: boolean; overwrite?: boolean } ): Promise { @@ -205,12 +290,35 @@ class OutputService { } } + if (data.type === outputType.Logstash) { + const defaultDataOutputId = await this.getDefaultDataOutputId(soClient); + const fleetServerPolicies = await findPoliciesWithFleetServer(soClient); + // if a logstash output is updated to become default, update the fleet server policies to use the previous ES output or default output + if (data.is_default) { + for (const policy of fleetServerPolicies) { + await agentPolicyService.update( + soClient, + esClient, + policy.id, + { data_output_id: defaultDataOutputId }, + { + force: true, + } + ); + } + } else { + // prevent changing an ES output to logstash if it's used by fleet server policies + validateLogstashOutputNotUsedInFleetServerPolicy(fleetServerPolicies); + } + } + // ensure only default output exists if (data.is_default) { const defaultDataOuputId = await this.getDefaultDataOutputId(soClient); if (defaultDataOuputId) { await this.update( soClient, + esClient, defaultDataOuputId, { is_default: false }, { fromPreconfiguration: options?.fromPreconfiguration ?? false } @@ -222,6 +330,7 @@ class OutputService { if (defaultMonitoringOutputId) { await this.update( soClient, + esClient, defaultMonitoringOutputId, { is_default_monitoring: false }, { fromPreconfiguration: options?.fromPreconfiguration ?? false } @@ -366,6 +475,7 @@ class OutputService { public async update( soClient: SavedObjectsClientContract, + esClient: ElasticsearchClient, id: string, data: Partial, { fromPreconfiguration = false }: { fromPreconfiguration: boolean } = { @@ -382,11 +492,9 @@ class OutputService { const updateData: Nullable> = { ...omit(data, 'ssl') }; const mergedType = data.type ?? originalOutput.type; - const mergedIsDefault = data.is_default ?? originalOutput.is_default; + const defaultDataOutputId = await this.getDefaultDataOutputId(soClient); - if (mergedType === outputType.Logstash) { - await validateLogstashOutputNotUsedInAPMPolicy(soClient, id, mergedIsDefault); - } + await validateTypeChanges(soClient, esClient, id, data, originalOutput, defaultDataOutputId); // If the output type changed if (data.type && data.type !== originalOutput.type) { @@ -409,11 +517,11 @@ class OutputService { // ensure only default output exists if (data.is_default) { - const defaultDataOuputId = await this.getDefaultDataOutputId(soClient); - if (defaultDataOuputId && defaultDataOuputId !== id) { + if (defaultDataOutputId && defaultDataOutputId !== id) { await this.update( soClient, - defaultDataOuputId, + esClient, + defaultDataOutputId, { is_default: false }, { fromPreconfiguration } ); @@ -425,6 +533,7 @@ class OutputService { if (defaultMonitoringOutputId && defaultMonitoringOutputId !== id) { await this.update( soClient, + esClient, defaultMonitoringOutputId, { is_default_monitoring: false }, { fromPreconfiguration } diff --git a/x-pack/plugins/fleet/server/services/preconfiguration/fleet_proxies.ts b/x-pack/plugins/fleet/server/services/preconfiguration/fleet_proxies.ts index cfc0beb1cddd2..6e2685fa8a097 100644 --- a/x-pack/plugins/fleet/server/services/preconfiguration/fleet_proxies.ts +++ b/x-pack/plugins/fleet/server/services/preconfiguration/fleet_proxies.ts @@ -160,7 +160,7 @@ async function cleanPreconfiguredFleetProxies( } ); } else { - await deleteFleetProxy(soClient, existingFleetProxy.id, { + await deleteFleetProxy(soClient, esClient, existingFleetProxy.id, { fromPreconfiguration: true, }); } diff --git a/x-pack/plugins/fleet/server/services/preconfiguration/outputs.test.ts b/x-pack/plugins/fleet/server/services/preconfiguration/outputs.test.ts index e6fa2e008e4bb..8f62d3d7e2280 100644 --- a/x-pack/plugins/fleet/server/services/preconfiguration/outputs.test.ts +++ b/x-pack/plugins/fleet/server/services/preconfiguration/outputs.test.ts @@ -129,6 +129,7 @@ describe('output preconfiguration', () => { expect(mockedOutputService.create).toBeCalled(); expect(mockedOutputService.create).toBeCalledWith( + expect.anything(), expect.anything(), expect.objectContaining({ ca_trusted_fingerprint: 'testfingerprint', @@ -173,7 +174,7 @@ describe('output preconfiguration', () => { ]); expect(mockedOutputService.create).toBeCalled(); - expect(mockedOutputService.create.mock.calls[0][1].hosts).toEqual(['http://default-es:9200']); + expect(mockedOutputService.create.mock.calls[0][2].hosts).toEqual(['http://default-es:9200']); }); it('should update output if non preconfigured output with the same id exists', async () => { @@ -206,6 +207,7 @@ describe('output preconfiguration', () => { expect(mockedOutputService.create).not.toBeCalled(); expect(mockedOutputService.update).toBeCalled(); expect(mockedOutputService.update).toBeCalledWith( + expect.anything(), expect.anything(), 'existing-output-1', expect.objectContaining({ @@ -295,6 +297,8 @@ describe('output preconfiguration', () => { describe('cleanPreconfiguredOutputs', () => { it('should not delete non deleted preconfigured output', async () => { const soClient = savedObjectsClientMock.create(); + const esClient = elasticsearchServiceMock.createClusterClient().asInternalUser; + mockedOutputService.list.mockResolvedValue({ items: [ { id: 'output1', is_preconfigured: true } as Output, @@ -304,7 +308,7 @@ describe('output preconfiguration', () => { perPage: 10000, total: 1, }); - await cleanPreconfiguredOutputs(soClient, [ + await cleanPreconfiguredOutputs(soClient, esClient, [ { id: 'output1', is_default: false, @@ -328,6 +332,7 @@ describe('output preconfiguration', () => { it('should delete deleted preconfigured output', async () => { const soClient = savedObjectsClientMock.create(); + const esClient = elasticsearchServiceMock.createClusterClient().asInternalUser; mockedOutputService.list.mockResolvedValue({ items: [ { id: 'output1', is_preconfigured: true } as Output, @@ -337,7 +342,7 @@ describe('output preconfiguration', () => { perPage: 10000, total: 1, }); - await cleanPreconfiguredOutputs(soClient, [ + await cleanPreconfiguredOutputs(soClient, esClient, [ { id: 'output1', is_default: false, @@ -355,6 +360,7 @@ describe('output preconfiguration', () => { it('should update default deleted preconfigured output', async () => { const soClient = savedObjectsClientMock.create(); + const esClient = elasticsearchServiceMock.createClusterClient().asInternalUser; mockedOutputService.list.mockResolvedValue({ items: [ { id: 'output1', is_preconfigured: true, is_default: true } as Output, @@ -364,11 +370,12 @@ describe('output preconfiguration', () => { perPage: 10000, total: 1, }); - await cleanPreconfiguredOutputs(soClient, []); + await cleanPreconfiguredOutputs(soClient, esClient, []); expect(mockedOutputService.delete).not.toBeCalled(); expect(mockedOutputService.update).toBeCalledTimes(2); expect(mockedOutputService.update).toBeCalledWith( + expect.anything(), expect.anything(), 'output1', expect.objectContaining({ @@ -377,6 +384,7 @@ describe('output preconfiguration', () => { { fromPreconfiguration: true } ); expect(mockedOutputService.update).toBeCalledWith( + expect.anything(), expect.anything(), 'output2', expect.objectContaining({ diff --git a/x-pack/plugins/fleet/server/services/preconfiguration/outputs.ts b/x-pack/plugins/fleet/server/services/preconfiguration/outputs.ts index d51058fcb58e2..c7bdacc304423 100644 --- a/x-pack/plugins/fleet/server/services/preconfiguration/outputs.ts +++ b/x-pack/plugins/fleet/server/services/preconfiguration/outputs.ts @@ -45,7 +45,7 @@ export async function ensurePreconfiguredOutputs( outputs: PreconfiguredOutput[] ) { await createOrUpdatePreconfiguredOutputs(soClient, esClient, outputs); - await cleanPreconfiguredOutputs(soClient, outputs); + await cleanPreconfiguredOutputs(soClient, esClient, outputs); } export async function createOrUpdatePreconfiguredOutputs( @@ -93,10 +93,10 @@ export async function createOrUpdatePreconfiguredOutputs( if (isCreate) { logger.debug(`Creating output ${output.id}`); - await outputService.create(soClient, data, { id, fromPreconfiguration: true }); + await outputService.create(soClient, esClient, data, { id, fromPreconfiguration: true }); } else if (isUpdateWithNewData) { logger.debug(`Updating output ${output.id}`); - await outputService.update(soClient, id, data, { fromPreconfiguration: true }); + await outputService.update(soClient, esClient, id, data, { fromPreconfiguration: true }); // Bump revision of all policies using that output if (outputData.is_default || outputData.is_default_monitoring) { await agentPolicyService.bumpAllAgentPolicies(soClient, esClient); @@ -110,6 +110,7 @@ export async function createOrUpdatePreconfiguredOutputs( export async function cleanPreconfiguredOutputs( soClient: SavedObjectsClientContract, + esClient: ElasticsearchClient, outputs: PreconfiguredOutput[] ) { const existingOutputs = await outputService.list(soClient); @@ -129,6 +130,7 @@ export async function cleanPreconfiguredOutputs( logger.info(`Updating default preconfigured output ${output.id} is no longer preconfigured`); await outputService.update( soClient, + esClient, output.id, { is_preconfigured: false }, { @@ -139,6 +141,7 @@ export async function cleanPreconfiguredOutputs( logger.info(`Updating default preconfigured output ${output.id} is no longer preconfigured`); await outputService.update( soClient, + esClient, output.id, { is_preconfigured: false }, { diff --git a/x-pack/plugins/fleet/server/services/setup.ts b/x-pack/plugins/fleet/server/services/setup.ts index 29bd1772126ef..ab6b84c7999e3 100644 --- a/x-pack/plugins/fleet/server/services/setup.ts +++ b/x-pack/plugins/fleet/server/services/setup.ts @@ -116,7 +116,7 @@ async function createSetupSideEffects( settingsService.settingsSetup(soClient), ]); - const defaultOutput = await outputService.ensureDefaultOutput(soClient); + const defaultOutput = await outputService.ensureDefaultOutput(soClient, esClient); if (appContextService.getConfig()?.agentIdVerificationEnabled) { logger.debug('Setting up Fleet Elasticsearch assets'); From 83ec37fe2351b9ea37e82e6841cf2892f0533542 Mon Sep 17 00:00:00 2001 From: Walter Rafelsberger Date: Thu, 23 Mar 2023 09:26:40 +0100 Subject: [PATCH 11/40] [ML] Migrate SelectInterval/SelectSeverity unit tests from `enzyme` to `react-testing-lib` (#153321) Migrates the following React component tests from `enzyme` to `react-testing-lib`. - `SelectInterval` - `SelectSeverity` --- .../select_interval/select_interval.test.tsx | 69 ++++------ .../select_interval/select_interval.tsx | 2 +- .../select_severity/select_severity.test.tsx | 129 +++++++----------- .../select_severity/select_severity.tsx | 1 - 4 files changed, 78 insertions(+), 123 deletions(-) diff --git a/x-pack/plugins/ml/public/application/components/controls/select_interval/select_interval.test.tsx b/x-pack/plugins/ml/public/application/components/controls/select_interval/select_interval.test.tsx index 288437fd367c7..21022191308a2 100644 --- a/x-pack/plugins/ml/public/application/components/controls/select_interval/select_interval.test.tsx +++ b/x-pack/plugins/ml/public/application/components/controls/select_interval/select_interval.test.tsx @@ -5,58 +5,43 @@ * 2.0. */ -import React from 'react'; -import { act } from 'react-dom/test-utils'; -import { MemoryRouter } from 'react-router-dom'; -import { mount } from 'enzyme'; - -import { EuiSelect } from '@elastic/eui'; - -import { UrlStateProvider } from '@kbn/ml-url-state'; +import React, { useState } from 'react'; +import { render, act } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; import { SelectInterval } from './select_interval'; +// The following mock setup is necessary so that we can simulate +// both triggering the update callback and the internal state update +// to update the dropdown to the new state. +const mockUpdateCallback = jest.fn(); +const mockUseState = jest.fn().mockImplementation(useState); +jest.mock('@kbn/ml-url-state', () => ({ + usePageUrlState: () => { + const [interval, setInterval] = mockUseState({ display: 'Auto', val: 'auto' }); + return [interval, mockUpdateCallback.mockImplementation((d) => setInterval(d))]; + }, +})); + describe('SelectInterval', () => { - test('creates correct initial selected value', () => { - const wrapper = mount( - - - - - - ); - const select = wrapper.find(EuiSelect); - - const defaultSelectedValue = select.props().value; - expect(defaultSelectedValue).toBe('auto'); + afterEach(() => { + jest.clearAllMocks(); }); - test('currently selected value is updated correctly on click', (done) => { - const wrapper = mount( - - - - - - ); - const select = wrapper.find(EuiSelect).first(); - const defaultSelectedValue = select.props().value; - expect(defaultSelectedValue).toBe('auto'); + it('updates the selected value correctly on click', () => { + // arrange + const { getByText, getByTestId } = render(); - const onChange = select.props().onChange; + // assert initial state + expect((getByText('Auto') as HTMLOptionElement).selected).toBeTruthy(); + // update act(() => { - if (onChange !== undefined) { - onChange({ target: { value: 'day' } } as React.ChangeEvent); - } + userEvent.selectOptions(getByTestId('mlAnomalyIntervalControls'), getByText('1 hour')); }); - setImmediate(() => { - wrapper.update(); - const updatedSelect = wrapper.find(EuiSelect).first(); - const updatedSelectedValue = updatedSelect.props().value; - expect(updatedSelectedValue).toBe('day'); - done(); - }); + // assert updated state + expect(mockUpdateCallback).toBeCalledWith({ display: '1 hour', val: 'hour' }); + expect((getByText('1 hour') as HTMLOptionElement).selected).toBeTruthy(); }); }); diff --git a/x-pack/plugins/ml/public/application/components/controls/select_interval/select_interval.tsx b/x-pack/plugins/ml/public/application/components/controls/select_interval/select_interval.tsx index fa06273e3dd90..f81c32cc02ed5 100644 --- a/x-pack/plugins/ml/public/application/components/controls/select_interval/select_interval.tsx +++ b/x-pack/plugins/ml/public/application/components/controls/select_interval/select_interval.tsx @@ -87,6 +87,7 @@ export const SelectIntervalUI: FC = ({ interval, onChange return ( = ({ interval, onChange } compressed - id="selectInterval" options={OPTIONS} value={interval.val} onChange={handleOnChange} diff --git a/x-pack/plugins/ml/public/application/components/controls/select_severity/select_severity.test.tsx b/x-pack/plugins/ml/public/application/components/controls/select_severity/select_severity.test.tsx index a2777867e3ab2..9857400ab5ade 100644 --- a/x-pack/plugins/ml/public/application/components/controls/select_severity/select_severity.test.tsx +++ b/x-pack/plugins/ml/public/application/components/controls/select_severity/select_severity.test.tsx @@ -4,96 +4,67 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ - -import React from 'react'; -import { act } from 'react-dom/test-utils'; -import { MemoryRouter } from 'react-router-dom'; -import { mount } from 'enzyme'; - -import { EuiSuperSelect } from '@elastic/eui'; - -import { UrlStateProvider } from '@kbn/ml-url-state'; - -import { SelectSeverity } from './select_severity'; +import React, { useState } from 'react'; +import { render, act, fireEvent, waitFor } from '@testing-library/react'; +import { __IntlProvider as IntlProvider } from '@kbn/i18n-react'; + +import { SelectSeverity, SEVERITY_OPTIONS } from './select_severity'; + +// The following mock setup is necessary so that we can simulate +// both triggering the update callback and the internal state update +// to update the dropdown to the new state. +const mockSeverityOptions = SEVERITY_OPTIONS; +const mockUpdateCallback = jest.fn(); +const mockUseState = jest.fn().mockImplementation(useState); +jest.mock('@kbn/ml-url-state', () => ({ + usePageUrlState: () => { + const [severity, setSeverity] = mockUseState(mockSeverityOptions[0]); + return [severity, mockUpdateCallback.mockImplementation((d) => setSeverity(d))]; + }, +})); describe('SelectSeverity', () => { - test('creates correct severity options and initial selected value', () => { - const wrapper = mount( - - - - - - ); - const select = wrapper.find(EuiSuperSelect); - - const options = select.props().options; - const defaultSelectedValue = select.props().valueOfSelected; - - expect(defaultSelectedValue).toBe('warning'); - expect(options.length).toEqual(4); - - // excpect options Array to equal Array containing Object that contains the property - expect(options).toEqual( - expect.arrayContaining([ - expect.objectContaining({ - value: 'warning', - }), - ]) - ); - - expect(options).toEqual( - expect.arrayContaining([ - expect.objectContaining({ - value: 'minor', - }), - ]) - ); - - expect(options).toEqual( - expect.arrayContaining([ - expect.objectContaining({ - value: 'major', - }), - ]) - ); - - expect(options).toEqual( - expect.arrayContaining([ - expect.objectContaining({ - value: 'critical', - }), - ]) - ); + afterEach(() => { + jest.clearAllMocks(); }); - test('state for currently selected value is updated correctly on click', (done) => { - const wrapper = mount( - - - - - + it('updates the severity option correctly on click', async () => { + // arrange + const { getByText, getAllByText, queryByText, getByTestId } = render( + + + ); - const select = wrapper.find(EuiSuperSelect).first(); - const defaultSelectedValue = select.props().valueOfSelected; - expect(defaultSelectedValue).toBe('warning'); + // assert initial state + expect(getAllByText('warning')).toHaveLength(2); + expect(queryByText('minor')).not.toBeInTheDocument(); + expect(queryByText('major')).not.toBeInTheDocument(); + expect(queryByText('critical')).not.toBeInTheDocument(); + + // open popover + act(() => { + fireEvent.click(getByTestId('mlAnomalySeverityThresholdControls')); + }); - const onChange = select.props().onChange; + // assert open popover + expect(getAllByText('warning')).toHaveLength(3); + expect(getAllByText('minor')).toHaveLength(1); + expect(getAllByText('major')).toHaveLength(1); + expect(getAllByText('critical')).toHaveLength(1); + // click item in popver act(() => { - if (onChange !== undefined) { - onChange('critical'); - } + fireEvent.click(getByText('major')); }); - setImmediate(() => { - wrapper.update(); - const updatedSelect = wrapper.find(EuiSuperSelect).first(); - const updatedSelectedValue = updatedSelect.props().valueOfSelected; - expect(updatedSelectedValue).toBe('critical'); - done(); + // assert updated state + expect(mockUpdateCallback).toBeCalledWith(SEVERITY_OPTIONS[2]); + await waitFor(() => { + expect(queryByText('warning')).not.toBeInTheDocument(); + expect(queryByText('minor')).not.toBeInTheDocument(); + expect(getAllByText('major')).toHaveLength(2); + expect(queryByText('critical')).not.toBeInTheDocument(); }); }); }); diff --git a/x-pack/plugins/ml/public/application/components/controls/select_severity/select_severity.tsx b/x-pack/plugins/ml/public/application/components/controls/select_severity/select_severity.tsx index a9375fec0a69e..dfc95c9f0659a 100644 --- a/x-pack/plugins/ml/public/application/components/controls/select_severity/select_severity.tsx +++ b/x-pack/plugins/ml/public/application/components/controls/select_severity/select_severity.tsx @@ -150,7 +150,6 @@ export const SelectSeverityUI: FC< prepend={i18n.translate('xpack.ml.explorer.severityThresholdLabel', { defaultMessage: 'Severity', })} - id="severityThreshold" data-test-subj={'mlAnomalySeverityThresholdControls'} className={classNames} hasDividers From fa749408099b62a7a40a6375cb13671a884b22e5 Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Thu, 23 Mar 2023 09:34:44 +0100 Subject: [PATCH 12/40] action: GitHub command for new PRs created by the APM UI/Oblt teams (#153433) ## Summary Make sure the `apm-ui`/`observability` teams are ware of the new features, such as https://github.com/elastic/kibana/pull/153106 For such, this new action will create a GitHub comment only when a PR is created by any member of `observability` team. The comment will be something like: image cc @elastic/apm-ui @cachedout @kuisathaverat --------- Co-authored-by: Ivan Fernandez Calvo --- .github/CODEOWNERS | 1 + .github/workflows/oblt-github-commands.yml | 63 ++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 .github/workflows/oblt-github-commands.yml diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index fbab2ccea81b0..cee340914a2a6 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -778,6 +778,7 @@ packages/kbn-yarn-lock-validator @elastic/kibana-operations # Observability robots /.github/workflows/deploy-my-kibana.yml @elastic/observablt-robots +/.github/workflows/oblt-github-commands @elastic/observablt-robots # Infra Monitoring /x-pack/test/functional/apps/infra @elastic/infra-monitoring-ui diff --git a/.github/workflows/oblt-github-commands.yml b/.github/workflows/oblt-github-commands.yml new file mode 100644 index 0000000000000..4388901e2fa0e --- /dev/null +++ b/.github/workflows/oblt-github-commands.yml @@ -0,0 +1,63 @@ +--- +## +## This the automation to let Observability team members to know what are the +## supported GitHub commands to interact with the Observability test environments. +## +## Owner: @elastic/observablt-robots +## +name: oblt-github-commands + +on: + pull_request_target: + types: + - opened + +permissions: + contents: read + +jobs: + comment-if-oblt-member: + runs-on: ubuntu-latest + steps: + - uses: elastic/apm-pipeline-library/.github/actions/github-token@current + with: + url: ${{ secrets.OBLT_VAULT_ADDR }} + roleId: ${{ secrets.OBLT_VAULT_ROLE_ID }} + secretId: ${{ secrets.OBLT_VAULT_SECRET_ID }} + + - id: is_team_member + name: Check if user is member of the Elastic org and Observability team + run: | + if gh api -H "Accept: application/vnd.github+json" \ + /orgs/elastic/teams/observability/memberships/${{ github.actor }} ; then + echo "result=true" >> $GITHUB_OUTPUT + else + echo "result=false" >> $GITHUB_OUTPUT + fi + env: + GH_TOKEN: ${{ env.GITHUB_TOKEN }} + + - if: ${{ steps.is_team_member.outputs.result == 'true' }} + uses: actions/github-script@v6 + with: + github-token: ${{ env.GITHUB_TOKEN }} + script: | + const body = ` + ### :robot: GitHub comments + +
Expand to view the GitHub comments +

+ + Just comment with: + - \`/oblt-deploy\` : Deploy a Kibana instance using the Observability test environments. + - \`run\` \`elasticsearch-ci/docs\` : Re-trigger the docs validation. (use unformatted text in the comment!) + +

+
+ `.replace(/ +/g, '') + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: body + }) From db3cc3180dd5a83a56cbe6a1c4e1170f66d83d45 Mon Sep 17 00:00:00 2001 From: Pablo Machado Date: Thu, 23 Mar 2023 10:24:53 +0100 Subject: [PATCH 13/40] [Security Solution] Update alert links on the Entity Analytics page to navigate to the Alerts page (#153372) issue: https://github.com/elastic/security-team/issues/6160 ## Summary Before this PR alert links would open the timeline but after this PR, they will redirect the user to the Alerts page. ![Mar-21-2023 15-36-45](https://user-images.githubusercontent.com/1490444/226640377-e814df8a-f7a6-4e97-ab5b-f906e5dcbb06.gif) ### Checklist Delete any items that are not applicable to this PR. - [x] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) - [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 --- .../format_page_filter_search_param.test.ts | 39 +++++++++ .../utils/format_page_filter_search_param.ts | 16 ++-- .../e2e/dashboards/entity_analytics.cy.ts | 28 ++++--- ...vigate_to_alerts_page_with_filters.test.ts | 79 +++++++++++++++++++ .../entity_analytics/risk_score/columns.tsx | 56 +++---------- .../risk_score/index.test.tsx | 25 +++--- .../entity_analytics/risk_score/index.tsx | 45 +++++------ 7 files changed, 188 insertions(+), 100 deletions(-) create mode 100644 x-pack/plugins/security_solution/common/utils/format_page_filter_search_param.test.ts create mode 100644 x-pack/plugins/security_solution/public/common/hooks/use_navigate_to_alerts_page_with_filters.test.ts diff --git a/x-pack/plugins/security_solution/common/utils/format_page_filter_search_param.test.ts b/x-pack/plugins/security_solution/common/utils/format_page_filter_search_param.test.ts new file mode 100644 index 0000000000000..e9d9f00f2a8fb --- /dev/null +++ b/x-pack/plugins/security_solution/common/utils/format_page_filter_search_param.test.ts @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { FilterItemObj } from '../../public/common/components/filter_group/types'; +import { formatPageFilterSearchParam } from './format_page_filter_search_param'; + +describe('formatPageFilterSearchParam', () => { + it('returns the same data when all values are provided', () => { + const filter: FilterItemObj = { + title: 'User', + fieldName: 'user.name', + selectedOptions: ['test_user'], + existsSelected: true, + exclude: true, + }; + + expect(formatPageFilterSearchParam([filter])).toEqual([filter]); + }); + + it('it sets default values when they are undefined', () => { + const filter: FilterItemObj = { + fieldName: 'user.name', + }; + + expect(formatPageFilterSearchParam([filter])).toEqual([ + { + title: 'user.name', + selectedOptions: [], + fieldName: 'user.name', + existsSelected: false, + exclude: false, + }, + ]); + }); +}); diff --git a/x-pack/plugins/security_solution/common/utils/format_page_filter_search_param.ts b/x-pack/plugins/security_solution/common/utils/format_page_filter_search_param.ts index c8deaf824bc2c..dce47feaf6cce 100644 --- a/x-pack/plugins/security_solution/common/utils/format_page_filter_search_param.ts +++ b/x-pack/plugins/security_solution/common/utils/format_page_filter_search_param.ts @@ -8,11 +8,13 @@ import type { FilterItemObj } from '../../public/common/components/filter_group/types'; export const formatPageFilterSearchParam = (filters: FilterItemObj[]) => { - return filters.map((filter) => ({ - title: filter.title ?? filter.fieldName, - selectedOptions: filter.selectedOptions ?? [], - fieldName: filter.fieldName, - existsSelected: filter.existsSelected ?? false, - exclude: filter.exclude ?? false, - })); + return filters.map( + ({ title, fieldName, selectedOptions = [], existsSelected = false, exclude = false }) => ({ + title: title ?? fieldName, + selectedOptions, + fieldName, + existsSelected, + exclude, + }) + ); }; diff --git a/x-pack/plugins/security_solution/cypress/e2e/dashboards/entity_analytics.cy.ts b/x-pack/plugins/security_solution/cypress/e2e/dashboards/entity_analytics.cy.ts index b62dc94c219ce..6ddb533e6b169 100644 --- a/x-pack/plugins/security_solution/cypress/e2e/dashboards/entity_analytics.cy.ts +++ b/x-pack/plugins/security_solution/cypress/e2e/dashboards/entity_analytics.cy.ts @@ -17,7 +17,6 @@ import { ENABLE_HOST_RISK_SCORE_BUTTON, ENABLE_USER_RISK_SCORE_BUTTON, HOSTS_DONUT_CHART, - HOSTS_TABLE, HOSTS_TABLE_ROWS, HOST_RISK_SCORE_NO_DATA_DETECTED, UPGRADE_HOST_RISK_SCORE_BUTTON, @@ -28,17 +27,19 @@ import { USER_RISK_SCORE_NO_DATA_DETECTED, USERS_TABLE_ALERT_CELL, HOSTS_TABLE_ALERT_CELL, + HOSTS_TABLE, } from '../../screens/entity_analytics'; import { openRiskTableFilterAndSelectTheLowOption } from '../../tasks/host_risk'; import { createRule } from '../../tasks/api_calls/rules'; import { waitForAlertsToPopulate } from '../../tasks/create_new_rule'; import { getNewRule } from '../../objects/rule'; -import { QUERY_TAB_BUTTON } from '../../screens/timeline'; -import { closeTimeline } from '../../tasks/timeline'; import { clickOnFirstHostsAlerts, clickOnFirstUsersAlerts } from '../../tasks/risk_scores'; +import { OPTION_LIST_LABELS, OPTION_LIST_VALUES } from '../../screens/common/filter_group'; const TEST_USER_ALERTS = 2; +const TEST_USER_NAME = 'test'; const SIEM_KIBANA_HOST_ALERTS = 2; +const SIEM_KIBANA_HOST_NAME = 'siem-kibana'; describe('Entity Analytics Dashboard', () => { before(() => { @@ -160,10 +161,14 @@ describe('Entity Analytics Dashboard', () => { cy.get(HOSTS_TABLE_ALERT_CELL).first().should('include.text', SIEM_KIBANA_HOST_ALERTS); }); - it('opens timeline when alerts count is clicked', () => { + it('opens alerts page when alerts count is clicked', () => { clickOnFirstHostsAlerts(); - cy.get(QUERY_TAB_BUTTON).should('contain.text', SIEM_KIBANA_HOST_ALERTS); - closeTimeline(); + cy.url().should('include', ALERTS_URL); + + cy.get(OPTION_LIST_LABELS).eq(0).should('include.text', 'Status'); + cy.get(OPTION_LIST_VALUES(0)).should('include.text', 'open'); + cy.get(OPTION_LIST_LABELS).eq(3).should('include.text', 'Host'); + cy.get(OPTION_LIST_VALUES(3)).should('include.text', SIEM_KIBANA_HOST_NAME); }); }); }); @@ -220,10 +225,15 @@ describe('Entity Analytics Dashboard', () => { cy.get(USERS_TABLE_ALERT_CELL).first().should('include.text', TEST_USER_ALERTS); }); - it('opens timeline when alerts count is clicked', () => { + it('opens alerts page when alerts count is clicked', () => { clickOnFirstUsersAlerts(); - cy.get(QUERY_TAB_BUTTON).should('contain.text', TEST_USER_ALERTS); - closeTimeline(); + + cy.url().should('include', ALERTS_URL); + + cy.get(OPTION_LIST_LABELS).eq(0).should('include.text', 'Status'); + cy.get(OPTION_LIST_VALUES(0)).should('include.text', 'open'); + cy.get(OPTION_LIST_LABELS).eq(2).should('include.text', 'User'); + cy.get(OPTION_LIST_VALUES(2)).should('include.text', TEST_USER_NAME); }); }); }); diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_navigate_to_alerts_page_with_filters.test.ts b/x-pack/plugins/security_solution/public/common/hooks/use_navigate_to_alerts_page_with_filters.test.ts new file mode 100644 index 0000000000000..fd8627dcd5d73 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/hooks/use_navigate_to_alerts_page_with_filters.test.ts @@ -0,0 +1,79 @@ +/* + * 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 { renderHook } from '@testing-library/react-hooks'; +import { SecurityPageName } from '../../app/types'; +import { useNavigateToAlertsPageWithFilters } from './use_navigate_to_alerts_page_with_filters'; + +const mockNavigateTo = jest.fn(); +jest.mock('../lib/kibana', () => ({ + useNavigation: () => ({ navigateTo: mockNavigateTo }), +})); + +describe('useNavigateToAlertsPageWithFilters', () => { + it('navigates to alerts page with single filter', () => { + const filter = { + title: 'test filter', + selectedOptions: ['test value'], + fieldName: 'test field', + exclude: false, + existsSelected: false, + }; + + const { + result: { current: navigateToAlertsPageWithFilters }, + } = renderHook(() => useNavigateToAlertsPageWithFilters()); + + navigateToAlertsPageWithFilters(filter); + + expect(mockNavigateTo).toHaveBeenCalledWith({ + deepLinkId: SecurityPageName.alerts, + path: "?pageFilters=!((exclude:!f,existsSelected:!f,fieldName:'test field',selectedOptions:!('test value'),title:'test filter'))", + }); + }); + + it('navigates to alerts page with multiple filter', () => { + const filters = [ + { + title: 'test filter 1', + selectedOptions: ['test value 1'], + fieldName: 'test field 1', + exclude: false, + existsSelected: false, + }, + { + title: 'test filter 2', + selectedOptions: ['test value 2'], + fieldName: 'test field 2', + exclude: true, + existsSelected: true, + }, + ]; + + const { + result: { current: navigateToAlertsPageWithFilters }, + } = renderHook(() => useNavigateToAlertsPageWithFilters()); + + navigateToAlertsPageWithFilters(filters); + + expect(mockNavigateTo).toHaveBeenCalledWith({ + deepLinkId: SecurityPageName.alerts, + path: "?pageFilters=!((exclude:!f,existsSelected:!f,fieldName:'test field 1',selectedOptions:!('test value 1'),title:'test filter 1'),(exclude:!t,existsSelected:!t,fieldName:'test field 2',selectedOptions:!('test value 2'),title:'test filter 2'))", + }); + }); + + it('navigates to alerts page when no filter is provided', () => { + const { + result: { current: navigateToAlertsPageWithFilters }, + } = renderHook(() => useNavigateToAlertsPageWithFilters()); + + navigateToAlertsPageWithFilters([]); + + expect(mockNavigateTo).toHaveBeenCalledWith( + expect.objectContaining({ deepLinkId: SecurityPageName.alerts }) + ); + }); +}); diff --git a/x-pack/plugins/security_solution/public/overview/components/entity_analytics/risk_score/columns.tsx b/x-pack/plugins/security_solution/public/overview/components/entity_analytics/risk_score/columns.tsx index 5909bba78283f..7cd355e967974 100644 --- a/x-pack/plugins/security_solution/public/overview/components/entity_analytics/risk_score/columns.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/entity_analytics/risk_score/columns.tsx @@ -9,7 +9,6 @@ import React from 'react'; import type { EuiBasicTableColumn } from '@elastic/eui'; import { EuiLink, EuiIcon, EuiToolTip } from '@elastic/eui'; import styled from 'styled-components'; -import { get } from 'lodash/fp'; import { UsersTableType } from '../../../../explore/users/store/model'; import { getEmptyTagValue } from '../../../../common/components/empty_value'; import { HostDetailsLink, UserDetailsLink } from '../../../../common/components/links'; @@ -29,7 +28,6 @@ import { SecurityCellActionsTrigger, SecurityCellActionType, } from '../../../../common/components/cell_actions'; -import { useKibana } from '../../../../common/lib/kibana'; type HostRiskScoreColumns = Array>; @@ -37,11 +35,11 @@ const StyledCellActions = styled(SecurityCellActions)` padding-left: ${({ theme }) => theme.eui.euiSizeS}; `; -type OpenEntityInTimeline = (entityName: string, oldestAlertTimestamp?: string) => void; +type OpenEntityOnAlertsPage = (entityName: string) => void; export const getRiskScoreColumns = ( riskEntity: RiskScoreEntity, - openEntityInTimeline: OpenEntityInTimeline + openEntityOnAlertsPage: OpenEntityOnAlertsPage ): HostRiskScoreColumns => [ { field: riskEntity === RiskScoreEntity.host ? 'host.name' : 'user.name', @@ -138,45 +136,17 @@ export const getRiskScoreColumns = ( truncateText: false, mobileOptions: { show: true }, render: (alertCount: number, risk) => ( - + + openEntityOnAlertsPage( + riskEntity === RiskScoreEntity.host ? risk.host.name : risk.user.name + ) + } + > + + ), }, ]; - -interface AlertsCountColumnParams { - riskEntity: RiskScoreEntity; - openEntityInTimeline: OpenEntityInTimeline; - alertCount: number; - risk: HostRiskScore & UserRiskScore; -} - -const AlertsCountColumn = ({ - riskEntity, - openEntityInTimeline, - alertCount, - risk, -}: AlertsCountColumnParams) => { - const { telemetry } = useKibana().services; - - return ( - { - telemetry.reportEntityAlertsClicked({ entity: 'host' }); - - openEntityInTimeline( - get('host.name', risk) ?? get('user.name', risk), - risk.oldestAlertTimestamp - ); - }} - > - - - ); -}; diff --git a/x-pack/plugins/security_solution/public/overview/components/entity_analytics/risk_score/index.test.tsx b/x-pack/plugins/security_solution/public/overview/components/entity_analytics/risk_score/index.test.tsx index 08faeefcb8418..80a750a8bce14 100644 --- a/x-pack/plugins/security_solution/public/overview/components/entity_analytics/risk_score/index.test.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/entity_analytics/risk_score/index.test.tsx @@ -13,7 +13,6 @@ import type { UserRiskScore } from '../../../../../common/search_strategy'; import { RiskScoreEntity, RiskSeverity } from '../../../../../common/search_strategy'; import type { SeverityCount } from '../../../../explore/components/risk_score/severity/types'; import { useRiskScore, useRiskScoreKpi } from '../../../../explore/containers/risk_score'; -import { openAlertsFilter } from '../../detection_response/utils'; import { useKibana as mockUseKibana } from '../../../../common/lib/kibana/__mocks__'; import { createTelemetryServiceMock } from '../../../../common/lib/telemetry/telemetry_service.mock'; @@ -62,12 +61,10 @@ const mockUseRiskScore = useRiskScore as jest.Mock; const mockUseRiskScoreKpi = useRiskScoreKpi as jest.Mock; jest.mock('../../../../explore/containers/risk_score'); -const mockOpenTimelineWithFilters = jest.fn(); -jest.mock('../../detection_response/hooks/use_navigate_to_timeline', () => { +const mockOpenAlertsPageWithFilters = jest.fn(); +jest.mock('../../../../common/hooks/use_navigate_to_alerts_page_with_filters', () => { return { - useNavigateToTimeline: () => ({ - openTimelineWithFilters: mockOpenTimelineWithFilters, - }), + useNavigateToAlertsPageWithFilters: () => mockOpenAlertsPageWithFilters, }; }); @@ -182,7 +179,7 @@ describe.each([RiskScoreEntity.host, RiskScoreEntity.user])( expect(queryByTestId('risk-score-alerts')).toHaveTextContent(alertsCount.toString()); }); - it('navigates to timeline with filters when alerts count is clicked', () => { + it('navigates to alerts page with filters when alerts count is clicked', () => { mockUseQueryToggle.mockReturnValue({ toggleStatus: true, setToggleStatus: jest.fn() }); mockUseRiskScoreKpi.mockReturnValue({ severityCount: mockSeverityCount, @@ -214,14 +211,12 @@ describe.each([RiskScoreEntity.host, RiskScoreEntity.user])( fireEvent.click(getByTestId('risk-score-alerts')); - expect(mockOpenTimelineWithFilters.mock.calls[0][0]).toEqual([ - [ - { - field: riskEntity === RiskScoreEntity.host ? 'host.name' : 'user.name', - value: name, - }, - openAlertsFilter, - ], + expect(mockOpenAlertsPageWithFilters.mock.calls[0][0]).toEqual([ + { + title: riskEntity === RiskScoreEntity.host ? 'Host' : 'User', + fieldName: riskEntity === RiskScoreEntity.host ? 'host.name' : 'user.name', + selectedOptions: [name], + }, ]); }); } diff --git a/x-pack/plugins/security_solution/public/overview/components/entity_analytics/risk_score/index.tsx b/x-pack/plugins/security_solution/public/overview/components/entity_analytics/risk_score/index.tsx index 57e4195e787a9..48dec97456377 100644 --- a/x-pack/plugins/security_solution/public/overview/components/entity_analytics/risk_score/index.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/entity_analytics/risk_score/index.tsx @@ -27,46 +27,39 @@ import { useRefetchQueries } from '../../../../common/hooks/use_refetch_queries' import { Loader } from '../../../../common/components/loader'; import { Panel } from '../../../../common/components/panel'; import * as commonI18n from '../common/translations'; -import { useNavigateToTimeline } from '../../detection_response/hooks/use_navigate_to_timeline'; -import type { TimeRange } from '../../../../common/store/inputs/model'; -import { openAlertsFilter } from '../../detection_response/utils'; import { useEntityInfo } from './use_entity'; import { RiskScoreHeaderContent } from './header_content'; import { ChartContent } from './chart_content'; +import { useNavigateToAlertsPageWithFilters } from '../../../../common/hooks/use_navigate_to_alerts_page_with_filters'; +import { getRiskEntityTranslation } from './translations'; +import { useKibana } from '../../../../common/lib/kibana'; const EntityAnalyticsRiskScoresComponent = ({ riskEntity }: { riskEntity: RiskScoreEntity }) => { const { deleteQuery, setQuery, from, to } = useGlobalTime(); const [updatedAt, setUpdatedAt] = useState(Date.now()); const entity = useEntityInfo(riskEntity); - - const { openTimelineWithFilters } = useNavigateToTimeline(); - - const openEntityInTimeline = useCallback( - (entityName: string, oldestAlertTimestamp?: string) => { - const timeRange: TimeRange | undefined = oldestAlertTimestamp - ? { - kind: 'relative', - from: oldestAlertTimestamp ?? '', - fromStr: oldestAlertTimestamp ?? '', - to: new Date().toISOString(), - toStr: 'now', - } - : undefined; - - const filter = { - field: riskEntity === RiskScoreEntity.host ? 'host.name' : 'user.name', - value: entityName, - }; - openTimelineWithFilters([[filter, openAlertsFilter]], timeRange); + const openAlertsPageWithFilters = useNavigateToAlertsPageWithFilters(); + const { telemetry } = useKibana().services; + + const openEntityOnAlertsPage = useCallback( + (entityName: string) => { + telemetry.reportEntityAlertsClicked({ entity: riskEntity }); + openAlertsPageWithFilters([ + { + title: getRiskEntityTranslation(riskEntity), + selectedOptions: [entityName], + fieldName: riskEntity === RiskScoreEntity.host ? 'host.name' : 'user.name', + }, + ]); }, - [riskEntity, openTimelineWithFilters] + [telemetry, riskEntity, openAlertsPageWithFilters] ); const { toggleStatus, setToggleStatus } = useQueryToggle(entity.tableQueryId); const columns = useMemo( - () => getRiskScoreColumns(riskEntity, openEntityInTimeline), - [riskEntity, openEntityInTimeline] + () => getRiskScoreColumns(riskEntity, openEntityOnAlertsPage), + [riskEntity, openEntityOnAlertsPage] ); const [selectedSeverity, setSelectedSeverity] = useState([]); From 04c4c0632be0a7c6a08a36053e9a2baeb76852e8 Mon Sep 17 00:00:00 2001 From: Walter Rafelsberger Date: Thu, 23 Mar 2023 10:58:19 +0100 Subject: [PATCH 14/40] [ML] Explain Log Rate Spikes: Improve grouping using the `include` option of the `frequent_item_sets` agg. (#153091) - Makes use of the `filter` option for the `frequent_item_sets` aggregation introduced in `8.7.0` (https://github.com/elastic/elasticsearch/pull/92414). - Several fixes to grouping code, esp. around detection of multiple non-overlapping groups. - Improved which items of a group to display in the summary. Previously, up to 15 items that were unique to a group were displayed. Related to the above mentioned improvement it would mean that for groups that had no unique items then no items would show up in the summary. Now we sort items by duplicates and doc count ascending (a sort of "uniqueness" score) and show up to 5 items of those. - The Group button code has been simplified. --- x-pack/packages/ml/agg_utils/index.ts | 1 + x-pack/packages/ml/agg_utils/src/types.ts | 6 +- .../final_significant_term_groups.ts | 86 +++++++++-- .../artificial_logs/frequent_item_sets.ts | 60 ++++---- .../significant_term_groups.ts | 9 +- .../artificial_logs/significant_terms.ts | 6 +- .../farequote/significant_term_groups.ts | 8 + x-pack/plugins/aiops/common/types.ts | 7 +- ...uild_extended_base_filter_criteria.test.ts | 27 ++-- .../build_extended_base_filter_criteria.ts | 4 +- .../explain_log_rate_spikes_analysis.tsx | 48 +++--- .../get_group_table_items.test.ts | 76 ++++++++-- .../get_group_table_items.ts | 28 ++-- .../spike_analysis_table_groups.tsx | 137 ++++++++---------- .../components/spike_analysis_table/types.ts | 11 +- .../server/routes/explain_log_rate_spikes.ts | 11 +- .../queries/fetch_frequent_item_sets.test.ts | 55 +++++++ .../queries/fetch_frequent_item_sets.ts | 43 +++--- .../get_field_value_pair_counts.test.ts | 5 +- .../get_filtered_frequent_item_sets.test.ts | 20 --- .../get_filtered_frequent_item_sets.ts | 47 ------ .../routes/queries/get_group_filter.test.ts | 14 +- ...get_groups_with_readded_duplicates.test.ts | 13 +- .../get_groups_with_readded_duplicates.ts | 2 + .../queries/get_marked_duplicates.test.ts | 49 ++++++- .../routes/queries/get_marked_duplicates.ts | 2 +- .../get_missing_significant_terms.test.ts | 17 ++- .../queries/get_missing_significant_terms.ts | 4 +- .../get_significant_term_groups.test.ts | 6 +- .../queries/get_significant_term_groups.ts | 25 +--- .../get_simple_hierarchical_tree.test.ts | 77 +++++++++- .../queries/get_simple_hierarchical_tree.ts | 34 ++--- ...et_simple_hierarchical_tree_leaves.test.ts | 30 +++- .../get_simple_hierarchical_tree_leaves.ts | 21 ++- .../routes/queries/get_value_counts.test.ts | 6 +- .../queries/get_values_descending.test.ts | 6 +- ...ransform_significant_term_to_group.test.ts | 22 ++- .../transform_significant_term_to_group.ts | 8 +- .../translations/translations/fr-FR.json | 4 - .../translations/translations/ja-JP.json | 4 - .../translations/translations/zh-CN.json | 4 - .../apis/aiops/explain_log_rate_spikes.ts | 10 +- .../api_integration/apis/aiops/test_data.ts | 4 +- .../apps/aiops/explain_log_rate_spikes.ts | 10 +- .../test/functional/apps/aiops/test_data.ts | 38 ++++- .../explain_log_rate_spikes_data_generator.ts | 21 ++- 46 files changed, 702 insertions(+), 424 deletions(-) create mode 100644 x-pack/plugins/aiops/server/routes/queries/fetch_frequent_item_sets.test.ts delete mode 100644 x-pack/plugins/aiops/server/routes/queries/get_filtered_frequent_item_sets.test.ts delete mode 100644 x-pack/plugins/aiops/server/routes/queries/get_filtered_frequent_item_sets.ts diff --git a/x-pack/packages/ml/agg_utils/index.ts b/x-pack/packages/ml/agg_utils/index.ts index 0dc06d6f7df29..fe7c2575d09f7 100644 --- a/x-pack/packages/ml/agg_utils/index.ts +++ b/x-pack/packages/ml/agg_utils/index.ts @@ -22,6 +22,7 @@ export type { AggCardinality, SignificantTerm, SignificantTermGroup, + SignificantTermGroupItem, SignificantTermGroupHistogram, SignificantTermHistogram, SignificantTermHistogramItem, diff --git a/x-pack/packages/ml/agg_utils/src/types.ts b/x-pack/packages/ml/agg_utils/src/types.ts index 09368db8f1cd3..5a654f8bc84de 100644 --- a/x-pack/packages/ml/agg_utils/src/types.ts +++ b/x-pack/packages/ml/agg_utils/src/types.ts @@ -96,8 +96,10 @@ export interface SignificantTermGroupHistogram { histogram: SignificantTermHistogramItem[]; } -interface SignificantTermGroupItem extends FieldValuePair { - duplicate?: boolean; +export interface SignificantTermGroupItem extends FieldValuePair { + docCount: number; + pValue: number | null; + duplicate?: number; } /** diff --git a/x-pack/plugins/aiops/common/__mocks__/artificial_logs/final_significant_term_groups.ts b/x-pack/plugins/aiops/common/__mocks__/artificial_logs/final_significant_term_groups.ts index 219f7cd8bf126..a149a8edc5601 100644 --- a/x-pack/plugins/aiops/common/__mocks__/artificial_logs/final_significant_term_groups.ts +++ b/x-pack/plugins/aiops/common/__mocks__/artificial_logs/final_significant_term_groups.ts @@ -9,19 +9,87 @@ import type { SignificantTermGroup } from '@kbn/ml-agg-utils'; export const finalSignificantTermGroups: SignificantTermGroup[] = [ { - id: '2038579476', + docCount: 632, group: [ - { fieldName: 'response_code', fieldValue: '500', duplicate: false }, - { fieldName: 'url', fieldValue: 'home.php', duplicate: false }, - { fieldName: 'url', fieldValue: 'login.php', duplicate: false }, + { + docCount: 790, + duplicate: 2, + fieldName: 'url', + fieldValue: 'login.php', + pValue: 0.012783309213417932, + }, + { + docCount: 632, + duplicate: 2, + fieldName: 'user', + fieldValue: 'Peter', + pValue: 0.012783309213417932, + }, ], + id: '1982924514', + pValue: 0.012783309213417932, + }, + { docCount: 792, - pValue: 0.010770456205312423, + group: [ + { + docCount: 792, + duplicate: 2, + fieldName: 'response_code', + fieldValue: '500', + pValue: 0.012783309213417932, + }, + { + docCount: 792, + duplicate: 2, + fieldName: 'url', + fieldValue: 'home.php', + pValue: 0.00974308761016614, + }, + ], + id: '2052830342', + pValue: 0.00974308761016614, + }, + { + docCount: 790, + group: [ + { + docCount: 792, + duplicate: 2, + fieldName: 'response_code', + fieldValue: '500', + pValue: 0.012783309213417932, + }, + { + docCount: 790, + duplicate: 2, + fieldName: 'url', + fieldValue: 'login.php', + pValue: 0.012783309213417932, + }, + ], + id: '3851735068', + pValue: 0.012783309213417932, }, { - id: '817080373', - group: [{ fieldName: 'user', fieldValue: 'Peter', duplicate: false }], - docCount: 1981, - pValue: 2.7454255728359757e-21, + docCount: 636, + group: [ + { + docCount: 792, + duplicate: 2, + fieldName: 'url', + fieldValue: 'home.php', + pValue: 0.00974308761016614, + }, + { + docCount: 636, + duplicate: 2, + fieldName: 'user', + fieldValue: 'Peter', + pValue: 0.00974308761016614, + }, + ], + id: '92732022', + pValue: 0.00974308761016614, }, ]; diff --git a/x-pack/plugins/aiops/common/__mocks__/artificial_logs/frequent_item_sets.ts b/x-pack/plugins/aiops/common/__mocks__/artificial_logs/frequent_item_sets.ts index 783ea7d674d3d..3a744a0a3a578 100644 --- a/x-pack/plugins/aiops/common/__mocks__/artificial_logs/frequent_item_sets.ts +++ b/x-pack/plugins/aiops/common/__mocks__/artificial_logs/frequent_item_sets.ts @@ -11,49 +11,41 @@ export const frequentItemSets: ItemsetResult[] = [ { set: { response_code: '500', url: 'home.php' }, size: 2, - maxPValue: 0.010770456205312423, + maxPValue: 0.00974308761016614, doc_count: 792, - support: 0.5262458471760797, - total_doc_count: 1505, + support: 0.2703994537384773, + total_doc_count: 2929, }, { - set: { user: 'Peter', url: 'home.php' }, + set: { response_code: '500', url: 'login.php' }, size: 2, - maxPValue: 0.010770456205312423, - doc_count: 634, - support: 0.4212624584717608, - total_doc_count: 1505, - }, - { - set: { response_code: '500', user: 'Mary', url: 'home.php' }, - size: 3, - maxPValue: 0.010770456205312423, - doc_count: 396, - support: 0.26312292358803985, - total_doc_count: 1505, + maxPValue: 0.012783309213417932, + doc_count: 790, + support: 0.2697166268350973, + total_doc_count: 2929, }, { - set: { response_code: '500', user: 'Paul', url: 'home.php' }, - size: 3, - maxPValue: 0.010770456205312423, - doc_count: 396, - support: 0.26312292358803985, - total_doc_count: 1505, + set: { user: 'Peter', url: 'home.php' }, + size: 2, + maxPValue: 0.00974308761016614, + doc_count: 636, + support: 0.21713895527483784, + total_doc_count: 2929, }, { - set: { response_code: '404', user: 'Peter', url: 'home.php' }, - size: 3, - maxPValue: 0.010770456205312423, - doc_count: 317, - support: 0.2106312292358804, - total_doc_count: 1505, + set: { user: 'Peter', url: 'login.php' }, + size: 2, + maxPValue: 0.012783309213417932, + doc_count: 632, + support: 0.21577330146807785, + total_doc_count: 2929, }, { - set: { response_code: '200', user: 'Peter', url: 'home.php' }, - size: 3, - maxPValue: 0.010770456205312423, - doc_count: 317, - support: 0.2106312292358804, - total_doc_count: 1505, + set: { response_code: '500', user: 'Peter' }, + size: 2, + maxPValue: 3.6085657805889595e-12, + doc_count: 79, + support: 0.026971662683509732, + total_doc_count: 2929, }, ]; diff --git a/x-pack/plugins/aiops/common/__mocks__/artificial_logs/significant_term_groups.ts b/x-pack/plugins/aiops/common/__mocks__/artificial_logs/significant_term_groups.ts index 68acb81e35f4f..ebbb8731511f9 100644 --- a/x-pack/plugins/aiops/common/__mocks__/artificial_logs/significant_term_groups.ts +++ b/x-pack/plugins/aiops/common/__mocks__/artificial_logs/significant_term_groups.ts @@ -11,8 +11,13 @@ export const significantTermGroups: SignificantTermGroup[] = [ { id: '2038579476', group: [ - { fieldName: 'response_code', fieldValue: '500' }, - { fieldName: 'url', fieldValue: 'home.php' }, + { + fieldName: 'response_code', + fieldValue: '500', + docCount: 1819, + pValue: 2.9589053032077285e-12, + }, + { fieldName: 'url', fieldValue: 'home.php', docCount: 1744, pValue: 0.010770456205312423 }, ], docCount: 792, pValue: 0.010770456205312423, diff --git a/x-pack/plugins/aiops/common/__mocks__/artificial_logs/significant_terms.ts b/x-pack/plugins/aiops/common/__mocks__/artificial_logs/significant_terms.ts index f1bf9720aed3c..b1ce53a7df087 100644 --- a/x-pack/plugins/aiops/common/__mocks__/artificial_logs/significant_terms.ts +++ b/x-pack/plugins/aiops/common/__mocks__/artificial_logs/significant_terms.ts @@ -9,7 +9,7 @@ export const significantTerms = [ { fieldName: 'response_code', fieldValue: '500', - doc_count: 1821, + doc_count: 1819, bg_count: 553, total_doc_count: 4671, total_bg_count: 1975, @@ -20,7 +20,7 @@ export const significantTerms = [ { fieldName: 'url', fieldValue: 'home.php', - doc_count: 1742, + doc_count: 1744, bg_count: 632, total_doc_count: 4671, total_bg_count: 1975, @@ -31,7 +31,7 @@ export const significantTerms = [ { fieldName: 'url', fieldValue: 'login.php', - doc_count: 1742, + doc_count: 1738, bg_count: 632, total_doc_count: 4671, total_bg_count: 1975, diff --git a/x-pack/plugins/aiops/common/__mocks__/farequote/significant_term_groups.ts b/x-pack/plugins/aiops/common/__mocks__/farequote/significant_term_groups.ts index c8d20384a8895..59d310ed82d44 100644 --- a/x-pack/plugins/aiops/common/__mocks__/farequote/significant_term_groups.ts +++ b/x-pack/plugins/aiops/common/__mocks__/farequote/significant_term_groups.ts @@ -14,10 +14,14 @@ export const significantTermGroups: SignificantTermGroup[] = [ { fieldName: 'custom_field.keyword', fieldValue: 'deviation', + docCount: 101, + pValue: 0.01, }, { fieldName: 'airline', fieldValue: 'UAL', + docCount: 101, + pValue: 0.01, }, ], docCount: 101, @@ -29,10 +33,14 @@ export const significantTermGroups: SignificantTermGroup[] = [ { fieldName: 'custom_field.keyword', fieldValue: 'deviation', + docCount: 49, + pValue: 0.001, }, { fieldName: 'airline', fieldValue: 'AAL', + docCount: 49, + pValue: 0.001, }, ], docCount: 49, diff --git a/x-pack/plugins/aiops/common/types.ts b/x-pack/plugins/aiops/common/types.ts index cb6b81dcece6d..f9279686b6fe8 100644 --- a/x-pack/plugins/aiops/common/types.ts +++ b/x-pack/plugins/aiops/common/types.ts @@ -23,9 +23,14 @@ export interface ItemsetResult { total_doc_count: number; } +interface SimpleHierarchicalTreeNodeSet extends FieldValuePair { + docCount: number; + pValue: number | null; +} + export interface SimpleHierarchicalTreeNode { name: string; - set: FieldValuePair[]; + set: SimpleHierarchicalTreeNodeSet[]; docCount: number; pValue: number | null; children: SimpleHierarchicalTreeNode[]; diff --git a/x-pack/plugins/aiops/public/application/utils/build_extended_base_filter_criteria.test.ts b/x-pack/plugins/aiops/public/application/utils/build_extended_base_filter_criteria.test.ts index c007054801438..2f77eabb3a75b 100644 --- a/x-pack/plugins/aiops/public/application/utils/build_extended_base_filter_criteria.test.ts +++ b/x-pack/plugins/aiops/public/application/utils/build_extended_base_filter_criteria.test.ts @@ -27,15 +27,24 @@ const selectedGroupMock: GroupTableItem = { id: '21289599', docCount: 20468, pValue: 2.2250738585072626e-308, - group: [ - { fieldName: 'error.message', fieldValue: 'rate limit exceeded' }, - { fieldName: 'message', fieldValue: 'too many requests' }, - { fieldName: 'user_agent.original.keyword', fieldValue: 'Mozilla/5.0' }, - ], - repeatedValues: [ - { fieldName: 'beat.hostname.keyword', fieldValue: 'ip-192-168-1-1' }, - { fieldName: 'beat.name.keyword', fieldValue: 'i-1234' }, - { fieldName: 'docker.container.id.keyword', fieldValue: 'asdf' }, + uniqueItemsCount: 3, + groupItemsSortedByUniqueness: [ + { fieldName: 'error.message', fieldValue: 'rate limit exceeded', docCount: 10, pValue: 0.05 }, + { fieldName: 'message', fieldValue: 'too many requests', docCount: 10, pValue: 0.05 }, + { + fieldName: 'user_agent.original.keyword', + fieldValue: 'Mozilla/5.0', + docCount: 10, + pValue: 0.05, + }, + { + fieldName: 'beat.hostname.keyword', + fieldValue: 'ip-192-168-1-1', + docCount: 10, + pValue: 0.05, + }, + { fieldName: 'beat.name.keyword', fieldValue: 'i-1234', docCount: 10, pValue: 0.05 }, + { fieldName: 'docker.container.id.keyword', fieldValue: 'asdf', docCount: 10, pValue: 0.05 }, ], histogram: [], }; diff --git a/x-pack/plugins/aiops/public/application/utils/build_extended_base_filter_criteria.ts b/x-pack/plugins/aiops/public/application/utils/build_extended_base_filter_criteria.ts index c61196272e58a..afeeb09dbb80d 100644 --- a/x-pack/plugins/aiops/public/application/utils/build_extended_base_filter_criteria.ts +++ b/x-pack/plugins/aiops/public/application/utils/build_extended_base_filter_criteria.ts @@ -11,7 +11,7 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import type { Query } from '@kbn/es-query'; -import type { SignificantTerm, FieldValuePair } from '@kbn/ml-agg-utils'; +import type { SignificantTerm } from '@kbn/ml-agg-utils'; import { buildBaseFilterCriteria } from '@kbn/ml-query-utils'; @@ -36,7 +36,7 @@ export function buildExtendedBaseFilterCriteria( const groupFilter = []; if (selectedGroup) { - const allItems: FieldValuePair[] = [...selectedGroup.group, ...selectedGroup.repeatedValues]; + const allItems = selectedGroup.groupItemsSortedByUniqueness; for (const item of allItems) { const { fieldName, fieldValue } = item; groupFilter.push({ term: { [fieldName]: fieldValue } }); diff --git a/x-pack/plugins/aiops/public/components/explain_log_rate_spikes/explain_log_rate_spikes_analysis.tsx b/x-pack/plugins/aiops/public/components/explain_log_rate_spikes/explain_log_rate_spikes_analysis.tsx index ca4ad2486c81d..6006365e631bb 100644 --- a/x-pack/plugins/aiops/public/components/explain_log_rate_spikes/explain_log_rate_spikes_analysis.tsx +++ b/x-pack/plugins/aiops/public/components/explain_log_rate_spikes/explain_log_rate_spikes_analysis.tsx @@ -12,8 +12,6 @@ import { EuiButton, EuiCallOut, EuiEmptyPrompt, - EuiFlexItem, - EuiFlexGroup, EuiFormRow, EuiSpacer, EuiSwitch, @@ -49,8 +47,7 @@ const groupResultsMessage = i18n.translate( const groupResultsHelpMessage = i18n.translate( 'xpack.aiops.spikeAnalysisTable.groupedSwitchLabel.groupResultsHelpMessage', { - defaultMessage: - 'In expanded row, field/value pairs which do not appear in other groups are marked by an asterisk (*).', + defaultMessage: 'Items which are unique to a group are marked by an asterisk (*).', } ); @@ -66,6 +63,7 @@ interface ExplainLogRateSpikesAnalysisProps { latest: number; /** Window parameters for the analysis */ windowParameters: WindowParameters; + /** The search query to be applied to the analysis as a filter */ searchQuery: Query['query']; } @@ -185,7 +183,7 @@ export const ExplainLogRateSpikesAnalysis: FC const showSpikeAnalysisTable = data?.significantTerms.length > 0; const groupItemCount = groupTableItems.reduce((p, c) => { - return p + c.group.length; + return p + c.groupItemsSortedByUniqueness.length; }, 0); const foundGroups = groupTableItems.length > 0 && groupItemCount > 0; @@ -201,6 +199,7 @@ export const ExplainLogRateSpikesAnalysis: FC /> {errors.length > 0 ? ( <> + ) : null} {showSpikeAnalysisTable && foundGroups && ( <> - - - - - - - - {groupResults && ( - - <> - - )} - - + + + + )} diff --git a/x-pack/plugins/aiops/public/components/spike_analysis_table/get_group_table_items.test.ts b/x-pack/plugins/aiops/public/components/spike_analysis_table/get_group_table_items.test.ts index 79c24088aca21..9986925f07a88 100644 --- a/x-pack/plugins/aiops/public/components/spike_analysis_table/get_group_table_items.test.ts +++ b/x-pack/plugins/aiops/public/components/spike_analysis_table/get_group_table_items.test.ts @@ -14,39 +14,97 @@ describe('getGroupTableItems', () => { const groupTableItems = getGroupTableItems(finalSignificantTermGroups); expect(groupTableItems).toEqual([ + { + docCount: 632, + groupItemsSortedByUniqueness: [ + { + docCount: 632, + duplicate: 2, + fieldName: 'user', + fieldValue: 'Peter', + pValue: 0.012783309213417932, + }, + { + docCount: 790, + duplicate: 2, + fieldName: 'url', + fieldValue: 'login.php', + pValue: 0.012783309213417932, + }, + ], + histogram: undefined, + id: '1982924514', + pValue: 0.012783309213417932, + uniqueItemsCount: 0, + }, { docCount: 792, - group: [ + groupItemsSortedByUniqueness: [ { + docCount: 792, + duplicate: 2, fieldName: 'response_code', fieldValue: '500', + pValue: 0.012783309213417932, }, { + docCount: 792, + duplicate: 2, fieldName: 'url', fieldValue: 'home.php', + pValue: 0.00974308761016614, }, + ], + histogram: undefined, + id: '2052830342', + pValue: 0.00974308761016614, + uniqueItemsCount: 0, + }, + { + docCount: 790, + groupItemsSortedByUniqueness: [ { + docCount: 790, + duplicate: 2, fieldName: 'url', fieldValue: 'login.php', + pValue: 0.012783309213417932, + }, + { + docCount: 792, + duplicate: 2, + fieldName: 'response_code', + fieldValue: '500', + pValue: 0.012783309213417932, }, ], histogram: undefined, - id: '2038579476', - pValue: 0.010770456205312423, - repeatedValues: [], + id: '3851735068', + pValue: 0.012783309213417932, + uniqueItemsCount: 0, }, { - docCount: 1981, - group: [ + docCount: 636, + groupItemsSortedByUniqueness: [ { + docCount: 636, + duplicate: 2, fieldName: 'user', fieldValue: 'Peter', + pValue: 0.00974308761016614, + }, + { + docCount: 792, + duplicate: 2, + fieldName: 'url', + fieldValue: 'home.php', + pValue: 0.00974308761016614, }, ], histogram: undefined, - id: '817080373', - pValue: 2.7454255728359757e-21, - repeatedValues: [], + id: '92732022', + pValue: 0.00974308761016614, + uniqueItemsCount: 0, }, ]); }); diff --git a/x-pack/plugins/aiops/public/components/spike_analysis_table/get_group_table_items.ts b/x-pack/plugins/aiops/public/components/spike_analysis_table/get_group_table_items.ts index 6690311bbca18..68ba4471a7b5e 100644 --- a/x-pack/plugins/aiops/public/components/spike_analysis_table/get_group_table_items.ts +++ b/x-pack/plugins/aiops/public/components/spike_analysis_table/get_group_table_items.ts @@ -5,35 +5,35 @@ * 2.0. */ -import type { SignificantTermGroup, FieldValuePair } from '@kbn/ml-agg-utils'; +import { sortBy } from 'lodash'; -import type { GroupTableItem } from './types'; +import type { SignificantTermGroup } from '@kbn/ml-agg-utils'; + +import type { GroupTableItem, GroupTableItemGroup } from './types'; export function getGroupTableItems( significantTermsGroups: SignificantTermGroup[] ): GroupTableItem[] { const tableItems = significantTermsGroups.map(({ id, group, docCount, histogram, pValue }) => { - const sortedGroup = group.sort((a, b) => - a.fieldName > b.fieldName ? 1 : b.fieldName > a.fieldName ? -1 : 0 - ); - const dedupedGroup: FieldValuePair[] = []; - const repeatedValues: FieldValuePair[] = []; + const sortedGroup = sortBy(group, [(d) => d.fieldName]); + const dedupedGroup: GroupTableItemGroup[] = []; sortedGroup.forEach((pair) => { - const { fieldName, fieldValue } = pair; - if (pair.duplicate === false) { - dedupedGroup.push({ fieldName, fieldValue }); - } else { - repeatedValues.push({ fieldName, fieldValue }); + const { fieldName, fieldValue, docCount: pairDocCount, pValue: pairPValue, duplicate } = pair; + if ((duplicate ?? 0) <= 1) { + dedupedGroup.push({ fieldName, fieldValue, docCount: pairDocCount, pValue: pairPValue }); } }); + const groupItemsSortedByUniqueness = sortBy(group, ['duplicate', 'docCount']); + const sortedDedupedGroup = sortBy(dedupedGroup, (d) => [-1 * (d.pValue ?? 0), d.docCount]); + return { id, docCount, pValue, - group: dedupedGroup, - repeatedValues, + uniqueItemsCount: sortedDedupedGroup.length, + groupItemsSortedByUniqueness, histogram, }; }); diff --git a/x-pack/plugins/aiops/public/components/spike_analysis_table/spike_analysis_table_groups.tsx b/x-pack/plugins/aiops/public/components/spike_analysis_table/spike_analysis_table_groups.tsx index 176acdd52ecd3..9f4aa2a148d76 100644 --- a/x-pack/plugins/aiops/public/components/spike_analysis_table/spike_analysis_table_groups.tsx +++ b/x-pack/plugins/aiops/public/components/spike_analysis_table/spike_analysis_table_groups.tsx @@ -18,6 +18,7 @@ import { EuiScreenReaderOnly, EuiSpacer, EuiTableSortingType, + EuiText, EuiToolTip, RIGHT_ALIGNMENT, useEuiTheme, @@ -27,7 +28,7 @@ import { import { i18n } from '@kbn/i18n'; import { escapeKuery } from '@kbn/es-query'; import { FormattedMessage } from '@kbn/i18n-react'; -import type { SignificantTerm, FieldValuePair } from '@kbn/ml-agg-utils'; +import type { SignificantTerm } from '@kbn/ml-agg-utils'; import { SEARCH_QUERY_LANGUAGE } from '../../application/utils/search_utils'; import { useAiopsAppContext } from '../../hooks/use_aiops_app_context'; @@ -43,7 +44,7 @@ const NARROW_COLUMN_WIDTH = '120px'; const EXPAND_COLUMN_WIDTH = '40px'; const ACTIONS_COLUMN_WIDTH = '60px'; const NOT_AVAILABLE = '--'; -const MAX_GROUP_BADGES = 10; +const MAX_GROUP_BADGES = 5; const PAGINATION_SIZE_OPTIONS = [5, 10, 20, 50]; const DEFAULT_SORT_FIELD = 'pValue'; @@ -83,45 +84,30 @@ export const SpikeAnalysisGroupsTable: FC = ({ const { pinnedGroup, selectedGroup, setPinnedGroup, setSelectedGroup } = useSpikeAnalysisTableRowContext(); - const pushExpandedTableItem = ( - expandedTableItems: SignificantTerm[], - items: FieldValuePair[], - unique = false - ) => { - for (const groupItem of items) { - const { fieldName, fieldValue } = groupItem; - const itemToPush = { - ...(significantTerms.find( - (significantTerm) => - (significantTerm.fieldName === fieldName || - significantTerm.fieldName === `${fieldName}.keyword`) && - (significantTerm.fieldValue === fieldValue || - significantTerm.fieldValue === `${fieldValue}.keyword`) - ) ?? {}), - fieldName: `${fieldName}`, - fieldValue: `${fieldValue}`, - unique, - } as SignificantTerm; - - expandedTableItems.push(itemToPush); - } - return expandedTableItems; - }; - const toggleDetails = (item: GroupTableItem) => { const itemIdToExpandedRowMapValues = { ...itemIdToExpandedRowMap }; if (itemIdToExpandedRowMapValues[item.id]) { delete itemIdToExpandedRowMapValues[item.id]; } else { - const { group, repeatedValues } = item; - const expandedTableItems: SignificantTerm[] = []; - - pushExpandedTableItem(expandedTableItems, group, true); - pushExpandedTableItem(expandedTableItems, repeatedValues); - itemIdToExpandedRowMapValues[item.id] = ( ( + (p, groupItem) => { + const st = significantTerms.find( + (d) => d.fieldName === groupItem.fieldName && d.fieldValue === groupItem.fieldValue + ); + + if (st !== undefined) { + p.push({ + ...st, + unique: (groupItem.duplicate ?? 0) <= 1, + }); + } + + return p; + }, + [] + )} loading={loading} dataViewId={dataViewId} isExpandedRow @@ -180,11 +166,7 @@ export const SpikeAnalysisGroupsTable: FC = ({ query: { language: SEARCH_QUERY_LANGUAGE.KUERY, query: [ - ...groupTableItem.group.map( - ({ fieldName, fieldValue }) => - `${escapeKuery(fieldName)}:${escapeKuery(String(fieldValue))}` - ), - ...groupTableItem.repeatedValues.map( + ...groupTableItem.groupItemsSortedByUniqueness.map( ({ fieldName, fieldValue }) => `${escapeKuery(fieldName)}:${escapeKuery(String(fieldValue))}` ), @@ -240,7 +222,8 @@ export const SpikeAnalysisGroupsTable: FC = ({ 'xpack.aiops.explainLogRateSpikes.spikeAnalysisTableGroups.groupColumnTooltip', { defaultMessage: - 'Displays field/value pairs unique to the group. Expand row to see all field/value pairs.', + 'Displays up to {maxItemCount} group items sorted by uniqueness and document count. Expand row to see all field/value pairs.', + values: { maxItemCount: MAX_GROUP_BADGES }, } )} > @@ -253,13 +236,12 @@ export const SpikeAnalysisGroupsTable: FC = ({ ), - render: (_, { group, repeatedValues }) => { + render: (_, { uniqueItemsCount, groupItemsSortedByUniqueness }) => { const valuesBadges = []; - const hasExtraBadges = group.length > MAX_GROUP_BADGES; - for (const groupItem of group) { - const { fieldName, fieldValue } = groupItem; - if (valuesBadges.length === MAX_GROUP_BADGES) break; + for (const groupItem of groupItemsSortedByUniqueness) { + const { fieldName, fieldValue, duplicate } = groupItem; + if (valuesBadges.length >= MAX_GROUP_BADGES) break; valuesBadges.push( <> = ({ data-test-subj="aiopsSpikeAnalysisTableColumnGroupBadge" color="hollow" > - {`${fieldName}: `} + + {(duplicate ?? 0) <= 1 ? '* ' : ''} + {`${fieldName}: `} + {`${fieldValue}`} ); } - if (repeatedValues.length > 0 || hasExtraBadges) { + + if (groupItemsSortedByUniqueness.length > MAX_GROUP_BADGES) { valuesBadges.push( - <> - - {hasExtraBadges ? ( - <> - -
- - ) : null} - {repeatedValues.length > 0 && valuesBadges.length ? ( - - ) : null} - {repeatedValues.length > 0 && !valuesBadges.length ? ( + + + {uniqueItemsCount > MAX_GROUP_BADGES ? ( + <> + {' '} - ) : null} -
- - + + ) : null} + ); } + return valuesBadges; }, sortable: false, diff --git a/x-pack/plugins/aiops/public/components/spike_analysis_table/types.ts b/x-pack/plugins/aiops/public/components/spike_analysis_table/types.ts index 880ad3508b9b7..251888caeb0ab 100644 --- a/x-pack/plugins/aiops/public/components/spike_analysis_table/types.ts +++ b/x-pack/plugins/aiops/public/components/spike_analysis_table/types.ts @@ -5,13 +5,18 @@ * 2.0. */ -import type { SignificantTerm, FieldValuePair } from '@kbn/ml-agg-utils'; +import type { SignificantTerm, SignificantTermGroupItem } from '@kbn/ml-agg-utils'; + +export type GroupTableItemGroup = Pick< + SignificantTermGroupItem, + 'fieldName' | 'fieldValue' | 'docCount' | 'pValue' | 'duplicate' +>; export interface GroupTableItem { id: string; docCount: number; pValue: number | null; - group: FieldValuePair[]; - repeatedValues: FieldValuePair[]; + uniqueItemsCount: number; + groupItemsSortedByUniqueness: GroupTableItemGroup[]; histogram: SignificantTerm['histogram']; } diff --git a/x-pack/plugins/aiops/server/routes/explain_log_rate_spikes.ts b/x-pack/plugins/aiops/server/routes/explain_log_rate_spikes.ts index 298673827acb6..c4edc64c7ee76 100644 --- a/x-pack/plugins/aiops/server/routes/explain_log_rate_spikes.ts +++ b/x-pack/plugins/aiops/server/routes/explain_log_rate_spikes.ts @@ -41,10 +41,9 @@ import { API_ENDPOINT } from '../../common/api'; import { isRequestAbortedError } from '../lib/is_request_aborted_error'; import type { AiopsLicense } from '../types'; -import { duplicateIdentifier } from './queries/duplicate_identifier'; import { fetchSignificantTermPValues } from './queries/fetch_significant_term_p_values'; import { fetchIndexInfo } from './queries/fetch_index_info'; -import { dropDuplicates, fetchFrequentItemSets } from './queries/fetch_frequent_item_sets'; +import { fetchFrequentItemSets } from './queries/fetch_frequent_item_sets'; import { getHistogramQuery } from './queries/get_histogram_query'; import { getGroupFilter } from './queries/get_group_filter'; import { getSignificantTermGroups } from './queries/get_significant_term_groups'; @@ -423,18 +422,12 @@ export const defineExplainLogRateSpikesRoute = ( }) ); - // Deduplicated significant terms we pass to the `frequent_item_sets` aggregation. - const deduplicatedSignificantTerms = dropDuplicates( - significantTerms, - duplicateIdentifier - ); - try { const { fields, df } = await fetchFrequentItemSets( client, request.body.index, JSON.parse(request.body.searchQuery) as estypes.QueryDslQueryContainer, - deduplicatedSignificantTerms, + significantTerms, request.body.timeFieldName, request.body.deviationMin, request.body.deviationMax, diff --git a/x-pack/plugins/aiops/server/routes/queries/fetch_frequent_item_sets.test.ts b/x-pack/plugins/aiops/server/routes/queries/fetch_frequent_item_sets.test.ts new file mode 100644 index 0000000000000..142a04ed1b373 --- /dev/null +++ b/x-pack/plugins/aiops/server/routes/queries/fetch_frequent_item_sets.test.ts @@ -0,0 +1,55 @@ +/* + * 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 { significantTerms } from '../../../common/__mocks__/artificial_logs/significant_terms'; + +import { getShouldClauses, getFrequentItemSetsAggFields } from './fetch_frequent_item_sets'; + +describe('getShouldClauses', () => { + it('returns should clauses for the frequent item sets query', () => { + const shouldClauses = getShouldClauses(significantTerms); + + expect(shouldClauses).toEqual([ + { + terms: { + response_code: ['500'], + }, + }, + { + terms: { + url: ['home.php', 'login.php'], + }, + }, + { + terms: { + user: ['Peter'], + }, + }, + ]); + }); +}); + +describe('getFrequentItemSetsAggFields', () => { + it('returns field configurations for the frequent item sets aggregation', () => { + const frequentItemSetsAggFields = getFrequentItemSetsAggFields(significantTerms); + + expect(frequentItemSetsAggFields).toEqual([ + { + field: 'response_code', + include: ['500'], + }, + { + field: 'url', + include: ['home.php', 'login.php'], + }, + { + field: 'user', + include: ['Peter'], + }, + ]); + }); +}); diff --git a/x-pack/plugins/aiops/server/routes/queries/fetch_frequent_item_sets.ts b/x-pack/plugins/aiops/server/routes/queries/fetch_frequent_item_sets.ts index dc0b37aee9ea3..3b77be2c215f0 100644 --- a/x-pack/plugins/aiops/server/routes/queries/fetch_frequent_item_sets.ts +++ b/x-pack/plugins/aiops/server/routes/queries/fetch_frequent_item_sets.ts @@ -5,7 +5,8 @@ * 2.0. */ -import { uniq, uniqWith, pick, isEqual } from 'lodash'; +import { uniq, pick, isEqual } from 'lodash'; +import { group } from 'd3-array'; import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; @@ -16,8 +17,6 @@ import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import type { SignificantTermDuplicateGroup, ItemsetResult } from '../../../common/types'; -const FREQUENT_ITEM_SETS_FIELDS_LIMIT = 15; - interface FrequentItemSetsAggregation extends estypes.AggregationsSamplerAggregation { fi: { buckets: Array<{ key: Record; doc_count: number; support: number }>; @@ -32,10 +31,6 @@ function isRandomSamplerAggregation(arg: unknown): arg is RandomSamplerAggregati return isPopulatedObject(arg, ['sample']); } -export function dropDuplicates(cps: SignificantTerm[], uniqueFields: Array) { - return uniqWith(cps, (a, b) => isEqual(pick(a, uniqueFields), pick(b, uniqueFields))); -} - export function groupDuplicates( cps: SignificantTerm[], uniqueFields: Array @@ -59,6 +54,20 @@ export function groupDuplicates( return groups; } +export function getShouldClauses(significantTerms: SignificantTerm[]) { + return Array.from( + group(significantTerms, ({ fieldName }) => fieldName), + ([field, values]) => ({ terms: { [field]: values.map((d) => d.fieldValue) } }) + ); +} + +export function getFrequentItemSetsAggFields(significantTerms: SignificantTerm[]) { + return Array.from( + group(significantTerms, ({ fieldName }) => fieldName), + ([field, values]) => ({ field, include: values.map((d) => d.fieldValue) }) + ); +} + export async function fetchFrequentItemSets( client: ElasticsearchClient, index: string, @@ -78,14 +87,6 @@ export async function fetchFrequentItemSets( return (a.pValue ?? 0) - (b.pValue ?? 0); }); - // Get up to 15 unique fields from significant terms with retained order - const fields = sortedSignificantTerms.reduce((p, c) => { - if (p.length < FREQUENT_ITEM_SETS_FIELDS_LIMIT && !p.some((d) => d === c.fieldName)) { - p.push(c.fieldName); - } - return p; - }, []); - const query = { bool: { minimum_should_match: 2, @@ -100,24 +101,18 @@ export async function fetchFrequentItemSets( }, }, ], - should: sortedSignificantTerms.map((t) => { - return { term: { [t.fieldName]: t.fieldValue } }; - }), + should: getShouldClauses(sortedSignificantTerms), }, }; - const aggFields = fields.map((field) => ({ - field, - })); - const frequentItemSetsAgg: Record = { fi: { // @ts-expect-error `frequent_item_sets` is not yet part of `AggregationsAggregationContainer` frequent_item_sets: { minimum_set_size: 2, size: 200, - minimum_support: 0.1, - fields: aggFields, + minimum_support: 0.001, + fields: getFrequentItemSetsAggFields(sortedSignificantTerms), }, }, }; diff --git a/x-pack/plugins/aiops/server/routes/queries/get_field_value_pair_counts.test.ts b/x-pack/plugins/aiops/server/routes/queries/get_field_value_pair_counts.test.ts index 1fc58314b5a2f..8ad6142e70c0a 100644 --- a/x-pack/plugins/aiops/server/routes/queries/get_field_value_pair_counts.test.ts +++ b/x-pack/plugins/aiops/server/routes/queries/get_field_value_pair_counts.test.ts @@ -43,7 +43,10 @@ describe('getFieldValuePairCounts', () => { '500': 1, }, url: { - 'home.php': 1, + 'home.php': 2, + }, + user: { + Peter: 1, }, }); }); diff --git a/x-pack/plugins/aiops/server/routes/queries/get_filtered_frequent_item_sets.test.ts b/x-pack/plugins/aiops/server/routes/queries/get_filtered_frequent_item_sets.test.ts deleted file mode 100644 index e51f91dc1d3d1..0000000000000 --- a/x-pack/plugins/aiops/server/routes/queries/get_filtered_frequent_item_sets.test.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { significantTerms } from '../../../common/__mocks__/artificial_logs/significant_terms'; -import { frequentItemSets } from '../../../common/__mocks__/artificial_logs/frequent_item_sets'; -import { filteredFrequentItemSets } from '../../../common/__mocks__/artificial_logs/filtered_frequent_item_sets'; - -import { getFilteredFrequentItemSets } from './get_filtered_frequent_item_sets'; - -describe('getFilteredFrequentItemSets', () => { - it('filter frequent item set based on provided significant terms', () => { - expect(getFilteredFrequentItemSets(frequentItemSets, significantTerms)).toStrictEqual( - filteredFrequentItemSets - ); - }); -}); diff --git a/x-pack/plugins/aiops/server/routes/queries/get_filtered_frequent_item_sets.ts b/x-pack/plugins/aiops/server/routes/queries/get_filtered_frequent_item_sets.ts deleted file mode 100644 index bd987e0e3c960..0000000000000 --- a/x-pack/plugins/aiops/server/routes/queries/get_filtered_frequent_item_sets.ts +++ /dev/null @@ -1,47 +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 { isEqual } from 'lodash'; - -import type { SignificantTerm } from '@kbn/ml-agg-utils'; - -import type { ItemsetResult } from '../../../common/types'; - -// The way the `frequent_item_sets` aggregation works could return item sets that include -// field/value pairs that are not part of the original list of significant terms. -// This cleans up groups and removes those unrelated field/value pairs. -export function getFilteredFrequentItemSets( - itemsets: ItemsetResult[], - significantTerms: SignificantTerm[] -): ItemsetResult[] { - return itemsets.reduce((p, itemset, itemsetIndex) => { - // Remove field/value pairs not part of the provided significant terms - itemset.set = Object.entries(itemset.set).reduce( - (set, [field, value]) => { - if (significantTerms.some((cp) => cp.fieldName === field && cp.fieldValue === value)) { - set[field] = value; - } - return set; - }, - {} - ); - - // Only assign the updated reduced set if it doesn't already match - // an existing set. if there's a match just add an empty set - // so it will be filtered in the last step. - if (itemsets.some((d, dIndex) => itemsetIndex !== dIndex && isEqual(itemset.set, d.set))) { - return p; - } - - // Update the size attribute to match the possibly updated set - itemset.size = Object.keys(itemset.set).length; - - p.push(itemset); - - return p; - }, []); -} diff --git a/x-pack/plugins/aiops/server/routes/queries/get_group_filter.test.ts b/x-pack/plugins/aiops/server/routes/queries/get_group_filter.test.ts index 3da9c5f43a0f3..c27916a67eb63 100644 --- a/x-pack/plugins/aiops/server/routes/queries/get_group_filter.test.ts +++ b/x-pack/plugins/aiops/server/routes/queries/get_group_filter.test.ts @@ -10,23 +10,13 @@ import { finalSignificantTermGroups } from '../../../common/__mocks__/artificial import { getGroupFilter } from './get_group_filter'; describe('getGroupFilter', () => { - it('gets a query filter for the significant terms of a group with multiple values per field', () => { + it('gets a query filter for the significant terms of a group', () => { expect(getGroupFilter(finalSignificantTermGroups[0])).toStrictEqual([ { term: { - response_code: '500', + url: 'login.php', }, }, - { - terms: { - url: ['home.php', 'login.php'], - }, - }, - ]); - }); - - it('gets a query filter for the significant terms of a group with just a single field/value', () => { - expect(getGroupFilter(finalSignificantTermGroups[1])).toStrictEqual([ { term: { user: 'Peter', diff --git a/x-pack/plugins/aiops/server/routes/queries/get_groups_with_readded_duplicates.test.ts b/x-pack/plugins/aiops/server/routes/queries/get_groups_with_readded_duplicates.test.ts index 4c5e75f1ff0c1..2842b05d80621 100644 --- a/x-pack/plugins/aiops/server/routes/queries/get_groups_with_readded_duplicates.test.ts +++ b/x-pack/plugins/aiops/server/routes/queries/get_groups_with_readded_duplicates.test.ts @@ -32,19 +32,18 @@ describe('getGroupsWithReaddedDuplicates', () => { docCount: 792, group: [ { - duplicate: false, fieldName: 'response_code', fieldValue: '500', + duplicate: 1, + docCount: 1819, + pValue: 2.9589053032077285e-12, }, { - duplicate: false, fieldName: 'url', fieldValue: 'home.php', - }, - { - duplicate: false, - fieldName: 'url', - fieldValue: 'login.php', + duplicate: 1, + docCount: 1744, + pValue: 0.010770456205312423, }, ], id: '2038579476', diff --git a/x-pack/plugins/aiops/server/routes/queries/get_groups_with_readded_duplicates.ts b/x-pack/plugins/aiops/server/routes/queries/get_groups_with_readded_duplicates.ts index c2e1c9ec1c5da..fbc9909e2194e 100644 --- a/x-pack/plugins/aiops/server/routes/queries/get_groups_with_readded_duplicates.ts +++ b/x-pack/plugins/aiops/server/routes/queries/get_groups_with_readded_duplicates.ts @@ -32,6 +32,8 @@ export function getGroupsWithReaddedDuplicates( return { fieldName: d.fieldName, fieldValue: d.fieldValue, + pValue: d.pValue, + docCount: d.doc_count, duplicate, }; }) diff --git a/x-pack/plugins/aiops/server/routes/queries/get_marked_duplicates.test.ts b/x-pack/plugins/aiops/server/routes/queries/get_marked_duplicates.test.ts index 91be036fa21bd..d3ea95b5e1263 100644 --- a/x-pack/plugins/aiops/server/routes/queries/get_marked_duplicates.test.ts +++ b/x-pack/plugins/aiops/server/routes/queries/get_marked_duplicates.test.ts @@ -26,12 +26,16 @@ describe('markDuplicates', () => { { fieldName: 'custom_field.keyword', fieldValue: 'deviation', - duplicate: true, + docCount: 101, + duplicate: 2, + pValue: 0.01, }, { fieldName: 'airline', fieldValue: 'UAL', - duplicate: false, + docCount: 101, + duplicate: 1, + pValue: 0.01, }, ], docCount: 101, @@ -43,12 +47,16 @@ describe('markDuplicates', () => { { fieldName: 'custom_field.keyword', fieldValue: 'deviation', - duplicate: true, + docCount: 49, + duplicate: 2, + pValue: 0.001, }, { fieldName: 'airline', fieldValue: 'AAL', - duplicate: false, + docCount: 49, + duplicate: 1, + pValue: 0.001, }, ], docCount: 49, @@ -70,20 +78,45 @@ describe('markDuplicates', () => { expect(markedDuplicates).toEqual([ { - docCount: 792, + id: '40215074', group: [ { - duplicate: false, fieldName: 'response_code', fieldValue: '500', + docCount: 792, + duplicate: 1, + pValue: 0.010770456205312423, }, { - duplicate: false, fieldName: 'url', fieldValue: 'home.php', + docCount: 792, + duplicate: 2, + pValue: 0.010770456205312423, + }, + ], + docCount: 792, + pValue: 0.010770456205312423, + }, + { + id: '47022118', + group: [ + { + fieldName: 'url', + fieldValue: 'home.php', + docCount: 792, + duplicate: 2, + pValue: 0.010770456205312423, + }, + { + fieldName: 'user', + fieldValue: 'Peter', + docCount: 634, + duplicate: 1, + pValue: 0.010770456205312423, }, ], - id: '2038579476', + docCount: 634, pValue: 0.010770456205312423, }, ]); diff --git a/x-pack/plugins/aiops/server/routes/queries/get_marked_duplicates.ts b/x-pack/plugins/aiops/server/routes/queries/get_marked_duplicates.ts index 374c6c8085d19..202aa4f016326 100644 --- a/x-pack/plugins/aiops/server/routes/queries/get_marked_duplicates.ts +++ b/x-pack/plugins/aiops/server/routes/queries/get_marked_duplicates.ts @@ -22,7 +22,7 @@ export function getMarkedDuplicates( group: cpg.group.map((g) => { return { ...g, - duplicate: fieldValuePairCounts[g.fieldName][g.fieldValue] > 1, + duplicate: fieldValuePairCounts[g.fieldName][g.fieldValue], }; }), }; diff --git a/x-pack/plugins/aiops/server/routes/queries/get_missing_significant_terms.test.ts b/x-pack/plugins/aiops/server/routes/queries/get_missing_significant_terms.test.ts index 55a220f9d6d17..a41f92511e361 100644 --- a/x-pack/plugins/aiops/server/routes/queries/get_missing_significant_terms.test.ts +++ b/x-pack/plugins/aiops/server/routes/queries/get_missing_significant_terms.test.ts @@ -10,15 +10,13 @@ import { significantTerms } from '../../../common/__mocks__/artificial_logs/sign import { duplicateIdentifier } from './duplicate_identifier'; import { getGroupsWithReaddedDuplicates } from './get_groups_with_readded_duplicates'; -import { dropDuplicates, groupDuplicates } from './fetch_frequent_item_sets'; +import { groupDuplicates } from './fetch_frequent_item_sets'; import { getFieldValuePairCounts } from './get_field_value_pair_counts'; import { getMarkedDuplicates } from './get_marked_duplicates'; import { getMissingSignificantTerms } from './get_missing_significant_terms'; describe('getMissingSignificantTerms', () => { it('get missing significant terms', () => { - const deduplicatedSignificantTerms = dropDuplicates(significantTerms, duplicateIdentifier); - const groupedSignificantTerms = groupDuplicates(significantTerms, duplicateIdentifier).filter( (g) => g.group.length > 1 ); @@ -31,11 +29,22 @@ describe('getMissingSignificantTerms', () => { ); const missingSignificantTerms = getMissingSignificantTerms( - deduplicatedSignificantTerms, + significantTerms, groupsWithReaddedDuplicates ); expect(missingSignificantTerms).toEqual([ + { + bg_count: 632, + doc_count: 1738, + fieldName: 'url', + fieldValue: 'login.php', + normalizedScore: 0.10333028878375965, + pValue: 0.010770456205312423, + score: 4.53094842981472, + total_bg_count: 1975, + total_doc_count: 4671, + }, { bg_count: 553, doc_count: 1981, diff --git a/x-pack/plugins/aiops/server/routes/queries/get_missing_significant_terms.ts b/x-pack/plugins/aiops/server/routes/queries/get_missing_significant_terms.ts index c29d6e6614bb9..7daa797f16a37 100644 --- a/x-pack/plugins/aiops/server/routes/queries/get_missing_significant_terms.ts +++ b/x-pack/plugins/aiops/server/routes/queries/get_missing_significant_terms.ts @@ -8,10 +8,10 @@ import type { SignificantTerm, SignificantTermGroup } from '@kbn/ml-agg-utils'; export function getMissingSignificantTerms( - deduplicatedSignificantTerms: SignificantTerm[], + significantTerms: SignificantTerm[], significantTermGroups: SignificantTermGroup[] ) { - return deduplicatedSignificantTerms.filter((cp) => { + return significantTerms.filter((cp) => { return !significantTermGroups.some((cpg) => { return cpg.group.some((d) => d.fieldName === cp.fieldName && d.fieldValue === cp.fieldValue); }); diff --git a/x-pack/plugins/aiops/server/routes/queries/get_significant_term_groups.test.ts b/x-pack/plugins/aiops/server/routes/queries/get_significant_term_groups.test.ts index e3ae80a435931..f15be7b8ed61b 100644 --- a/x-pack/plugins/aiops/server/routes/queries/get_significant_term_groups.test.ts +++ b/x-pack/plugins/aiops/server/routes/queries/get_significant_term_groups.test.ts @@ -5,6 +5,8 @@ * 2.0. */ +import { orderBy } from 'lodash'; + import { fields } from '../../../common/__mocks__/artificial_logs/fields'; import { frequentItemSets } from '../../../common/__mocks__/artificial_logs/frequent_item_sets'; import { significantTerms } from '../../../common/__mocks__/artificial_logs/significant_terms'; @@ -20,6 +22,8 @@ describe('getSignificantTermGroups', () => { fields ); - expect(significantTermGroups).toEqual(finalSignificantTermGroups); + expect(orderBy(significantTermGroups, ['docCount'])).toEqual( + orderBy(finalSignificantTermGroups, ['docCount']) + ); }); }); diff --git a/x-pack/plugins/aiops/server/routes/queries/get_significant_term_groups.ts b/x-pack/plugins/aiops/server/routes/queries/get_significant_term_groups.ts index f7fcde07a5cfd..796463c554779 100644 --- a/x-pack/plugins/aiops/server/routes/queries/get_significant_term_groups.ts +++ b/x-pack/plugins/aiops/server/routes/queries/get_significant_term_groups.ts @@ -8,13 +8,11 @@ import type { SignificantTerm, SignificantTermGroup } from '@kbn/ml-agg-utils'; import { duplicateIdentifier } from './duplicate_identifier'; -import { dropDuplicates, groupDuplicates } from './fetch_frequent_item_sets'; +import { groupDuplicates } from './fetch_frequent_item_sets'; import { getFieldValuePairCounts } from './get_field_value_pair_counts'; import { getMarkedDuplicates } from './get_marked_duplicates'; import { getSimpleHierarchicalTree } from './get_simple_hierarchical_tree'; import { getSimpleHierarchicalTreeLeaves } from './get_simple_hierarchical_tree_leaves'; -import { getFilteredFrequentItemSets } from './get_filtered_frequent_item_sets'; -import { getGroupsWithReaddedDuplicates } from './get_groups_with_readded_duplicates'; import { getMissingSignificantTerms } from './get_missing_significant_terms'; import { transformSignificantTermToGroup } from './transform_significant_term_to_group'; import type { ItemsetResult } from '../../../common/types'; @@ -24,46 +22,33 @@ export function getSignificantTermGroups( significantTerms: SignificantTerm[], fields: string[] ): SignificantTermGroup[] { - // These are the deduplicated significant terms we pass to the `frequent_item_sets` aggregation. - const deduplicatedSignificantTerms = dropDuplicates(significantTerms, duplicateIdentifier); - // We use the grouped significant terms to later repopulate // the `frequent_item_sets` result with the missing duplicates. const groupedSignificantTerms = groupDuplicates(significantTerms, duplicateIdentifier).filter( (g) => g.group.length > 1 ); - const filteredDf = getFilteredFrequentItemSets(itemsets, significantTerms); - // `frequent_item_sets` returns lot of different small groups of field/value pairs that co-occur. // The following steps analyse these small groups, identify overlap between these groups, // and then summarize them in larger groups where possible. // Get a tree structure based on `frequent_item_sets`. - const { root } = getSimpleHierarchicalTree(filteredDf, true, false, fields); + const { root } = getSimpleHierarchicalTree(itemsets, false, false, fields); // Each leave of the tree will be a summarized group of co-occuring field/value pairs. const treeLeaves = getSimpleHierarchicalTreeLeaves(root, []); // To be able to display a more cleaned up results table in the UI, we identify field/value pairs // that occur in multiple groups. This will allow us to highlight field/value pairs that are - // unique to a group in a better way. This step will also re-add duplicates we identified in the - // beginning and didn't pass on to the `frequent_item_sets` agg. + // unique to a group in a better way. const fieldValuePairCounts = getFieldValuePairCounts(treeLeaves); - const significantTermGroupsWithMarkedDuplicates = getMarkedDuplicates( - treeLeaves, - fieldValuePairCounts - ); - const significantTermGroups = getGroupsWithReaddedDuplicates( - significantTermGroupsWithMarkedDuplicates, - groupedSignificantTerms - ); + const significantTermGroups = getMarkedDuplicates(treeLeaves, fieldValuePairCounts); // Some field/value pairs might not be part of the `frequent_item_sets` result set, for example // because they don't co-occur with other field/value pairs or because of the limits we set on the query. // In this next part we identify those missing pairs and add them as individual groups. const missingSignificantTerms = getMissingSignificantTerms( - deduplicatedSignificantTerms, + significantTerms, significantTermGroups ); diff --git a/x-pack/plugins/aiops/server/routes/queries/get_simple_hierarchical_tree.test.ts b/x-pack/plugins/aiops/server/routes/queries/get_simple_hierarchical_tree.test.ts index e7f40a795bc16..8023e95b880b3 100644 --- a/x-pack/plugins/aiops/server/routes/queries/get_simple_hierarchical_tree.test.ts +++ b/x-pack/plugins/aiops/server/routes/queries/get_simple_hierarchical_tree.test.ts @@ -28,8 +28,18 @@ describe('getSimpleHierarchicalTree', () => { { name: "792/1505 500 home.php '*'", set: [ - { fieldName: 'response_code', fieldValue: '500' }, - { fieldName: 'url', fieldValue: 'home.php' }, + { + fieldName: 'response_code', + fieldValue: '500', + docCount: 792, + pValue: 0.010770456205312423, + }, + { + fieldName: 'url', + fieldValue: 'home.php', + docCount: 792, + pValue: 0.010770456205312423, + }, ], docCount: 792, pValue: 0.010770456205312423, @@ -37,8 +47,18 @@ describe('getSimpleHierarchicalTree', () => { { name: "792/1505 500 home.php '*'", set: [ - { fieldName: 'response_code', fieldValue: '500' }, - { fieldName: 'url', fieldValue: 'home.php' }, + { + fieldName: 'response_code', + fieldValue: '500', + docCount: 792, + pValue: 0.010770456205312423, + }, + { + fieldName: 'url', + fieldValue: 'home.php', + docCount: 792, + pValue: 0.010770456205312423, + }, ], docCount: 792, pValue: 0.010770456205312423, @@ -46,6 +66,55 @@ describe('getSimpleHierarchicalTree', () => { }, ], }, + { + children: [ + { + children: [], + docCount: 634, + name: '634/1505 home.php Peter', + pValue: 0.010770456205312423, + set: [ + { + docCount: 792, + fieldName: 'url', + fieldValue: 'home.php', + pValue: 0.010770456205312423, + }, + { + docCount: 634, + fieldName: 'user', + fieldValue: 'Peter', + pValue: 0.010770456205312423, + }, + ], + }, + ], + docCount: 792, + name: '792/1505 home.php', + pValue: 0.010770456205312423, + set: [ + { + docCount: 792, + fieldName: 'url', + fieldValue: 'home.php', + pValue: 0.010770456205312423, + }, + ], + }, + { + children: [], + docCount: 634, + name: '634/1505 Peter', + pValue: 0.010770456205312423, + set: [ + { + docCount: 634, + fieldName: 'user', + fieldValue: 'Peter', + pValue: 0.010770456205312423, + }, + ], + }, ], }, fields: ['response_code', 'url', 'user'], diff --git a/x-pack/plugins/aiops/server/routes/queries/get_simple_hierarchical_tree.ts b/x-pack/plugins/aiops/server/routes/queries/get_simple_hierarchical_tree.ts index 41c014e27af44..fb5ded672d284 100644 --- a/x-pack/plugins/aiops/server/routes/queries/get_simple_hierarchical_tree.ts +++ b/x-pack/plugins/aiops/server/routes/queries/get_simple_hierarchical_tree.ts @@ -76,14 +76,14 @@ function dfDepthFirstSearch( if (parentDocCount === docCount && collapseRedundant) { // collapse identical paths displayParent.name += ` ${value}`; - displayParent.set.push({ fieldName: field, fieldValue: value }); + displayParent.set.push({ fieldName: field, fieldValue: value, docCount, pValue }); displayParent.docCount = docCount; displayParent.pValue = pValue; displayNode = displayParent; } else { displayNode = NewNodeFactory(`${docCount}/${totalDocCount}${label}`); displayNode.set = [...displayParent.set]; - displayNode.set.push({ fieldName: field, fieldValue: value }); + displayNode.set.push({ fieldName: field, fieldValue: value, docCount, pValue }); displayNode.docCount = docCount; displayNode.pValue = pValue; displayParent.addNode(displayNode); @@ -144,7 +144,7 @@ function dfDepthFirstSearch( } /** - * Create simple tree consisting or non-overlapping sets of data. + * Create simple tree consisting of non-overlapping sets of data. * * By default (fields==None), the field search order is dependent on the highest count itemsets. */ @@ -154,24 +154,24 @@ export function getSimpleHierarchicalTree( displayOther: boolean, fields: string[] = [] ) { - const field = fields[0]; - const totalDocCount = Math.max(...df.map((d) => d.total_doc_count)); const newRoot = NewNodeFactory(''); - for (const value of getValuesDescending(df, field)) { - dfDepthFirstSearch( - fields, - newRoot, - totalDocCount + 1, - '', - field, - value, - df, - collapseRedundant, - displayOther - ); + for (const field of fields) { + for (const value of getValuesDescending(df, field)) { + dfDepthFirstSearch( + fields, + newRoot, + totalDocCount + 1, + '', + field, + value, + df, + collapseRedundant, + displayOther + ); + } } return { root: newRoot, fields }; diff --git a/x-pack/plugins/aiops/server/routes/queries/get_simple_hierarchical_tree_leaves.test.ts b/x-pack/plugins/aiops/server/routes/queries/get_simple_hierarchical_tree_leaves.test.ts index 89d345bf1d82d..fd3d40285bc6e 100644 --- a/x-pack/plugins/aiops/server/routes/queries/get_simple_hierarchical_tree_leaves.test.ts +++ b/x-pack/plugins/aiops/server/routes/queries/get_simple_hierarchical_tree_leaves.test.ts @@ -22,14 +22,38 @@ describe('getSimpleHierarchicalTreeLeaves', () => { const leaves = getSimpleHierarchicalTreeLeaves(simpleHierarchicalTree.root, []); expect(leaves).toEqual([ { - id: '2038579476', + id: '40215074', group: [ - { fieldName: 'response_code', fieldValue: '500' }, - { fieldName: 'url', fieldValue: 'home.php' }, + { + fieldName: 'response_code', + fieldValue: '500', + docCount: 792, + pValue: 0.010770456205312423, + }, + { fieldName: 'url', fieldValue: 'home.php', docCount: 792, pValue: 0.010770456205312423 }, ], docCount: 792, pValue: 0.010770456205312423, }, + { + id: '47022118', + group: [ + { + docCount: 792, + fieldName: 'url', + fieldValue: 'home.php', + pValue: 0.010770456205312423, + }, + { + docCount: 634, + fieldName: 'user', + fieldValue: 'Peter', + pValue: 0.010770456205312423, + }, + ], + docCount: 634, + pValue: 0.010770456205312423, + }, ]); }); }); diff --git a/x-pack/plugins/aiops/server/routes/queries/get_simple_hierarchical_tree_leaves.ts b/x-pack/plugins/aiops/server/routes/queries/get_simple_hierarchical_tree_leaves.ts index 27054ccec839e..f51d88c6ac3a5 100644 --- a/x-pack/plugins/aiops/server/routes/queries/get_simple_hierarchical_tree_leaves.ts +++ b/x-pack/plugins/aiops/server/routes/queries/get_simple_hierarchical_tree_leaves.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { orderBy } from 'lodash'; import type { SignificantTermGroup } from '@kbn/ml-agg-utils'; import { stringHash } from '@kbn/ml-string-hash'; @@ -38,5 +39,23 @@ export function getSimpleHierarchicalTreeLeaves( return []; } - return leaves; + // Sort by length of group items to make sure in the `reduce` afterwards to add larger groups first. + const sortedLeaves = orderBy(leaves, [(d) => d.group.length], ['desc']); + + // Checks if a group is a subset of items already present in a larger group. + const filteredLeaves = sortedLeaves.reduce((p, c) => { + const isSubset = p.some((pG) => + c.group.every((cGI) => + pG.group.some((pGI) => pGI.fieldName === cGI.fieldName && pGI.fieldValue === cGI.fieldValue) + ) + ); + + if (!isSubset) { + p.push(c); + } + + return p; + }, []); + + return filteredLeaves; } diff --git a/x-pack/plugins/aiops/server/routes/queries/get_value_counts.test.ts b/x-pack/plugins/aiops/server/routes/queries/get_value_counts.test.ts index 89d7880b5250b..515031c0e2af0 100644 --- a/x-pack/plugins/aiops/server/routes/queries/get_value_counts.test.ts +++ b/x-pack/plugins/aiops/server/routes/queries/get_value_counts.test.ts @@ -11,20 +11,16 @@ import { getValueCounts } from './get_value_counts'; describe('getValueCounts', () => { it('get value counts for field response_code', () => { expect(getValueCounts(frequentItemSets, 'response_code')).toEqual({ - '200': 1, - '404': 1, '500': 3, }); }); it('get value counts for field url', () => { - expect(getValueCounts(frequentItemSets, 'url')).toEqual({ 'home.php': 6 }); + expect(getValueCounts(frequentItemSets, 'url')).toEqual({ 'home.php': 2, 'login.php': 2 }); }); it('get value counts for field user', () => { expect(getValueCounts(frequentItemSets, 'user')).toEqual({ - Mary: 1, - Paul: 1, Peter: 3, }); }); diff --git a/x-pack/plugins/aiops/server/routes/queries/get_values_descending.test.ts b/x-pack/plugins/aiops/server/routes/queries/get_values_descending.test.ts index e3519995fc916..d8beffed5c8ce 100644 --- a/x-pack/plugins/aiops/server/routes/queries/get_values_descending.test.ts +++ b/x-pack/plugins/aiops/server/routes/queries/get_values_descending.test.ts @@ -10,14 +10,14 @@ import { getValuesDescending } from './get_values_descending'; describe('getValuesDescending', () => { it('get descending values for field response_code', () => { - expect(getValuesDescending(frequentItemSets, 'response_code')).toEqual(['500', '200', '404']); + expect(getValuesDescending(frequentItemSets, 'response_code')).toEqual(['500']); }); it('get descending values for field url', () => { - expect(getValuesDescending(frequentItemSets, 'url')).toEqual(['home.php']); + expect(getValuesDescending(frequentItemSets, 'url')).toEqual(['home.php', 'login.php']); }); it('get descending values for field user', () => { - expect(getValuesDescending(frequentItemSets, 'user')).toEqual(['Peter', 'Mary', 'Paul']); + expect(getValuesDescending(frequentItemSets, 'user')).toEqual(['Peter']); }); }); diff --git a/x-pack/plugins/aiops/server/routes/queries/transform_significant_term_to_group.test.ts b/x-pack/plugins/aiops/server/routes/queries/transform_significant_term_to_group.test.ts index 4d52930b73c77..f3b691f8c4bfb 100644 --- a/x-pack/plugins/aiops/server/routes/queries/transform_significant_term_to_group.test.ts +++ b/x-pack/plugins/aiops/server/routes/queries/transform_significant_term_to_group.test.ts @@ -10,7 +10,7 @@ import { significantTerms } from '../../../common/__mocks__/artificial_logs/sign import { duplicateIdentifier } from './duplicate_identifier'; import { getGroupsWithReaddedDuplicates } from './get_groups_with_readded_duplicates'; -import { dropDuplicates, groupDuplicates } from './fetch_frequent_item_sets'; +import { groupDuplicates } from './fetch_frequent_item_sets'; import { getFieldValuePairCounts } from './get_field_value_pair_counts'; import { getMarkedDuplicates } from './get_marked_duplicates'; import { getMissingSignificantTerms } from './get_missing_significant_terms'; @@ -18,8 +18,6 @@ import { transformSignificantTermToGroup } from './transform_significant_term_to describe('getMissingSignificantTerms', () => { it('get missing significant terms', () => { - const deduplicatedSignificantTerms = dropDuplicates(significantTerms, duplicateIdentifier); - const groupedSignificantTerms = groupDuplicates(significantTerms, duplicateIdentifier).filter( (g) => g.group.length > 1 ); @@ -32,7 +30,7 @@ describe('getMissingSignificantTerms', () => { ); const missingSignificantTerms = getMissingSignificantTerms( - deduplicatedSignificantTerms, + significantTerms, groupsWithReaddedDuplicates ); @@ -42,10 +40,18 @@ describe('getMissingSignificantTerms', () => { ); expect(transformed).toEqual({ - docCount: 1981, - group: [{ duplicate: false, fieldName: 'user', fieldValue: 'Peter' }], - id: '817080373', - pValue: 2.7454255728359757e-21, + docCount: 1738, + group: [ + { + duplicate: 1, + fieldName: 'url', + fieldValue: 'login.php', + docCount: 1738, + pValue: 0.010770456205312423, + }, + ], + id: '368426784', + pValue: 0.010770456205312423, }); }); }); diff --git a/x-pack/plugins/aiops/server/routes/queries/transform_significant_term_to_group.ts b/x-pack/plugins/aiops/server/routes/queries/transform_significant_term_to_group.ts index 03de8130b7a33..1ecf8d6d8422d 100644 --- a/x-pack/plugins/aiops/server/routes/queries/transform_significant_term_to_group.ts +++ b/x-pack/plugins/aiops/server/routes/queries/transform_significant_term_to_group.ts @@ -33,7 +33,9 @@ export function transformSignificantTermToGroup( group: duplicates.group.map((d) => ({ fieldName: d.fieldName, fieldValue: d.fieldValue, - duplicate: false, + duplicate: 1, + docCount, + pValue, })), docCount, pValue, @@ -45,7 +47,9 @@ export function transformSignificantTermToGroup( { fieldName, fieldValue, - duplicate: false, + duplicate: 1, + docCount, + pValue, }, ], docCount, diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index 902dd7d88765a..2a8f8904f02e4 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -6997,9 +6997,6 @@ "xpack.aiops.changePointDetection.cardinalityWarningMessage": "La cardinalité du champ \"{splitField}\" est {cardinality}, ce qui dépasse la limite de {cardinalityLimit}. Seules les {cardinalityLimit} premières partitions, triées par nombre de documents, sont analysées.", "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.explainLogRateSpikes.spikeAnalysisTableGroups.moreLabel": "+{count, plural, one {# autre paire champ/valeur} other {# autres paires champ/valeur}}", - "xpack.aiops.explainLogRateSpikes.spikeAnalysisTableGroups.moreRepeatedLabel": "+{count, plural, one {# autre paire champ/valeur} other {# autres paires champ/valeur}} s'affichant également dans d'autres groupes", - "xpack.aiops.explainLogRateSpikes.spikeAnalysisTableGroups.onlyMoreRepeatedLabel": "{count, plural, one {# paire champ/valeur} other {# paires champ/valeur}} s'affichant également dans d'autres groupes", "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.", "xpack.aiops.index.dataViewNotBasedOnTimeSeriesNotificationTitle": "La vue de données \"{dataViewTitle}\" n'est pas basée sur une série temporelle.", "xpack.aiops.index.dataViewWithoutMetricNotificationTitle": "La vue de données \"{dataViewTitle}\" ne contient aucun champ d'indicateurs.", @@ -7052,7 +7049,6 @@ "xpack.aiops.explainLogRateSpikes.spikeAnalysisTable.pValueColumnTooltip": "L'importance de changements dans la fréquence des valeurs ; des valeurs plus faibles indiquent un changement plus important.", "xpack.aiops.explainLogRateSpikes.spikeAnalysisTable.pValueLabel": "valeur-p", "xpack.aiops.explainLogRateSpikes.spikeAnalysisTable.uniqueColumnTooltip": "Cette paire champ/valeur apparaît uniquement dans ce groupe", - "xpack.aiops.explainLogRateSpikes.spikeAnalysisTableGroups.groupColumnTooltip": "Affiche les paires champ/valeur uniques au groupe. Développez la ligne pour voir toutes les paires champ/valeur.", "xpack.aiops.explainLogRateSpikes.spikeAnalysisTableGroups.groupLabel": "Regrouper", "xpack.aiops.explainLogRateSpikes.spikeAnalysisTableGroups.impactLabelColumnTooltip": "Niveau d'impact du groupe sur la différence de taux de messages", "xpack.aiops.explainLogRateSpikes.spikeAnalysisTableGroups.logRateColumnTooltip": "Représentation visuelle de l'impact du groupe sur la différence de taux de messages", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index e91efa4a1c273..6896596f55168 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -6998,9 +6998,6 @@ "xpack.aiops.changePointDetection.cardinalityWarningMessage": "\"{splitField}\"フィールドカーディナリティは{cardinality}であり、{cardinalityLimit}の制限を超えています。ドキュメントカウント別で並べ替えられた最初の{cardinalityLimit}個のパーティションのみが分析されます。", "xpack.aiops.explainLogRateSpikes.loadingState.identifiedFieldCandidates": "{fieldCandidatesCount, plural, other {#個のフィールド候補}}が特定されました。", "xpack.aiops.explainLogRateSpikes.loadingState.identifiedFieldValuePairs": "{fieldValuePairsCount, plural, other {#個の重要なフィールドと値のペア}}が特定されました。", - "xpack.aiops.explainLogRateSpikes.spikeAnalysisTableGroups.moreLabel": "+{count, plural, other {#個のその他のフィールドと値のペア}}", - "xpack.aiops.explainLogRateSpikes.spikeAnalysisTableGroups.moreRepeatedLabel": "+他のグループにも出現する{count, plural, other {#個のその他のフィールドと値のペア}}", - "xpack.aiops.explainLogRateSpikes.spikeAnalysisTableGroups.onlyMoreRepeatedLabel": "他のグループにも出現する{count, plural, other {#個のフィールドと値のペア}}", "xpack.aiops.index.dataLoader.internalServerErrorMessage": "インデックス{index}のデータの読み込み中にエラーが発生。{message}。リクエストがタイムアウトした可能性があります。小さなサンプルサイズを使うか、時間範囲を狭めてみてください。", "xpack.aiops.index.dataViewNotBasedOnTimeSeriesNotificationTitle": "データビュー\"{dataViewTitle}\"は時系列に基づいていません。", "xpack.aiops.index.dataViewWithoutMetricNotificationTitle": "データビュー\"{dataViewTitle}\"にはメトリックフィールドが含まれていません。", @@ -7053,7 +7050,6 @@ "xpack.aiops.explainLogRateSpikes.spikeAnalysisTable.pValueColumnTooltip": "値の頻度の変化の有意性。値が小さいほど、変化が大きいことを示します。", "xpack.aiops.explainLogRateSpikes.spikeAnalysisTable.pValueLabel": "p値", "xpack.aiops.explainLogRateSpikes.spikeAnalysisTable.uniqueColumnTooltip": "このフィールド/値の組み合わせはこのグループでのみ出現します", - "xpack.aiops.explainLogRateSpikes.spikeAnalysisTableGroups.groupColumnTooltip": "グループに一意のフィールドと値のペアを表示します。すべてのフィールドと値のペアを表示するには、行を展開します。", "xpack.aiops.explainLogRateSpikes.spikeAnalysisTableGroups.groupLabel": "グループ", "xpack.aiops.explainLogRateSpikes.spikeAnalysisTableGroups.impactLabelColumnTooltip": "メッセージレート差異に対するグループの影響のレベル", "xpack.aiops.explainLogRateSpikes.spikeAnalysisTableGroups.logRateColumnTooltip": "メッセージレート差異に対するグループの影響の視覚的な表示", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index b57b617a0ce26..4a871213f86a6 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -6998,9 +6998,6 @@ "xpack.aiops.changePointDetection.cardinalityWarningMessage": "“{splitField}”字段基数为 {cardinality},这超出了 {cardinalityLimit} 的限制。仅分析前 {cardinalityLimit} 个分区(按文档计数排序)。", "xpack.aiops.explainLogRateSpikes.loadingState.identifiedFieldCandidates": "已识别 {fieldCandidatesCount, plural, other {# 个字段候选项}}。", "xpack.aiops.explainLogRateSpikes.loadingState.identifiedFieldValuePairs": "已识别 {fieldValuePairsCount, plural, other {# 个重要的字段/值对}}。", - "xpack.aiops.explainLogRateSpikes.spikeAnalysisTableGroups.moreLabel": "+{count, plural, other {# 个其他字段/值对}}", - "xpack.aiops.explainLogRateSpikes.spikeAnalysisTableGroups.moreRepeatedLabel": "+{count, plural, other {# 个其他字段/值对}}也会在其他组中显示", - "xpack.aiops.explainLogRateSpikes.spikeAnalysisTableGroups.onlyMoreRepeatedLabel": "{count, plural, other {# 个字段/值对}}也会在其他组中显示", "xpack.aiops.index.dataLoader.internalServerErrorMessage": "加载索引 {index} 中的数据时出错。{message}。请求可能已超时。请尝试使用较小的样例大小或缩小时间范围。", "xpack.aiops.index.dataViewNotBasedOnTimeSeriesNotificationTitle": "数据视图“{dataViewTitle}”并非基于时间序列。", "xpack.aiops.index.dataViewWithoutMetricNotificationTitle": "数据视图“{dataViewTitle}”不包含任何指标字段。", @@ -7053,7 +7050,6 @@ "xpack.aiops.explainLogRateSpikes.spikeAnalysisTable.pValueColumnTooltip": "值的频率更改的意义;值越小表示变化越大", "xpack.aiops.explainLogRateSpikes.spikeAnalysisTable.pValueLabel": "p-value", "xpack.aiops.explainLogRateSpikes.spikeAnalysisTable.uniqueColumnTooltip": "此字段/值对只在该分组中出现", - "xpack.aiops.explainLogRateSpikes.spikeAnalysisTableGroups.groupColumnTooltip": "显示对组唯一的字段/值对。展开行以查看所有字段/值对。", "xpack.aiops.explainLogRateSpikes.spikeAnalysisTableGroups.groupLabel": "组", "xpack.aiops.explainLogRateSpikes.spikeAnalysisTableGroups.impactLabelColumnTooltip": "组对消息速率差异的影响水平", "xpack.aiops.explainLogRateSpikes.spikeAnalysisTableGroups.logRateColumnTooltip": "组对消息速率差异的影响的视觉表示形式", diff --git a/x-pack/test/api_integration/apis/aiops/explain_log_rate_spikes.ts b/x-pack/test/api_integration/apis/aiops/explain_log_rate_spikes.ts index 420ff157ce644..d2bf38ca8532c 100644 --- a/x-pack/test/api_integration/apis/aiops/explain_log_rate_spikes.ts +++ b/x-pack/test/api_integration/apis/aiops/explain_log_rate_spikes.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { sortBy } from 'lodash'; import fetch from 'node-fetch'; import { format as formatUrl } from 'url'; @@ -76,7 +77,10 @@ export default ({ getService }: FtrProviderContext) => { const ecp = testData.expected.significantTerms[index]; expect(cp.fieldName).to.eql(ecp.fieldName); expect(cp.fieldValue).to.eql(ecp.fieldValue); - expect(cp.doc_count).to.eql(ecp.doc_count); + expect(cp.doc_count).to.eql( + ecp.doc_count, + `Expected doc_count for '${cp.fieldName}:${cp.fieldValue}' to be ${ecp.doc_count}, got ${cp.doc_count}` + ); expect(cp.bg_count).to.eql(ecp.bg_count); }); @@ -92,8 +96,8 @@ export default ({ getService }: FtrProviderContext) => { const groupActions = data.filter((d) => d.type === testData.expected.groupFilter); const groups = groupActions.flatMap((d) => d.payload); - expect(groups).to.eql( - testData.expected.groups, + expect(sortBy(groups, 'id')).to.eql( + sortBy(testData.expected.groups, 'id'), 'Grouping result does not match expected values.' ); diff --git a/x-pack/test/api_integration/apis/aiops/test_data.ts b/x-pack/test/api_integration/apis/aiops/test_data.ts index fc525f3ec141e..001000c29d611 100644 --- a/x-pack/test/api_integration/apis/aiops/test_data.ts +++ b/x-pack/test/api_integration/apis/aiops/test_data.ts @@ -83,8 +83,8 @@ export const explainLogRateSpikesTestData: TestData[] = [ grouping: true, }, expected: { - chunksLength: 25, - actionsLength: 24, + chunksLength: 27, + actionsLength: 26, noIndexChunksLength: 4, noIndexActionsLength: 3, significantTermFilter: 'add_significant_terms', diff --git a/x-pack/test/functional/apps/aiops/explain_log_rate_spikes.ts b/x-pack/test/functional/apps/aiops/explain_log_rate_spikes.ts index 7b36eda71a016..0318805b85cad 100644 --- a/x-pack/test/functional/apps/aiops/explain_log_rate_spikes.ts +++ b/x-pack/test/functional/apps/aiops/explain_log_rate_spikes.ts @@ -5,6 +5,8 @@ * 2.0. */ +import { orderBy } from 'lodash'; + import expect from '@kbn/expect'; import type { FtrProviderContext } from '../../ftr_provider_context'; @@ -148,14 +150,18 @@ export default function ({ getPageObject, getService }: FtrProviderContext) { const analysisGroupsTable = await aiops.explainLogRateSpikesAnalysisGroupsTable.parseAnalysisTable(); - expect(analysisGroupsTable).to.be.eql(testData.expected.analysisGroupsTable); + expect(orderBy(analysisGroupsTable, 'group')).to.be.eql( + orderBy(testData.expected.analysisGroupsTable, 'group') + ); await ml.testExecution.logTestStep('expand table row'); await aiops.explainLogRateSpikesAnalysisGroupsTable.assertExpandRowButtonExists(); await aiops.explainLogRateSpikesAnalysisGroupsTable.expandRow(); const analysisTable = await aiops.explainLogRateSpikesAnalysisTable.parseAnalysisTable(); - expect(analysisTable).to.be.eql(testData.expected.analysisTable); + expect(orderBy(analysisTable, ['fieldName', 'fieldValue'])).to.be.eql( + orderBy(testData.expected.analysisTable, ['fieldName', 'fieldValue']) + ); }); } diff --git a/x-pack/test/functional/apps/aiops/test_data.ts b/x-pack/test/functional/apps/aiops/test_data.ts index f544225f14c97..ae2aeacb12dfd 100644 --- a/x-pack/test/functional/apps/aiops/test_data.ts +++ b/x-pack/test/functional/apps/aiops/test_data.ts @@ -18,10 +18,13 @@ export const farequoteDataViewTestData: TestData = { expected: { totalDocCountFormatted: '86,374', analysisGroupsTable: [ - { docCount: '297', group: 'airline: AAL' }, + { + docCount: '297', + group: '* airline: AAL', + }, { docCount: '100', - group: 'airline: UALcustom_field.keyword: deviation', + group: '* custom_field.keyword: deviation* airline: UAL', }, ], analysisTable: [ @@ -54,17 +57,38 @@ export const artificialLogDataViewTestData: TestData = { expected: { totalDocCountFormatted: '8,400', analysisGroupsTable: [ - { group: 'user: Peter', docCount: '1981' }, - { group: 'response_code: 500url: home.phpurl: login.php', docCount: '792' }, + { + group: 'response_code: 500url: home.php', + docCount: '792', + }, + { + group: 'url: login.phpresponse_code: 500', + docCount: '790', + }, + { + docCount: '636', + group: 'user: Peterurl: home.php', + }, + { + docCount: '632', + group: 'user: Peterurl: login.php', + }, ], analysisTable: [ { - fieldName: 'user', - fieldValue: 'Peter', + fieldName: 'response_code', + fieldValue: '500', logRate: 'Chart type:bar chart', - pValue: '2.75e-21', + pValue: '3.61e-12', impact: 'High', }, + { + fieldName: 'url', + fieldValue: 'home.php', + impact: 'Low', + logRate: 'Chart type:bar chart', + pValue: '0.00974', + }, ], }, }; diff --git a/x-pack/test/functional/services/aiops/explain_log_rate_spikes_data_generator.ts b/x-pack/test/functional/services/aiops/explain_log_rate_spikes_data_generator.ts index 6e5f7044efbc3..1a80ac679f29b 100644 --- a/x-pack/test/functional/services/aiops/explain_log_rate_spikes_data_generator.ts +++ b/x-pack/test/functional/services/aiops/explain_log_rate_spikes_data_generator.ts @@ -64,11 +64,17 @@ function getArtificialLogsWithSpike(index: string) { }); // Now let's add items to the dataset to make some specific significant terms being returned as results + const docsPerUrl1: Record = { + 'login.php': 299, + 'user.php': 300, + 'home.php': 301, + }; + ['200', '404'].forEach((responseCode) => { ['login.php', 'user.php', 'home.php'].forEach((url) => { tsOffset = 0; - [...Array(300)].forEach(() => { - tsOffset += DAY_MS / 300; + [...Array(docsPerUrl1[url])].forEach(() => { + tsOffset += DAY_MS / docsPerUrl1[url]; bulkBody.push(action); bulkBody.push({ user: 'Peter', @@ -82,11 +88,16 @@ function getArtificialLogsWithSpike(index: string) { }); }); - ['Paul', 'Mary'].forEach((user) => { + const docsPerUrl2: Record = { + 'login.php': 399, + 'home.php': 400, + }; + + ['Paul', 'Mary'].forEach((user, userIndex) => { ['login.php', 'home.php'].forEach((url) => { tsOffset = 0; - [...Array(400)].forEach(() => { - tsOffset += DAY_MS / 400; + [...Array(docsPerUrl2[url] + userIndex)].forEach(() => { + tsOffset += DAY_MS / docsPerUrl2[url]; bulkBody.push(action); bulkBody.push({ user, From ecd2b914f46e59cf4535c58925886268e42be1d9 Mon Sep 17 00:00:00 2001 From: Julia Rechkunova Date: Thu, 23 Mar 2023 11:09:17 +0100 Subject: [PATCH 15/40] Migrate drag and drop logic from Lens plugin to its own package (#151836) Closes https://github.com/elastic/kibana/issues/151702 ## Summary This PR migrates drag and drop logic from Lens plugin to a new package so we can reuse it on Discover page later. At this point there should be no visual changes. If you notice something, please comment on the PR. - [x] Migrate drag&drop code to its own package `@kbn/dom-drag-drop` - [x] Clean up i18n strings - [x] Clean up styles - [x] Adjust tests - [x] Make telemetry optional - [x] Configurable `data-test-subj` Please test by using your mouse and also by using keyword shortcuts. # Next steps - Redesign for field list item (smaller button, a separate handle icon, pill styles) - Redesign for draggable buttons in the Lens layer panels (smaller buttons) - [Figma](https://www.figma.com/file/SvpfCqaZPb2iAYnPtd0Gnr/KUI-Library?node-id=674%3A198901&t=OnQH2EQ4fdBjsRLp-0) - https://github.com/elastic/kibana/issues/151703 --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Stratoula Kalafateli --- .github/CODEOWNERS | 1 + .i18nrc.json | 1 + package.json | 1 + .../kbn-dom-drag-drop/README.md | 4 +- packages/kbn-dom-drag-drop/index.ts | 21 +++ packages/kbn-dom-drag-drop/jest.config.js | 13 ++ packages/kbn-dom-drag-drop/kibana.jsonc | 8 ++ packages/kbn-dom-drag-drop/package.json | 6 + .../__snapshots__/drag_drop.test.tsx.snap | 28 ++-- packages/kbn-dom-drag-drop/src/constants.ts | 9 ++ .../kbn-dom-drag-drop/src}/drag_drop.test.tsx | 127 +++++++++-------- .../kbn-dom-drag-drop/src}/drag_drop.tsx | 111 +++++++++------ .../src/drop_targets/index.ts | 22 +++ .../drop_targets/swap_duplicate_combine.tsx | 133 +++++++++++++++++ .../kbn-dom-drag-drop/src}/index.ts | 6 +- .../src}/providers/announcements.tsx | 134 +++++++++--------- .../src}/providers/index.tsx | 5 +- .../src}/providers/providers.test.tsx | 5 +- .../src}/providers/providers.tsx | 34 ++++- .../src}/providers/reorder_provider.tsx | 30 +++- .../src}/providers/types.tsx | 28 +++- .../src/sass}/drag_drop.scss | 114 +++++++-------- .../src/sass/drag_drop_mixins.scss | 46 ++++++ packages/kbn-dom-drag-drop/src/types.ts | 28 ++++ packages/kbn-dom-drag-drop/tsconfig.json | 11 ++ .../field_item_button/field_item_button.scss | 53 +++++++ .../field_item_button/field_item_button.tsx | 98 +++++++++++++ .../components/field_item_button/index.tsx | 9 ++ .../unified_field_list/public/index.ts | 1 + tsconfig.base.json | 2 + x-pack/plugins/lens/public/_mixins.scss | 38 +---- x-pack/plugins/lens/public/_variables.scss | 3 +- .../datasources/form_based/datapanel.tsx | 2 +- .../droppable/get_drop_props.ts | 3 +- .../droppable/on_drop_handler.test.ts | 7 +- .../droppable/on_drop_handler.ts | 2 +- .../datasources/form_based/field_item.scss | 34 +---- .../datasources/form_based/field_item.tsx | 39 ++--- .../datasources/form_based/form_based.tsx | 2 +- .../public/datasources/form_based/mocks.ts | 3 +- .../public/datasources/form_based/types.ts | 2 +- .../datasources/text_based/datapanel.tsx | 20 +-- .../public/datasources/text_based/mocks.ts | 3 +- .../buttons/draggable_dimension_button.tsx | 22 +-- .../buttons/drop_targets_utils.tsx | 126 +--------------- .../buttons/empty_dimension_button.tsx | 16 ++- .../config_panel/layer_panel.scss | 8 +- .../config_panel/layer_panel.test.tsx | 9 +- .../editor_frame/config_panel/layer_panel.tsx | 11 +- .../editor_frame/data_panel_wrapper.test.tsx | 2 +- .../editor_frame/data_panel_wrapper.tsx | 2 +- .../editor_frame/editor_frame.test.tsx | 2 +- .../editor_frame/editor_frame.tsx | 4 +- .../editor_frame/suggestion_helpers.ts | 2 +- .../geo_field_workspace_panel.scss | 13 -- .../geo_field_workspace_panel.tsx | 2 +- .../workspace_panel/workspace_panel.test.tsx | 3 +- .../workspace_panel/workspace_panel.tsx | 2 +- .../workspace_panel_wrapper.scss | 9 +- x-pack/plugins/lens/public/types.ts | 25 +--- x-pack/plugins/lens/public/utils.ts | 2 +- x-pack/plugins/lens/tsconfig.json | 2 +- .../translations/translations/fr-FR.json | 55 ------- .../translations/translations/ja-JP.json | 55 ------- .../translations/translations/zh-CN.json | 54 ------- .../apps/lens/group1/fields_list.ts | 8 +- .../test/functional/page_objects/lens_page.ts | 16 +-- yarn.lock | 4 + 68 files changed, 932 insertions(+), 769 deletions(-) rename x-pack/plugins/lens/public/drag_drop/readme.md => packages/kbn-dom-drag-drop/README.md (97%) create mode 100644 packages/kbn-dom-drag-drop/index.ts create mode 100644 packages/kbn-dom-drag-drop/jest.config.js create mode 100644 packages/kbn-dom-drag-drop/kibana.jsonc create mode 100644 packages/kbn-dom-drag-drop/package.json rename {x-pack/plugins/lens/public/drag_drop => packages/kbn-dom-drag-drop/src}/__snapshots__/drag_drop.test.tsx.snap (54%) create mode 100644 packages/kbn-dom-drag-drop/src/constants.ts rename {x-pack/plugins/lens/public/drag_drop => packages/kbn-dom-drag-drop/src}/drag_drop.test.tsx (89%) rename {x-pack/plugins/lens/public/drag_drop => packages/kbn-dom-drag-drop/src}/drag_drop.tsx (90%) create mode 100644 packages/kbn-dom-drag-drop/src/drop_targets/index.ts create mode 100644 packages/kbn-dom-drag-drop/src/drop_targets/swap_duplicate_combine.tsx rename {x-pack/plugins/lens/public/drag_drop => packages/kbn-dom-drag-drop/src}/index.ts (51%) rename {x-pack/plugins/lens/public/drag_drop => packages/kbn-dom-drag-drop/src}/providers/announcements.tsx (82%) rename {x-pack/plugins/lens/public/drag_drop => packages/kbn-dom-drag-drop/src}/providers/index.tsx (60%) rename {x-pack/plugins/lens/public/drag_drop => packages/kbn-dom-drag-drop/src}/providers/providers.test.tsx (86%) rename {x-pack/plugins/lens/public/drag_drop => packages/kbn-dom-drag-drop/src}/providers/providers.tsx (85%) rename {x-pack/plugins/lens/public/drag_drop => packages/kbn-dom-drag-drop/src}/providers/reorder_provider.tsx (73%) rename {x-pack/plugins/lens/public/drag_drop => packages/kbn-dom-drag-drop/src}/providers/types.tsx (77%) rename {x-pack/plugins/lens/public/drag_drop => packages/kbn-dom-drag-drop/src/sass}/drag_drop.scss (57%) create mode 100644 packages/kbn-dom-drag-drop/src/sass/drag_drop_mixins.scss create mode 100644 packages/kbn-dom-drag-drop/src/types.ts create mode 100644 packages/kbn-dom-drag-drop/tsconfig.json create mode 100644 src/plugins/unified_field_list/public/components/field_item_button/field_item_button.scss create mode 100644 src/plugins/unified_field_list/public/components/field_item_button/field_item_button.tsx create mode 100644 src/plugins/unified_field_list/public/components/field_item_button/index.tsx diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index cee340914a2a6..1207e5655401e 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -312,6 +312,7 @@ x-pack/plugins/discover_enhanced @elastic/kibana-data-discovery src/plugins/discover @elastic/kibana-data-discovery packages/kbn-doc-links @elastic/kibana-docs packages/kbn-docs-utils @elastic/kibana-operations +packages/kbn-dom-drag-drop @elastic/kibana-visualizations @elastic/kibana-data-discovery packages/kbn-ebt-tools @elastic/kibana-core packages/kbn-ecs @elastic/kibana-core @elastic/security-threat-hunting-investigations x-pack/packages/kbn-ecs-data-quality-dashboard @elastic/security-threat-hunting-investigations diff --git a/.i18nrc.json b/.i18nrc.json index 9ea9a3c338713..d1eddd2f56d5c 100644 --- a/.i18nrc.json +++ b/.i18nrc.json @@ -14,6 +14,7 @@ "core": ["src/core", "packages/core"], "customIntegrations": "src/plugins/custom_integrations", "dashboard": "src/plugins/dashboard", + "domDragDrop": "packages/kbn-dom-drag-drop", "controls": "src/plugins/controls", "data": "src/plugins/data", "ecsDataQualityDashboard": "x-pack/packages/kbn-ecs-data-quality-dashboard", diff --git a/package.json b/package.json index 9c185bf28c2d0..c56726e325647 100644 --- a/package.json +++ b/package.json @@ -351,6 +351,7 @@ "@kbn/discover-enhanced-plugin": "link:x-pack/plugins/discover_enhanced", "@kbn/discover-plugin": "link:src/plugins/discover", "@kbn/doc-links": "link:packages/kbn-doc-links", + "@kbn/dom-drag-drop": "link:packages/kbn-dom-drag-drop", "@kbn/ebt-tools": "link:packages/kbn-ebt-tools", "@kbn/ecs": "link:packages/kbn-ecs", "@kbn/ecs-data-quality-dashboard": "link:x-pack/packages/kbn-ecs-data-quality-dashboard", diff --git a/x-pack/plugins/lens/public/drag_drop/readme.md b/packages/kbn-dom-drag-drop/README.md similarity index 97% rename from x-pack/plugins/lens/public/drag_drop/readme.md rename to packages/kbn-dom-drag-drop/README.md index d7183263c519b..c0145516a811e 100644 --- a/x-pack/plugins/lens/public/drag_drop/readme.md +++ b/packages/kbn-dom-drag-drop/README.md @@ -1,4 +1,4 @@ -# Drag / Drop +# DOM Drag & Drop This is a simple drag / drop mechanism that plays nice with React. @@ -9,7 +9,7 @@ We aren't using EUI or another library, due to the fact that Lens visualizations First, place a RootDragDropProvider at the root of your application. ```js - + ... your app here ... ``` diff --git a/packages/kbn-dom-drag-drop/index.ts b/packages/kbn-dom-drag-drop/index.ts new file mode 100644 index 0000000000000..618613deca73e --- /dev/null +++ b/packages/kbn-dom-drag-drop/index.ts @@ -0,0 +1,21 @@ +/* + * 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 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { + type DragDropIdentifier, + type DragContextState, + type DropType, + type DraggingIdentifier, + DragDrop, + DragContext, + RootDragDropProvider, + ChildDragDropProvider, + ReorderProvider, +} from './src'; + +export { DropTargetSwapDuplicateCombine } from './src/drop_targets'; diff --git a/packages/kbn-dom-drag-drop/jest.config.js b/packages/kbn-dom-drag-drop/jest.config.js new file mode 100644 index 0000000000000..56badb948315f --- /dev/null +++ b/packages/kbn-dom-drag-drop/jest.config.js @@ -0,0 +1,13 @@ +/* + * 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 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-dom-drag-drop'], +}; diff --git a/packages/kbn-dom-drag-drop/kibana.jsonc b/packages/kbn-dom-drag-drop/kibana.jsonc new file mode 100644 index 0000000000000..cfa2e9ae2df00 --- /dev/null +++ b/packages/kbn-dom-drag-drop/kibana.jsonc @@ -0,0 +1,8 @@ +{ + "type": "shared-browser", + "id": "@kbn/dom-drag-drop", + "owner": [ + "@elastic/kibana-visualizations", + "@elastic/kibana-data-discovery" + ] +} diff --git a/packages/kbn-dom-drag-drop/package.json b/packages/kbn-dom-drag-drop/package.json new file mode 100644 index 0000000000000..13248a11ab059 --- /dev/null +++ b/packages/kbn-dom-drag-drop/package.json @@ -0,0 +1,6 @@ +{ + "name": "@kbn/dom-drag-drop", + "private": true, + "version": "1.0.0", + "license": "SSPL-1.0 OR Elastic License 2.0" +} \ No newline at end of file diff --git a/x-pack/plugins/lens/public/drag_drop/__snapshots__/drag_drop.test.tsx.snap b/packages/kbn-dom-drag-drop/src/__snapshots__/drag_drop.test.tsx.snap similarity index 54% rename from x-pack/plugins/lens/public/drag_drop/__snapshots__/drag_drop.test.tsx.snap rename to packages/kbn-dom-drag-drop/src/__snapshots__/drag_drop.test.tsx.snap index 8dab2f3a14f32..29ab5e234e9d2 100644 --- a/x-pack/plugins/lens/public/drag_drop/__snapshots__/drag_drop.test.tsx.snap +++ b/packages/kbn-dom-drag-drop/src/__snapshots__/drag_drop.test.tsx.snap @@ -2,12 +2,12 @@ exports[`DragDrop defined dropTypes is reflected in the className 1`] = `
@@ -16,16 +16,16 @@ exports[`DragDrop defined dropTypes is reflected in the className 1`] = ` exports[`DragDrop items that has dropTypes=undefined get special styling when another item is dragged 1`] = `