diff --git a/config/serverless.es.yml b/config/serverless.es.yml index b8e12054ddf28..4cf2298c8715d 100644 --- a/config/serverless.es.yml +++ b/config/serverless.es.yml @@ -48,11 +48,11 @@ xpack.fleet.internal.registry.excludePackages: [ ## Fine-tune the search solution feature privileges. Also, refer to `serverless.yml` for the project-agnostic overrides. xpack.features.overrides: ### Dashboards feature is moved from Analytics category to the Search one. - dashboard.category: "enterpriseSearch" + dashboard_v2.category: "enterpriseSearch" ### Dev Tools feature is moved from Analytics category to the Search one. dev_tools.category: "enterpriseSearch" ### Discover feature is moved from Analytics category to the Search one. - discover.category: "enterpriseSearch" + discover_v2.category: "enterpriseSearch" ### Machine Learning feature is moved from Analytics category to the Management one. ml.category: "management" ### Stack Alerts feature is moved from Analytics category to the Search one renamed to simply `Alerts`. @@ -130,4 +130,4 @@ xpack.observabilityAIAssistant.scope: "search" aiAssistantManagementSelection.preferredAIAssistantType: "observability" xpack.observabilityAiAssistantManagement.logSourcesEnabled: false xpack.observabilityAiAssistantManagement.spacesEnabled: false -xpack.observabilityAiAssistantManagement.visibilityEnabled: false +xpack.observabilityAiAssistantManagement.visibilityEnabled: false \ No newline at end of file diff --git a/config/serverless.oblt.yml b/config/serverless.oblt.yml index a08f9a72e9e7b..9ee5064b946e6 100644 --- a/config/serverless.oblt.yml +++ b/config/serverless.oblt.yml @@ -32,10 +32,20 @@ xpack.features.overrides: - feature: "observability" privileges: [ "read" ] ### Dashboards feature should be moved from Analytics category to the Observability one. - dashboard.category: "observability" + dashboard_v2.category: "observability" ### Discover feature should be moved from Analytics category to the Observability one and its privileges are ### fine-tuned to grant access to Observability app. discover: + privileges: + # Discover `All` feature privilege should implicitly grant `All` access to Observability app. + all.composedOf: + - feature: "observability" + privileges: [ "all" ] + # Discover `Read` feature privilege should implicitly grant `Read` access to Observability app. + read.composedOf: + - feature: "observability" + privileges: [ "read" ] + discover_v2: category: "observability" privileges: # Discover `All` feature privilege should implicitly grant `All` access to Observability app. @@ -226,4 +236,4 @@ xpack.ml.compatibleModuleType: 'observability' console.ui.embeddedEnabled: false # Disable role management (custom roles) -xpack.security.roleManagementEnabled: false +xpack.security.roleManagementEnabled: false \ No newline at end of file diff --git a/config/serverless.security.yml b/config/serverless.security.yml index c32e50f3b1ba1..5eebbdac8e349 100644 --- a/config/serverless.security.yml +++ b/config/serverless.security.yml @@ -15,10 +15,15 @@ xpack.searchIndices.enabled: false ## Fine-tune the security solution feature privileges. Also, refer to `serverless.yml` for the project-agnostic overrides. xpack.features.overrides: - ### Dashboard feature is hidden in Role management since it's automatically granted by SIEM feature. - dashboard.hidden: true - ### Discover feature is hidden in Role management since it's automatically granted by SIEM feature. + ### The following features are hidden in Role management since they're automatically granted by SIEM feature. discover.hidden: true + discover_v2.hidden: true + dashboard.hidden: true + dashboard_v2.hidden: true + visualize.hidden: true + visualize_v2.hidden: true + maps.hidden: true + maps_v2.hidden: true ### Machine Learning feature is moved from Analytics category to the Security one as the last item. ml: category: "security" @@ -29,25 +34,29 @@ xpack.features.overrides: ### Security's `All` feature privilege should implicitly grant `All` access to Discover, Dashboard, Maps, and ### Visualize features. all.composedOf: - - feature: "discover" + - feature: "discover_v2" privileges: [ "all" ] - - feature: "dashboard" + - feature: "dashboard_v2" privileges: [ "all" ] - - feature: "visualize" + - feature: "visualize_v2" privileges: [ "all" ] - - feature: "maps" + - feature: "maps_v2" + privileges: [ "all" ] + - feature: "savedQueryManagement" privileges: [ "all" ] # Security's `Read` feature privilege should implicitly grant `Read` access to Discover, Dashboard, Maps, and # Visualize features. Additionally, it should implicitly grant privilege to create short URLs in Discover, ### Dashboard, and Visualize apps. read.composedOf: - - feature: "discover" + - feature: "discover_v2" privileges: [ "read" ] - - feature: "dashboard" + - feature: "dashboard_v2" privileges: [ "read" ] - - feature: "visualize" + - feature: "visualize_v2" privileges: [ "read" ] - - feature: "maps" + - feature: "maps_v2" + privileges: [ "read" ] + - feature: "savedQueryManagement" privileges: [ "read" ] ### Security's feature privileges are fine-tuned to grant access to Discover, Dashboard, Maps, and Visualize apps. diff --git a/config/serverless.yml b/config/serverless.yml index cbaf654db3867..678de96768afc 100644 --- a/config/serverless.yml +++ b/config/serverless.yml @@ -36,6 +36,30 @@ xpack.features.overrides: url_create: disabled: true includeIn: "read" + dashboard_v2: + privileges: + ### Dashboard's `All` feature privilege should implicitly grant `All` access to Maps and Visualize features. + all.composedOf: + - feature: "maps_v2" + privileges: [ "all" ] + - feature: "visualize_v2" + privileges: [ "all" ] + ### Dashboard's `Read` feature privilege should implicitly grant `Read` access to Maps and Visualize features. + ### Additionally, it should implicitly grant privilege to create short URLs in Visualize app. + read.composedOf: + - feature: "maps_v2" + privileges: [ "read" ] + - feature: "visualize_v2" + privileges: [ "read" ] + ### All Dashboard sub-feature privileges should be hidden: reporting capabilities will be granted via dedicated + ### Reporting feature and short URL sub-feature privilege should be granted for both `All` and `Read`. + subFeatures.privileges: + download_csv_report.disabled: true + generate_report.disabled: true + store_search_session.disabled: true + url_create: + disabled: true + includeIn: "read" discover: ### All Discover sub-feature privileges should be hidden: reporting capabilities will be granted via dedicated ### Reporting feature and short URL sub-feature privilege should be granted for both `All` and `Read`. @@ -45,20 +69,32 @@ xpack.features.overrides: url_create: disabled: true includeIn: "read" + discover_v2: + ### All Discover sub-feature privileges should be hidden: reporting capabilities will be granted via dedicated + ### Reporting feature and short URL sub-feature privilege should be granted for both `All` and `Read`. + subFeatures.privileges: + generate_report.disabled: true + store_search_session.disabled: true + url_create: + disabled: true + includeIn: "read" ### Shared images feature is hidden in Role management since it's not needed. filesSharedImage.hidden: true ### Maps feature is hidden in Role management since it's automatically granted by Dashboard feature. - maps.hidden: true + maps_v2.hidden: true ### Reporting feature is supposed to give access to reporting capabilities across different features. reporting: privileges: all.composedOf: - - feature: "dashboard" + - feature: "dashboard_v2" privileges: [ "download_csv_report" ] - - feature: "discover" + - feature: "discover_v2" privileges: [ "generate_report" ] ### Visualize feature is hidden in Role management since it's automatically granted by Dashboard feature. visualize: + ### The short URL sub-feature privilege should be always granted. + subFeatures.privileges.url_create.includeIn: "read" + visualize_v2: hidden: true ### The short URL sub-feature privilege should be always granted. subFeatures.privileges.url_create.includeIn: "read" @@ -236,4 +272,4 @@ xpack.dataUsage.enabled: true xpack.dataUsage.enableExperimental: ['dataUsageDisabled'] # Ensure Serverless is using the Amsterdam theme -uiSettings.experimental.defaultTheme: "amsterdam" +uiSettings.experimental.defaultTheme: "amsterdam" \ No newline at end of file diff --git a/docs/concepts/save-query.asciidoc b/docs/concepts/save-query.asciidoc index a4d6dd28ea6e1..36235da0e0a17 100644 --- a/docs/concepts/save-query.asciidoc +++ b/docs/concepts/save-query.asciidoc @@ -17,9 +17,9 @@ which include the *Discover* configuration—selected columns in the documen Discover sessions are primarily used for adding search results to a dashboard. [role="xpack"] -==== Read-only access -If you have insufficient privileges to save queries, -the *Save* button isn't visible in the saved query management popover. +==== Saved query access +If you have insufficient privileges to manage saved queries, +you will be unable to load or save queries from the saved query management popover. For more information, see <> ==== Save a query diff --git a/docs/setup/configuring-reporting.asciidoc b/docs/setup/configuring-reporting.asciidoc index d23a268cbb7f8..4d5b08e338bba 100644 --- a/docs/setup/configuring-reporting.asciidoc +++ b/docs/setup/configuring-reporting.asciidoc @@ -110,11 +110,11 @@ PUT :/api/security/role/custom_reporting_user "spaces": ["*"], "base": [], "feature": { - "dashboard": ["generate_report", <1> + "dashboard_v2": ["generate_report", <1> "download_csv_report"], <2> - "discover": ["generate_report"], <3> + "discover_v2": ["generate_report"], <3> "canvas": ["generate_report"], <4> - "visualize": ["generate_report"] <5> + "visualize_v2": ["generate_report"] <5> } }] } @@ -147,8 +147,8 @@ PUT localhost:5601/api/security/role/custom_reporting_user { "base": [], "feature": { - "dashboard": [ "all" ], <1> - "discover": [ "all" ], <2> + "dashboard_v2": [ "all" ], <1> + "discover_v2": [ "all" ], <2> }, "spaces": [ "*" ] } diff --git a/docs/upgrade-notes.asciidoc b/docs/upgrade-notes.asciidoc index 2835541a821a0..33386e98e94c2 100644 --- a/docs/upgrade-notes.asciidoc +++ b/docs/upgrade-notes.asciidoc @@ -271,6 +271,23 @@ Use Kibana feature privileges to control access to reporting features. For more - The `xpack.reporting.roles.allow` setting is no longer supported. If you have a `xpack.reporting.roles.allow` value in your `kibana.yml`, you should remove this setting and assign privileges to reporting features using Kibana feature privileges. ==== +[discrete] +[[breaking-202863]] +.Saved query privileges have been reworked (9.0.0) +[%collapsible] +==== +*Details* + +Saved query privileges have been reworked to rely solely on a single global `savedQueryManagement` privilege, and eliminate app-specific overrides (e.g. implicit access with `all` privilege for Discover, Dashboard, Maps, and Visualize apps). This change simplifies the security model and ensures consistency in the saved query management UI across Kibana, but results in different handling of saved query privileges for new user roles, and minor breaking changes to the existing management UX. +For more information, refer to {kibana-pull}202863[#202863]. +*Impact* + +The `savedQueryManagement` feature privilege now globally controls access to saved query management for all new user roles. Regardless of privileges for Discover, Dashboard, Maps, or Visualize, new user roles follow this behaviour: +. If `savedQueryManagement` is `none`, the user cannot see or access the saved query management UI or APIs. +. If `savedQueryManagement` is `read`, the user can load queries from the UI and access read APIs, but cannot save queries from the UI or make changes to queries through APIs. +. If `savedQueryManagement` is `all`, the user can both load and save queries from the UI and through APIs. +*Action* + +Existing user roles that were previously implicitly granted access to saved queries through the dashboard, discover, visualize, or maps feature privileges will retain that access to prevent breaking changes. While no action is required for existing roles, it’s still advisable to audit relevant roles and re-save them to migrate to the latest privileges model. For new roles, ensure that the savedQueryManagement privilege is set as needed. +==== + [float] === Deprecation notices diff --git a/docs/user/security/authorization/kibana-privileges.asciidoc b/docs/user/security/authorization/kibana-privileges.asciidoc index 6c9a94a354fb3..2d0796626486e 100644 --- a/docs/user/security/authorization/kibana-privileges.asciidoc +++ b/docs/user/security/authorization/kibana-privileges.asciidoc @@ -65,8 +65,8 @@ PUT /api/security/role/my_kibana_role { "base": [], "feature": { - "visualize": ["all"], - "dashboard": ["read", "url_create"] + "visualize_v2": ["all"], + "dashboard_v2": ["read", "url_create"] }, "spaces": ["marketing"] } diff --git a/examples/state_containers_examples/public/with_data_services/app.tsx b/examples/state_containers_examples/public/with_data_services/app.tsx index c33cf7b4d4ca6..48ca810b48adc 100644 --- a/examples/state_containers_examples/public/with_data_services/app.tsx +++ b/examples/state_containers_examples/public/with_data_services/app.tsx @@ -98,7 +98,7 @@ export const App = ({ showSearchBar={true} indexPatterns={[dataView]} useDefaultBehaviors={true} - saveQueryMenuVisibility="allowed_by_app_privilege" // allowed only for this example app, use `globally_managed` by default + allowSavingQueries /> diff --git a/packages/kbn-es/src/serverless_resources/project_roles/security/roles.yml b/packages/kbn-es/src/serverless_resources/project_roles/security/roles.yml index c15b609f1b0f2..8a6fc0529beab 100644 --- a/packages/kbn-es/src/serverless_resources/project_roles/security/roles.yml +++ b/packages/kbn-es/src/serverless_resources/project_roles/security/roles.yml @@ -54,10 +54,11 @@ viewer: - feature_actions.read - feature_builtInAlerts.read - feature_osquery.read - - feature_discover.all - - feature_dashboard.all - - feature_maps.all - - feature_visualize.all + - feature_discover_v2.all + - feature_dashboard_v2.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all - feature_dataQuality.all resources: '*' run_as: [] @@ -137,10 +138,11 @@ editor: - feature_actions.endpoint_security_execute - feature_builtInAlerts.all - feature_osquery.all - - feature_discover.all - - feature_dashboard.all - - feature_maps.all - - feature_visualize.all + - feature_discover_v2.all + - feature_dashboard_v2.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' run_as: [] @@ -191,10 +193,11 @@ t1_analyst: - feature_builtInAlerts.read - feature_osquery.read - feature_osquery.run_saved_queries - - feature_discover.all - - feature_dashboard.all - - feature_maps.all - - feature_visualize.all + - feature_discover_v2.all + - feature_dashboard_v2.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' t2_analyst: @@ -248,10 +251,11 @@ t2_analyst: - feature_builtInAlerts.read - feature_osquery.read - feature_osquery.run_saved_queries - - feature_discover.all - - feature_dashboard.all - - feature_maps.all - - feature_visualize.all + - feature_discover_v2.all + - feature_dashboard_v2.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' t3_analyst: @@ -322,10 +326,11 @@ t3_analyst: - feature_actions.endpoint_security_execute - feature_builtInAlerts.all - feature_osquery.all - - feature_discover.all - - feature_dashboard.all - - feature_maps.all - - feature_visualize.all + - feature_discover_v2.all + - feature_dashboard_v2.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' threat_intelligence_analyst: @@ -386,10 +391,11 @@ threat_intelligence_analyst: - feature_actions.read - feature_builtInAlerts.read - feature_osquery.all - - feature_discover.all - - feature_dashboard.all - - feature_maps.all - - feature_visualize.all + - feature_discover_v2.all + - feature_dashboard_v2.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' rule_author: @@ -457,10 +463,11 @@ rule_author: - feature_actions.read - feature_builtInAlerts.all - feature_osquery.all - - feature_discover.all - - feature_dashboard.all - - feature_maps.all - - feature_visualize.all + - feature_discover_v2.all + - feature_dashboard_v2.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' soc_manager: @@ -535,10 +542,11 @@ soc_manager: - feature_builtInAlerts.all - feature_osquery.all - feature_indexPatterns.all - - feature_discover.all - - feature_dashboard.all - - feature_maps.all - - feature_visualize.all + - feature_discover_v2.all + - feature_dashboard_v2.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' detections_admin: @@ -596,10 +604,11 @@ detections_admin: - feature_actions.all - feature_builtInAlerts.all - feature_dev_tools.all - - feature_discover.all - - feature_dashboard.all - - feature_maps.all - - feature_visualize.all + - feature_discover_v2.all + - feature_dashboard_v2.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' platform_engineer: @@ -661,10 +670,11 @@ platform_engineer: - feature_fleetv2.all - feature_osquery.all - feature_indexPatterns.all - - feature_discover.all - - feature_dashboard.all - - feature_maps.all - - feature_visualize.all + - feature_discover_v2.all + - feature_dashboard_v2.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' endpoint_operations_analyst: @@ -737,10 +747,11 @@ endpoint_operations_analyst: - feature_osquery.all - feature_fleet.all - feature_fleetv2.all - - feature_discover.all - - feature_dashboard.all - - feature_maps.all - - feature_visualize.all + - feature_discover_v2.all + - feature_dashboard_v2.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' endpoint_policy_manager: @@ -815,10 +826,11 @@ endpoint_policy_manager: - feature_osquery.all - feature_fleet.all - feature_fleetv2.all - - feature_discover.all - - feature_dashboard.all - - feature_maps.all - - feature_visualize.all + - feature_discover_v2.all + - feature_dashboard_v2.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' # admin role defined in elasticsearch controller diff --git a/packages/kbn-es/src/serverless_resources/security_roles.json b/packages/kbn-es/src/serverless_resources/security_roles.json index 6f85d0655dfb6..f17ddb48672ea 100644 --- a/packages/kbn-es/src/serverless_resources/security_roles.json +++ b/packages/kbn-es/src/serverless_resources/security_roles.json @@ -126,7 +126,8 @@ { "names": [ "metrics-endpoint.metadata_current_*", - ".fleet-agents*", ".fleet-actions*", + ".fleet-agents*", + ".fleet-actions*", "risk-score.risk-score-*", ".entities.v1.latest.security_*" ], @@ -162,10 +163,11 @@ "actions": ["read"], "builtInAlerts": ["all"], "osquery": ["all"], - "discover": ["all"], - "dashboard": ["all"], - "maps": ["all"], - "visualize": ["all"] + "discover_v2": ["all"], + "dashboard_v2": ["all"], + "maps_v2": ["all"], + "visualize_v2": ["all"], + "savedQueryManagement": ["all"] }, "spaces": ["*"], "base": [] diff --git a/src/core/packages/capabilities/common/src/capabilities.ts b/src/core/packages/capabilities/common/src/capabilities.ts index c7ca2127ab832..902b13e07161f 100644 --- a/src/core/packages/capabilities/common/src/capabilities.ts +++ b/src/core/packages/capabilities/common/src/capabilities.ts @@ -14,7 +14,7 @@ * * @public */ -export interface Capabilities { +export type Capabilities = { /** Navigation link capabilities. */ navLinks: Record; @@ -28,4 +28,11 @@ export interface Capabilities { /** Custom capabilities, registered by plugins. */ [key: string]: Record>; -} +} & { + // These capabilities have been replaced by discover_v2, dashboard_v2 etc. + // The purpose of these types is to avoid anyone accidentally depending on the removed capabilities. + discover?: {}; + dashboard?: {}; + maps?: {}; + visualize?: {}; +}; diff --git a/src/platform/packages/private/kbn-reporting/get_csv_panel_actions/panel_actions/get_csv_panel_action.test.ts b/src/platform/packages/private/kbn-reporting/get_csv_panel_actions/panel_actions/get_csv_panel_action.test.ts index a0f0eba3a22a3..5553553b17245 100644 --- a/src/platform/packages/private/kbn-reporting/get_csv_panel_actions/panel_actions/get_csv_panel_action.test.ts +++ b/src/platform/packages/private/kbn-reporting/get_csv_panel_actions/panel_actions/get_csv_panel_action.test.ts @@ -71,7 +71,7 @@ describe('GetCsvReportPanelAction', () => { mockStartServicesPayload = [ { ...core, - application: { capabilities: { dashboard: { downloadCsv: true } } }, + application: { capabilities: { dashboard_v2: { downloadCsv: true } } }, } as unknown as CoreStart, { data: dataPluginMock.createStartContract(), diff --git a/src/platform/packages/private/kbn-reporting/get_csv_panel_actions/panel_actions/get_csv_panel_action.tsx b/src/platform/packages/private/kbn-reporting/get_csv_panel_actions/panel_actions/get_csv_panel_action.tsx index 0b00f86e23f7b..15b10aed45380 100644 --- a/src/platform/packages/private/kbn-reporting/get_csv_panel_actions/panel_actions/get_csv_panel_action.tsx +++ b/src/platform/packages/private/kbn-reporting/get_csv_panel_actions/panel_actions/get_csv_panel_action.tsx @@ -137,7 +137,7 @@ export class ReportingCsvPanelAction implements ActionDefinition { const decoratedJobParams = apiClient.getDecoratedJobParams(getJobParams()); diff --git a/src/platform/packages/private/kbn-reporting/public/share/share_context_menu/register_pdf_png_modal_reporting.tsx b/src/platform/packages/private/kbn-reporting/public/share/share_context_menu/register_pdf_png_modal_reporting.tsx index c2d5a88de9ecd..8d285f5ce86a1 100644 --- a/src/platform/packages/private/kbn-reporting/public/share/share_context_menu/register_pdf_png_modal_reporting.tsx +++ b/src/platform/packages/private/kbn-reporting/public/share/share_context_menu/register_pdf_png_modal_reporting.tsx @@ -64,9 +64,9 @@ export const reportingExportModalProvider = ({ const licenseDisabled = !enableLinks; const capabilityHasDashboardScreenshotReporting = - application.capabilities.dashboard?.generateScreenshot === true; + application.capabilities.dashboard_v2?.generateScreenshot === true; const capabilityHasVisualizeScreenshotReporting = - application.capabilities.visualize?.generateScreenshot === true; + application.capabilities.visualize_v2?.generateScreenshot === true; if (!licenseHasScreenshotReporting) { return []; diff --git a/src/platform/packages/shared/kbn-alerts-ui-shared/src/alerts_search_bar/index.tsx b/src/platform/packages/shared/kbn-alerts-ui-shared/src/alerts_search_bar/index.tsx index bde93e811a502..4aa323e0f3391 100644 --- a/src/platform/packages/shared/kbn-alerts-ui-shared/src/alerts_search_bar/index.tsx +++ b/src/platform/packages/shared/kbn-alerts-ui-shared/src/alerts_search_bar/index.tsx @@ -109,7 +109,7 @@ export const AlertsSearchBar = ({ onRefresh, showDatePicker, showQueryInput: true, - saveQueryMenuVisibility: 'allowed_by_app_privilege', + allowSavingQueries: true, showSubmitButton, submitOnBlur, onQueryChange: onSearchQueryChange, diff --git a/src/platform/packages/shared/kbn-unified-data-table/src/hooks/use_data_grid_columns.test.tsx b/src/platform/packages/shared/kbn-unified-data-table/src/hooks/use_data_grid_columns.test.tsx index f0c9ef46ebac3..5def5a5c96f40 100644 --- a/src/platform/packages/shared/kbn-unified-data-table/src/hooks/use_data_grid_columns.test.tsx +++ b/src/platform/packages/shared/kbn-unified-data-table/src/hooks/use_data_grid_columns.test.tsx @@ -16,7 +16,7 @@ import { Capabilities } from '@kbn/core/types'; describe('useColumns', () => { const defaultProps = { - capabilities: { discover: { save: true } } as unknown as Capabilities, + capabilities: { discover_v2: { save: true } } as unknown as Capabilities, config: configMock, dataView: dataViewMock, dataViews: dataViewsMock, diff --git a/src/platform/plugins/private/event_annotation/server/saved_objects.ts b/src/platform/plugins/private/event_annotation/server/saved_objects.ts index 6839980dcf157..56e498ee5f4b7 100644 --- a/src/platform/plugins/private/event_annotation/server/saved_objects.ts +++ b/src/platform/plugins/private/event_annotation/server/saved_objects.ts @@ -35,7 +35,7 @@ export function setupSavedObjects(coreSetup: CoreSetup) { getInAppUrl: (obj: { id: string }) => ({ // TODO link to specific object path: `/app/${VISUALIZE_APP_NAME}#/${ANNOTATIONS_LISTING_VIEW_ID}`, - uiCapabilitiesPath: 'visualize.show', + uiCapabilitiesPath: 'visualize_v2.show', }), }, migrations: () => { diff --git a/src/platform/plugins/private/event_annotation_listing/public/get_table_list.tsx b/src/platform/plugins/private/event_annotation_listing/public/get_table_list.tsx index 45ed046340fac..0ddb2c6654394 100644 --- a/src/platform/plugins/private/event_annotation_listing/public/get_table_list.tsx +++ b/src/platform/plugins/private/event_annotation_listing/public/get_table_list.tsx @@ -50,7 +50,7 @@ export const getTableList = ( savedObjectsTagging={services.savedObjectsTagging} uiSettings={services.core.uiSettings} eventAnnotationService={services.eventAnnotationService} - visualizeCapabilities={services.core.application.capabilities.visualize} + visualizeCapabilities={services.core.application.capabilities.visualize_v2} parentProps={parentProps} dataViews={services.dataViews} createDataView={services.createDataView} diff --git a/src/platform/plugins/shared/dashboard/common/types.ts b/src/platform/plugins/shared/dashboard/common/types.ts index c8ecc237ed348..1b4c144765965 100644 --- a/src/platform/plugins/shared/dashboard/common/types.ts +++ b/src/platform/plugins/shared/dashboard/common/types.ts @@ -14,7 +14,6 @@ import type { DashboardAttributes, DashboardPanel } from '../server/content_mana export interface DashboardCapabilities { showWriteControls: boolean; - saveQuery: boolean; createNew: boolean; show: boolean; [key: string]: boolean; diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_app/top_nav/share/show_share_modal.test.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_app/top_nav/share/show_share_modal.test.tsx index 63be6836ba80f..6077702cecafc 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_app/top_nav/share/show_share_modal.test.tsx +++ b/src/platform/plugins/shared/dashboard/public/dashboard_app/top_nav/share/show_share_modal.test.tsx @@ -16,7 +16,7 @@ import { showPublicUrlSwitch, ShowShareModal, ShowShareModalProps } from './show import { getDashboardBackupService } from '../../../services/dashboard_backup_service'; describe('showPublicUrlSwitch', () => { - test('returns false if "dashboard" app is not available', () => { + test('returns false if "dashboard_v2" app is not available', () => { const anonymousUserCapabilities: Capabilities = { catalogue: {}, management: {}, @@ -27,12 +27,12 @@ describe('showPublicUrlSwitch', () => { expect(result).toBe(false); }); - test('returns false if "dashboard" app is not accessible', () => { + test('returns false if "dashboard_v2" app is not accessible', () => { const anonymousUserCapabilities: Capabilities = { catalogue: {}, management: {}, navLinks: {}, - dashboard: { + dashboard_v2: { show: false, }, }; @@ -41,12 +41,12 @@ describe('showPublicUrlSwitch', () => { expect(result).toBe(false); }); - test('returns true if "dashboard" app is not available an accessible', () => { + test('returns true if "dashboard_v2" app is not available an accessible', () => { const anonymousUserCapabilities: Capabilities = { catalogue: {}, management: {}, navLinks: {}, - dashboard: { + dashboard_v2: { show: true, }, }; diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_app/top_nav/share/show_share_modal.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_app/top_nav/share/show_share_modal.tsx index e9b22c4f3d87f..231c4da06c0eb 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_app/top_nav/share/show_share_modal.tsx +++ b/src/platform/plugins/shared/dashboard/public/dashboard_app/top_nav/share/show_share_modal.tsx @@ -41,9 +41,9 @@ export interface ShowShareModalProps { } export const showPublicUrlSwitch = (anonymousUserCapabilities: Capabilities) => { - if (!anonymousUserCapabilities.dashboard) return false; + if (!anonymousUserCapabilities.dashboard_v2) return false; - const dashboard = anonymousUserCapabilities.dashboard; + const dashboard = anonymousUserCapabilities.dashboard_v2; return !!dashboard.show; }; diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_container/component/empty_screen/dashboard_empty_screen.test.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_container/component/empty_screen/dashboard_empty_screen.test.tsx index a8cdd21335c94..d157b7b242efa 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_container/component/empty_screen/dashboard_empty_screen.test.tsx +++ b/src/platform/plugins/shared/dashboard/public/dashboard_container/component/empty_screen/dashboard_empty_screen.test.tsx @@ -57,7 +57,7 @@ describe('DashboardEmptyScreen', () => { }); test('renders correctly with readonly mode', () => { - (coreServices.application.capabilities as any).dashboard.showWriteControls = false; + (coreServices.application.capabilities as any).dashboard_v2.showWriteControls = false; const component = mountComponent('view'); expect(component.render()).toMatchSnapshot(); @@ -72,7 +72,7 @@ describe('DashboardEmptyScreen', () => { // even when in edit mode, readonly users should not have access to the editing buttons in the empty prompt. test('renders correctly with readonly and edit mode', () => { - (coreServices.application.capabilities as any).dashboard.showWriteControls = false; + (coreServices.application.capabilities as any).dashboard_v2.showWriteControls = false; const component = mountComponent('edit'); expect(component.render()).toMatchSnapshot(); diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_listing/dashboard_listing.test.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_listing/dashboard_listing.test.tsx index e17433709b1f1..5a457e8dbbd06 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_listing/dashboard_listing.test.tsx +++ b/src/platform/plugins/shared/dashboard/public/dashboard_listing/dashboard_listing.test.tsx @@ -65,7 +65,7 @@ function mountWith({ props: incomingProps }: { props?: Partial { - (coreServices.application.capabilities as any).dashboard.showWriteControls = false; + (coreServices.application.capabilities as any).dashboard_v2.showWriteControls = false; let component: ReactWrapper; @@ -80,7 +80,7 @@ test('initial filter is passed through', async () => { }); test('when showWriteControls is true, table list view is passed editing functions', async () => { - (coreServices.application.capabilities as any).dashboard.showWriteControls = true; + (coreServices.application.capabilities as any).dashboard_v2.showWriteControls = true; let component: ReactWrapper; @@ -99,7 +99,7 @@ test('when showWriteControls is true, table list view is passed editing function }); test('when showWriteControls is false, table list view is not passed editing functions', async () => { - (coreServices.application.capabilities as any).dashboard.showWriteControls = false; + (coreServices.application.capabilities as any).dashboard_v2.showWriteControls = false; let component: ReactWrapper; diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_listing/dashboard_listing_empty_prompt.test.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_listing/dashboard_listing_empty_prompt.test.tsx index a5661238f9ad1..446f8e9dadef2 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_listing/dashboard_listing_empty_prompt.test.tsx +++ b/src/platform/plugins/shared/dashboard/public/dashboard_listing/dashboard_listing_empty_prompt.test.tsx @@ -56,7 +56,7 @@ function mountWith({ } test('renders readonly empty prompt when showWriteControls is off', async () => { - (coreServices.application.capabilities as any).dashboard.showWriteControls = false; + (coreServices.application.capabilities as any).dashboard_v2.showWriteControls = false; let component: ReactWrapper; await act(async () => { @@ -68,7 +68,7 @@ test('renders readonly empty prompt when showWriteControls is off', async () => }); test('renders empty prompt with link when showWriteControls is on', async () => { - (coreServices.application.capabilities as any).dashboard.showWriteControls = true; + (coreServices.application.capabilities as any).dashboard_v2.showWriteControls = true; let component: ReactWrapper; await act(async () => { @@ -80,7 +80,7 @@ test('renders empty prompt with link when showWriteControls is on', async () => }); test('renders disabled action button when disableCreateDashboardButton is true', async () => { - (coreServices.application.capabilities as any).dashboard.showWriteControls = true; + (coreServices.application.capabilities as any).dashboard_v2.showWriteControls = true; let component: ReactWrapper; await act(async () => { @@ -95,7 +95,7 @@ test('renders disabled action button when disableCreateDashboardButton is true', }); test('renders continue button when no dashboards exist but one is in progress', async () => { - (coreServices.application.capabilities as any).dashboard.showWriteControls = true; + (coreServices.application.capabilities as any).dashboard_v2.showWriteControls = true; let component: ReactWrapper; let props: DashboardListingEmptyPromptProps; await act(async () => { @@ -114,7 +114,7 @@ test('renders continue button when no dashboards exist but one is in progress', }); test('renders discard button when no dashboards exist but one is in progress', async () => { - (coreServices.application.capabilities as any).dashboard.showWriteControls = true; + (coreServices.application.capabilities as any).dashboard_v2.showWriteControls = true; let component: ReactWrapper; await act(async () => { ({ component } = mountWith({ diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_listing/hooks/use_dashboard_listing_table.test.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_listing/hooks/use_dashboard_listing_table.test.tsx index 3c4388903992d..57c7d516d72ec 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_listing/hooks/use_dashboard_listing_table.test.tsx +++ b/src/platform/plugins/shared/dashboard/public/dashboard_listing/hooks/use_dashboard_listing_table.test.tsx @@ -236,7 +236,7 @@ describe('useDashboardListingTable', () => { test('createItem should be undefined when showWriteControls equals false', () => { coreServices.application.capabilities = { ...coreServices.application.capabilities, - dashboard: { + dashboard_v2: { showWriteControls: false, }, }; @@ -251,7 +251,7 @@ describe('useDashboardListingTable', () => { }); test('deleteItems should be undefined when showWriteControls equals false', () => { - (coreServices.application.capabilities as any).dashboard.showWriteControls = false; + (coreServices.application.capabilities as any).dashboard_v2.showWriteControls = false; const { result } = renderHook(() => useDashboardListingTable({ @@ -264,7 +264,7 @@ describe('useDashboardListingTable', () => { }); test('editItem should be undefined when showWriteControls equals false', () => { - (coreServices.application.capabilities as any).dashboard.showWriteControls = false; + (coreServices.application.capabilities as any).dashboard_v2.showWriteControls = false; const { result } = renderHook(() => useDashboardListingTable({ diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_top_nav/internal_dashboard_top_nav.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_top_nav/internal_dashboard_top_nav.tsx index e6e3e9b38ff09..f51c322bd0d61 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_top_nav/internal_dashboard_top_nav.tsx +++ b/src/platform/plugins/shared/dashboard/public/dashboard_top_nav/internal_dashboard_top_nav.tsx @@ -339,9 +339,7 @@ export function InternalDashboardTopNav({ useDefaultBehaviors={true} savedQueryId={savedQueryId} indexPatterns={allDataViews ?? []} - saveQueryMenuVisibility={ - getDashboardCapabilities().saveQuery ? 'allowed_by_app_privilege' : 'globally_managed' - } + allowSavingQueries appName={LEGACY_DASHBOARD_APP_ID} visible={viewMode !== 'print'} setMenuMountPoint={ diff --git a/src/platform/plugins/shared/dashboard/public/services/mocks.ts b/src/platform/plugins/shared/dashboard/public/services/mocks.ts index 57ed1a4d0ce61..1783d03c1a051 100644 --- a/src/platform/plugins/shared/dashboard/public/services/mocks.ts +++ b/src/platform/plugins/shared/dashboard/public/services/mocks.ts @@ -41,7 +41,6 @@ import { SearchDashboardsResponse } from './dashboard_content_management_service const defaultDashboardCapabilities: DashboardCapabilities = { show: true, createNew: true, - saveQuery: true, createShortUrl: true, showWriteControls: true, storeSearchSession: true, @@ -49,7 +48,7 @@ const defaultDashboardCapabilities: DashboardCapabilities = { export const setStubKibanaServices = () => { const core = coreMock.createStart(); - (core.application.capabilities as any).dashboard = defaultDashboardCapabilities; + (core.application.capabilities as any).dashboard_v2 = defaultDashboardCapabilities; setKibanaServices(core, { contentManagement: contentManagementMock.createStartContract(), diff --git a/src/platform/plugins/shared/dashboard/public/utils/get_dashboard_capabilities.ts b/src/platform/plugins/shared/dashboard/public/utils/get_dashboard_capabilities.ts index 083ca2fea43af..f6eb65488e933 100644 --- a/src/platform/plugins/shared/dashboard/public/utils/get_dashboard_capabilities.ts +++ b/src/platform/plugins/shared/dashboard/public/utils/get_dashboard_capabilities.ts @@ -13,13 +13,12 @@ import { coreServices } from '../services/kibana_services'; export const getDashboardCapabilities = (): DashboardCapabilities => { const { application: { - capabilities: { dashboard }, + capabilities: { dashboard_v2: dashboard }, }, } = coreServices; return { show: Boolean(dashboard.show), - saveQuery: Boolean(dashboard.saveQuery), createNew: Boolean(dashboard.createNew), createShortUrl: Boolean(dashboard.createShortUrl), showWriteControls: Boolean(dashboard.showWriteControls), diff --git a/src/platform/plugins/shared/dashboard/server/capabilities_provider.ts b/src/platform/plugins/shared/dashboard/server/capabilities_provider.ts index 1be027b9dbb6e..6b240f628a511 100644 --- a/src/platform/plugins/shared/dashboard/server/capabilities_provider.ts +++ b/src/platform/plugins/shared/dashboard/server/capabilities_provider.ts @@ -10,12 +10,11 @@ import { DashboardCapabilities } from '../common/types'; export const capabilitiesProvider = (): { - dashboard: DashboardCapabilities; + dashboard_v2: DashboardCapabilities; } => ({ - dashboard: { + dashboard_v2: { createNew: true, show: true, showWriteControls: true, - saveQuery: true, }, }); diff --git a/src/platform/plugins/shared/dashboard/server/dashboard_saved_object/dashboard_saved_object.ts b/src/platform/plugins/shared/dashboard/server/dashboard_saved_object/dashboard_saved_object.ts index 3b7f137cc1d96..524bd59a49253 100644 --- a/src/platform/plugins/shared/dashboard/server/dashboard_saved_object/dashboard_saved_object.ts +++ b/src/platform/plugins/shared/dashboard/server/dashboard_saved_object/dashboard_saved_object.ts @@ -39,7 +39,7 @@ export const createDashboardSavedObjectType = ({ getInAppUrl(obj) { return { path: `/app/dashboards#/view/${encodeURIComponent(obj.id)}`, - uiCapabilitiesPath: 'dashboard.show', + uiCapabilitiesPath: 'dashboard_v2.show', }; }, }, diff --git a/src/platform/plugins/shared/data/server/saved_objects/query.ts b/src/platform/plugins/shared/data/server/saved_objects/query.ts index ed530cb9d5f75..3c66556334bf1 100644 --- a/src/platform/plugins/shared/data/server/saved_objects/query.ts +++ b/src/platform/plugins/shared/data/server/saved_objects/query.ts @@ -32,7 +32,7 @@ export const querySavedObjectType: SavedObjectsType = { getInAppUrl(obj) { return { path: `/app/discover#/?_a=(savedQuery:'${encodeURIComponent(obj.id)}')`, - uiCapabilitiesPath: 'discover.show', + uiCapabilitiesPath: 'discover_v2.show', }; }, }, diff --git a/src/platform/plugins/shared/discover/public/__mocks__/services.ts b/src/platform/plugins/shared/discover/public/__mocks__/services.ts index 6216b65bfffd6..6845ae9ec31c9 100644 --- a/src/platform/plugins/shared/discover/public/__mocks__/services.ts +++ b/src/platform/plugins/shared/discover/public/__mocks__/services.ts @@ -174,10 +174,10 @@ export function createDiscoverServicesMock(): DiscoverServices { docLinks: docLinksServiceMock.createStartContract(), embeddable: embeddablePluginMock.createStartContract(), capabilities: { - visualize: { + visualize_v2: { show: true, }, - discover: { + discover_v2: { save: false, }, advancedSettings: { diff --git a/src/platform/plugins/shared/discover/public/__mocks__/start_contract.ts b/src/platform/plugins/shared/discover/public/__mocks__/start_contract.ts index b7af207b2d20c..b616db3debe84 100644 --- a/src/platform/plugins/shared/discover/public/__mocks__/start_contract.ts +++ b/src/platform/plugins/shared/discover/public/__mocks__/start_contract.ts @@ -15,7 +15,7 @@ const capabilities = deepFreeze({ catalogue: {}, management: {}, navLinks: {}, - discover: { + discover_v2: { show: true, edit: false, }, diff --git a/src/platform/plugins/shared/discover/public/application/context/context_app.test.tsx b/src/platform/plugins/shared/discover/public/application/context/context_app.test.tsx index 7a99194cad575..7a166d255449b 100644 --- a/src/platform/plugins/shared/discover/public/application/context/context_app.test.tsx +++ b/src/platform/plugins/shared/discover/public/application/context/context_app.test.tsx @@ -88,7 +88,6 @@ describe('ContextApp test', () => { showSearchBar: true, showQueryInput: false, showFilterBar: true, - saveQueryMenuVisibility: 'hidden' as const, showDatePicker: false, indexPatterns: [dataViewMock], useDefaultBehaviors: true, diff --git a/src/platform/plugins/shared/discover/public/application/context/context_app.tsx b/src/platform/plugins/shared/discover/public/application/context/context_app.tsx index bf93d5333104f..207b394fb9031 100644 --- a/src/platform/plugins/shared/discover/public/application/context/context_app.tsx +++ b/src/platform/plugins/shared/discover/public/application/context/context_app.tsx @@ -230,7 +230,6 @@ export const ContextApp = ({ dataView, anchorId, referrer }: ContextAppProps) => showSearchBar: true, showQueryInput: false, showFilterBar: true, - saveQueryMenuVisibility: 'hidden' as const, showDatePicker: false, indexPatterns: [dataView], useDefaultBehaviors: true, diff --git a/src/platform/plugins/shared/discover/public/application/index.tsx b/src/platform/plugins/shared/discover/public/application/index.tsx index 8f946c20daaf5..d9f7d69d688d9 100644 --- a/src/platform/plugins/shared/discover/public/application/index.tsx +++ b/src/platform/plugins/shared/discover/public/application/index.tsx @@ -30,7 +30,7 @@ export const renderApp = ({ }: RenderAppProps) => { const { history, capabilities, chrome, data, core } = services; - if (!capabilities.discover.save) { + if (!capabilities.discover_v2.save) { chrome.setBadge({ text: i18n.translate('discover.badge.readOnly.text', { defaultMessage: 'Read only', diff --git a/src/platform/plugins/shared/discover/public/application/main/components/top_nav/app_menu_actions/get_share.tsx b/src/platform/plugins/shared/discover/public/application/main/components/top_nav/app_menu_actions/get_share.tsx index 87514e81a063e..777845df8a2af 100644 --- a/src/platform/plugins/shared/discover/public/application/main/components/top_nav/app_menu_actions/get_share.tsx +++ b/src/platform/plugins/shared/discover/public/application/main/components/top_nav/app_menu_actions/get_share.tsx @@ -100,7 +100,7 @@ export const getShareAppMenuItem = ({ services.share.toggleShareContextMenu({ anchorElement, allowEmbed: false, - allowShortUrl: !!services.capabilities.discover.createShortUrl, + allowShortUrl: !!services.capabilities.discover_v2.createShortUrl, shareableUrl, shareableUrlForSavedObject, shareableUrlLocatorParams: { locator, params }, diff --git a/src/platform/plugins/shared/discover/public/application/main/components/top_nav/discover_topnav.test.tsx b/src/platform/plugins/shared/discover/public/application/main/components/top_nav/discover_topnav.test.tsx index fc2579de4f159..e083aad32817f 100644 --- a/src/platform/plugins/shared/discover/public/application/main/components/top_nav/discover_topnav.test.tsx +++ b/src/platform/plugins/shared/discover/public/application/main/components/top_nav/discover_topnav.test.tsx @@ -55,7 +55,7 @@ jest.mock('../../../../customizations', () => ({ })); const mockDefaultCapabilities = { - discover: { save: true }, + discover_v2: { save: true }, } as unknown as typeof mockDiscoverService.capabilities; function getProps( @@ -107,7 +107,7 @@ describe('Discover topnav component', () => { }); test('generated config of TopNavMenu config is correct when discover save permissions are assigned', () => { - const props = getProps({ capabilities: { discover: { save: true } } }); + const props = getProps({ capabilities: { discover_v2: { save: true } } }); const component = mountWithIntl( @@ -119,7 +119,7 @@ describe('Discover topnav component', () => { }); test('generated config of TopNavMenu config is correct when no discover save permissions are assigned', () => { - const props = getProps({ capabilities: { discover: { save: false } } }); + const props = getProps({ capabilities: { discover_v2: { save: false } } }); const component = mountWithIntl( @@ -130,32 +130,6 @@ describe('Discover topnav component', () => { expect(topMenuConfig).toEqual(['inspect', 'new', 'open', 'share']); }); - test('top nav is correct when discover saveQuery permission is granted', () => { - const props = getProps({ capabilities: { discover: { saveQuery: true } } }); - const component = mountWithIntl( - - - - ); - const statefulSearchBar = component.find( - mockDiscoverService.navigation.ui.AggregateQueryTopNavMenu - ); - expect(statefulSearchBar.props().saveQueryMenuVisibility).toBe('allowed_by_app_privilege'); - }); - - test('top nav is correct when discover saveQuery permission is not granted', () => { - const props = getProps({ capabilities: { discover: { saveQuery: false } } }); - const component = mountWithIntl( - - - - ); - const statefulSearchBar = component.find( - mockDiscoverService.navigation.ui.AggregateQueryTopNavMenu - ); - expect(statefulSearchBar.props().saveQueryMenuVisibility).toBe('globally_managed'); - }); - describe('top nav customization', () => { it('should allow disabling default menu items', () => { mockUseCustomizations = true; diff --git a/src/platform/plugins/shared/discover/public/application/main/components/top_nav/discover_topnav.tsx b/src/platform/plugins/shared/discover/public/application/main/components/top_nav/discover_topnav.tsx index 577b93245cb33..d7d1d607e24c8 100644 --- a/src/platform/plugins/shared/discover/public/application/main/components/top_nav/discover_topnav.tsx +++ b/src/platform/plugins/shared/discover/public/application/main/components/top_nav/discover_topnav.tsx @@ -235,9 +235,7 @@ export const DiscoverTopNav = ({ savedQueryId={savedQuery} screenTitle={savedSearch.title} showDatePicker={showDatePicker} - saveQueryMenuVisibility={ - services.capabilities.discover.saveQuery ? 'allowed_by_app_privilege' : 'globally_managed' - } + allowSavingQueries showSearchBar={true} useDefaultBehaviors={true} dataViewPickerOverride={ diff --git a/src/platform/plugins/shared/discover/public/application/main/components/top_nav/get_top_nav_badges.test.ts b/src/platform/plugins/shared/discover/public/application/main/components/top_nav/get_top_nav_badges.test.ts index 790e6f94f616b..b9b109648803c 100644 --- a/src/platform/plugins/shared/discover/public/application/main/components/top_nav/get_top_nav_badges.test.ts +++ b/src/platform/plugins/shared/discover/public/application/main/components/top_nav/get_top_nav_badges.test.ts @@ -17,7 +17,7 @@ import { spacesPluginMock } from '@kbn/spaces-plugin/public/mocks'; const stateContainer = getDiscoverStateMock({ isTimeBased: true }); const discoverServiceMock = createDiscoverServicesMock(); -discoverServiceMock.capabilities.discover.save = true; +discoverServiceMock.capabilities.discover_v2.save = true; describe('getTopNavBadges()', function () { test('should not return the unsaved changes badge if no changes', () => { @@ -59,7 +59,7 @@ describe('getTopNavBadges()', function () { test('should not show save in unsaved changed badge for read-only user', async () => { const discoverServiceMockReadOnly = createDiscoverServicesMock(); - discoverServiceMockReadOnly.capabilities.discover.save = false; + discoverServiceMockReadOnly.capabilities.discover_v2.save = false; const topNavBadges = getTopNavBadges({ hasUnsavedChanges: true, services: discoverServiceMockReadOnly, @@ -132,7 +132,7 @@ describe('getTopNavBadges()', function () { describe('solutions view badge', () => { const discoverServiceWithSpacesMock = createDiscoverServicesMock(); - discoverServiceWithSpacesMock.capabilities.discover.save = true; + discoverServiceWithSpacesMock.capabilities.discover_v2.save = true; discoverServiceWithSpacesMock.spaces = spacesPluginMock.createStartContract(); test('should return the solutions view badge when spaces is enabled', () => { diff --git a/src/platform/plugins/shared/discover/public/application/main/components/top_nav/get_top_nav_badges.tsx b/src/platform/plugins/shared/discover/public/application/main/components/top_nav/get_top_nav_badges.tsx index 5e192275bb204..1a6de7c77700d 100644 --- a/src/platform/plugins/shared/discover/public/application/main/components/top_nav/get_top_nav_badges.tsx +++ b/src/platform/plugins/shared/discover/public/application/main/components/top_nav/get_top_nav_badges.tsx @@ -63,12 +63,12 @@ export const getTopNavBadges = ({ await stateContainer.actions.undoSavedSearchChanges(); }, onSave: - services.capabilities.discover.save && !isManaged + services.capabilities.discover_v2.save && !isManaged ? async () => { await saveSearch(); } : undefined, - onSaveAs: services.capabilities.discover.save + onSaveAs: services.capabilities.discover_v2.save ? async () => { await saveSearch(true); } diff --git a/src/platform/plugins/shared/discover/public/application/main/components/top_nav/use_top_nav_links.test.tsx b/src/platform/plugins/shared/discover/public/application/main/components/top_nav/use_top_nav_links.test.tsx index 3db9fb74f0eac..f0717d15e9820 100644 --- a/src/platform/plugins/shared/discover/public/application/main/components/top_nav/use_top_nav_links.test.tsx +++ b/src/platform/plugins/shared/discover/public/application/main/components/top_nav/use_top_nav_links.test.tsx @@ -20,7 +20,7 @@ describe('useTopNavLinks', () => { const services = { ...createDiscoverServicesMock(), capabilities: { - discover: { + discover_v2: { save: true, }, }, diff --git a/src/platform/plugins/shared/discover/public/application/main/components/top_nav/use_top_nav_links.tsx b/src/platform/plugins/shared/discover/public/application/main/components/top_nav/use_top_nav_links.tsx index 608442da14088..d52d02cf50607 100644 --- a/src/platform/plugins/shared/discover/public/application/main/components/top_nav/use_top_nav_links.tsx +++ b/src/platform/plugins/shared/discover/public/application/main/components/top_nav/use_top_nav_links.tsx @@ -185,7 +185,7 @@ export const useTopNavLinks = ({ entries.unshift(esqLDataViewTransitionToggle); } - if (services.capabilities.discover.save && !defaultMenu?.saveItem?.disabled) { + if (services.capabilities.discover_v2.save && !defaultMenu?.saveItem?.disabled) { const saveSearch = { id: 'save', label: i18n.translate('discover.localMenu.saveTitle', { diff --git a/src/platform/plugins/shared/discover/public/application/main/state_management/discover_state.ts b/src/platform/plugins/shared/discover/public/application/main/state_management/discover_state.ts index c01a0b786bef8..0ff2781294246 100644 --- a/src/platform/plugins/shared/discover/public/application/main/state_management/discover_state.ts +++ b/src/platform/plugins/shared/discover/public/application/main/state_management/discover_state.ts @@ -498,7 +498,7 @@ export function getDiscoverStateContainer({ }), { isDisabled: () => - services.capabilities.discover.storeSearchSession + services.capabilities.discover_v2.storeSearchSession ? { disabled: false } : { disabled: true, diff --git a/src/platform/plugins/shared/discover/public/embeddable/actions/view_saved_search_action.ts b/src/platform/plugins/shared/discover/public/embeddable/actions/view_saved_search_action.ts index d1092a28d9f55..3511e298e4827 100644 --- a/src/platform/plugins/shared/discover/public/embeddable/actions/view_saved_search_action.ts +++ b/src/platform/plugins/shared/discover/public/embeddable/actions/view_saved_search_action.ts @@ -50,7 +50,7 @@ export class ViewSavedSearchAction implements Action { async isCompatible({ embeddable }: EmbeddableApiContext) { const { capabilities } = this.application; const hasDiscoverPermissions = - (capabilities.discover.show as boolean) || (capabilities.discover.save as boolean); + (capabilities.discover_v2.show as boolean) || (capabilities.discover_v2.save as boolean); if (!hasDiscoverPermissions) return false; // early return to delay async import until absolutely necessary const { compatibilityCheck } = await import('./view_saved_search_compatibility_check'); diff --git a/src/platform/plugins/shared/discover/public/embeddable/get_search_embeddable_factory.tsx b/src/platform/plugins/shared/discover/public/embeddable/get_search_embeddable_factory.tsx index 265beaefaf0c8..b500e5a0558fa 100644 --- a/src/platform/plugins/shared/discover/public/embeddable/get_search_embeddable_factory.tsx +++ b/src/platform/plugins/shared/discover/public/embeddable/get_search_embeddable_factory.tsx @@ -156,7 +156,7 @@ export const getSearchEmbeddableFactory = ({ }), canLinkToLibrary: async () => { return ( - discoverServices.capabilities.discover.save && !Boolean(savedObjectId$.getValue()) + discoverServices.capabilities.discover_v2.save && !Boolean(savedObjectId$.getValue()) ); }, canUnlinkFromLibrary: async () => Boolean(savedObjectId$.getValue()), diff --git a/src/platform/plugins/shared/discover/public/plugin.tsx b/src/platform/plugins/shared/discover/public/plugin.tsx index 9845091e018a2..d108ed9f717bc 100644 --- a/src/platform/plugins/shared/discover/public/plugin.tsx +++ b/src/platform/plugins/shared/discover/public/plugin.tsx @@ -372,7 +372,7 @@ export class DiscoverPlugin const [coreStart, deps] = await core.getStartServices(); return { executeTriggerActions: deps.uiActions.executeTriggerActions, - isEditable: () => coreStart.application.capabilities.discover.save as boolean, + isEditable: () => coreStart.application.capabilities.discover_v2.save as boolean, }; }; diff --git a/src/platform/plugins/shared/discover/public/utils/get_sharing_data.test.ts b/src/platform/plugins/shared/discover/public/utils/get_sharing_data.test.ts index a6f54bfac7a5b..40a6142c37c4c 100644 --- a/src/platform/plugins/shared/discover/public/utils/get_sharing_data.test.ts +++ b/src/platform/plugins/shared/discover/public/utils/get_sharing_data.test.ts @@ -362,7 +362,7 @@ describe('getSharingData', () => { }); describe('showPublicUrlSwitch', () => { - test('returns false if "discover" app is not available', () => { + test('returns false if "discover_v2" app is not available', () => { const anonymousUserCapabilities: Capabilities = { catalogue: {}, management: {}, @@ -373,12 +373,12 @@ describe('showPublicUrlSwitch', () => { expect(result).toBe(false); }); - test('returns false if "discover" app is not accessible', () => { + test('returns false if "discover_v2" app is not accessible', () => { const anonymousUserCapabilities: Capabilities = { catalogue: {}, management: {}, navLinks: {}, - discover: { + discover_v2: { show: false, }, }; @@ -387,12 +387,12 @@ describe('showPublicUrlSwitch', () => { expect(result).toBe(false); }); - test('returns true if "discover" app is not available an accessible', () => { + test('returns true if "discover_v2" app is not available an accessible', () => { const anonymousUserCapabilities: Capabilities = { catalogue: {}, management: {}, navLinks: {}, - discover: { + discover_v2: { show: true, }, }; diff --git a/src/platform/plugins/shared/discover/public/utils/get_sharing_data.ts b/src/platform/plugins/shared/discover/public/utils/get_sharing_data.ts index 8f6b0c4356ea6..e008726617f05 100644 --- a/src/platform/plugins/shared/discover/public/utils/get_sharing_data.ts +++ b/src/platform/plugins/shared/discover/public/utils/get_sharing_data.ts @@ -137,15 +137,14 @@ export async function getSharingData( export interface DiscoverCapabilities { createShortUrl?: boolean; save?: boolean; - saveQuery?: boolean; show?: boolean; storeSearchSession?: boolean; } export const showPublicUrlSwitch = (anonymousUserCapabilities: Capabilities) => { - if (!anonymousUserCapabilities.discover) return false; + if (!anonymousUserCapabilities.discover_v2) return false; - const discover = anonymousUserCapabilities.discover as unknown as DiscoverCapabilities; + const discover = anonymousUserCapabilities.discover_v2 as unknown as DiscoverCapabilities; return !!discover.show; }; diff --git a/src/platform/plugins/shared/discover/server/capabilities_provider.ts b/src/platform/plugins/shared/discover/server/capabilities_provider.ts index b2944ac4f7299..d3920a8cc1f9b 100644 --- a/src/platform/plugins/shared/discover/server/capabilities_provider.ts +++ b/src/platform/plugins/shared/discover/server/capabilities_provider.ts @@ -8,10 +8,9 @@ */ export const capabilitiesProvider = () => ({ - discover: { + discover_v2: { show: true, createShortUrl: true, save: true, - saveQuery: true, }, }); diff --git a/src/platform/plugins/shared/presentation_util/public/services/mocks.ts b/src/platform/plugins/shared/presentation_util/public/services/mocks.ts index d0f54c5af5f09..142221085fe1e 100644 --- a/src/platform/plugins/shared/presentation_util/public/services/mocks.ts +++ b/src/platform/plugins/shared/presentation_util/public/services/mocks.ts @@ -18,11 +18,11 @@ import { setKibanaServices } from './kibana_services'; const setDefaultPresentationUtilCapabilities = (core: CoreStart) => { core.application.capabilities = { ...core.application.capabilities, - dashboard: { + dashboard_v2: { show: true, createNew: true, }, - visualize: { + visualize_v2: { save: true, }, advancedSettings: { diff --git a/src/platform/plugins/shared/presentation_util/public/utils/get_presentation_capabilities.ts b/src/platform/plugins/shared/presentation_util/public/utils/get_presentation_capabilities.ts index bdc547c2f5202..23bc96fd47e0f 100644 --- a/src/platform/plugins/shared/presentation_util/public/utils/get_presentation_capabilities.ts +++ b/src/platform/plugins/shared/presentation_util/public/utils/get_presentation_capabilities.ts @@ -17,7 +17,11 @@ interface PresentationCapabilities { } export const getPresentationCapabilities = (): PresentationCapabilities => { - const { dashboard, visualize, advancedSettings } = coreServices.application.capabilities; + const { + dashboard_v2: dashboard, + visualize_v2: visualize, + advancedSettings, + } = coreServices.application.capabilities; return { canAccessDashboards: Boolean(dashboard.show), diff --git a/src/platform/plugins/shared/saved_objects_management/public/management_section/objects_table/__snapshots__/saved_objects_table.test.tsx.snap b/src/platform/plugins/shared/saved_objects_management/public/management_section/objects_table/__snapshots__/saved_objects_table.test.tsx.snap index 8b0a6f76f4624..8c3a495e647fe 100644 --- a/src/platform/plugins/shared/saved_objects_management/public/management_section/objects_table/__snapshots__/saved_objects_table.test.tsx.snap +++ b/src/platform/plugins/shared/saved_objects_management/public/management_section/objects_table/__snapshots__/saved_objects_table.test.tsx.snap @@ -282,7 +282,7 @@ exports[`SavedObjectsTable should render normally 1`] = ` "icon": "search", "inAppUrl": Object { "path": "/discover/2", - "uiCapabilitiesPath": "discover.show", + "uiCapabilitiesPath": "discover_v2.show", }, "title": "MySearch", }, @@ -294,7 +294,7 @@ exports[`SavedObjectsTable should render normally 1`] = ` "icon": "dashboardApp", "inAppUrl": Object { "path": "/dashboard/3", - "uiCapabilitiesPath": "dashboard.show", + "uiCapabilitiesPath": "dashboard_v2.show", }, "title": "MyDashboard", }, @@ -306,7 +306,7 @@ exports[`SavedObjectsTable should render normally 1`] = ` "icon": "visualizeApp", "inAppUrl": Object { "path": "/edit/4", - "uiCapabilitiesPath": "visualize.show", + "uiCapabilitiesPath": "visualize_v2.show", }, "title": "MyViz", }, diff --git a/src/platform/plugins/shared/saved_objects_management/public/management_section/objects_table/components/__snapshots__/relationships.test.tsx.snap b/src/platform/plugins/shared/saved_objects_management/public/management_section/objects_table/components/__snapshots__/relationships.test.tsx.snap index 124f4b4f2e285..5620f8e99894d 100644 --- a/src/platform/plugins/shared/saved_objects_management/public/management_section/objects_table/components/__snapshots__/relationships.test.tsx.snap +++ b/src/platform/plugins/shared/saved_objects_management/public/management_section/objects_table/components/__snapshots__/relationships.test.tsx.snap @@ -88,7 +88,7 @@ exports[`Relationships should render dashboards normally 1`] = ` "icon": "visualizeApp", "inAppUrl": Object { "path": "/app/visualize#/edit/1", - "uiCapabilitiesPath": "visualize.show", + "uiCapabilitiesPath": "visualize_v2.show", }, "title": "My Visualization Title 1", }, @@ -101,7 +101,7 @@ exports[`Relationships should render dashboards normally 1`] = ` "icon": "visualizeApp", "inAppUrl": Object { "path": "/app/visualize#/edit/2", - "uiCapabilitiesPath": "visualize.show", + "uiCapabilitiesPath": "visualize_v2.show", }, "title": "My Visualization Title 2", }, @@ -293,7 +293,7 @@ exports[`Relationships should render index patterns normally 1`] = ` "icon": "search", "inAppUrl": Object { "path": "/app/discover#//1", - "uiCapabilitiesPath": "discover.show", + "uiCapabilitiesPath": "discover_v2.show", }, "title": "My Search Title", }, @@ -306,7 +306,7 @@ exports[`Relationships should render index patterns normally 1`] = ` "icon": "visualizeApp", "inAppUrl": Object { "path": "/app/visualize#/edit/2", - "uiCapabilitiesPath": "visualize.show", + "uiCapabilitiesPath": "visualize_v2.show", }, "title": "My Visualization Title", }, @@ -658,7 +658,7 @@ exports[`Relationships should render searches normally 1`] = ` "icon": "visualizeApp", "inAppUrl": Object { "path": "/app/visualize#/edit/2", - "uiCapabilitiesPath": "visualize.show", + "uiCapabilitiesPath": "visualize_v2.show", }, "title": "My Visualization Title", }, @@ -811,7 +811,7 @@ exports[`Relationships should render visualizations normally 1`] = ` "icon": "dashboardApp", "inAppUrl": Object { "path": "/app/kibana#/dashboard/1", - "uiCapabilitiesPath": "dashboard.show", + "uiCapabilitiesPath": "dashboard_v2.show", }, "title": "My Dashboard 1", }, @@ -824,7 +824,7 @@ exports[`Relationships should render visualizations normally 1`] = ` "icon": "dashboardApp", "inAppUrl": Object { "path": "/app/kibana#/dashboard/2", - "uiCapabilitiesPath": "dashboard.show", + "uiCapabilitiesPath": "dashboard_v2.show", }, "title": "My Dashboard 2", }, diff --git a/src/platform/plugins/shared/saved_objects_management/public/management_section/objects_table/components/relationships.test.tsx b/src/platform/plugins/shared/saved_objects_management/public/management_section/objects_table/components/relationships.test.tsx index e963b626552ca..bd86fd23337a5 100644 --- a/src/platform/plugins/shared/saved_objects_management/public/management_section/objects_table/components/relationships.test.tsx +++ b/src/platform/plugins/shared/saved_objects_management/public/management_section/objects_table/components/relationships.test.tsx @@ -54,7 +54,7 @@ describe('Relationships', () => { icon: 'search', inAppUrl: { path: '/app/discover#//1', - uiCapabilitiesPath: 'discover.show', + uiCapabilitiesPath: 'discover_v2.show', }, title: 'My Search Title', }, @@ -67,7 +67,7 @@ describe('Relationships', () => { icon: 'visualizeApp', inAppUrl: { path: '/app/visualize#/edit/2', - uiCapabilitiesPath: 'visualize.show', + uiCapabilitiesPath: 'visualize_v2.show', }, title: 'My Visualization Title', }, @@ -137,7 +137,7 @@ describe('Relationships', () => { icon: 'visualizeApp', inAppUrl: { path: '/app/visualize#/edit/2', - uiCapabilitiesPath: 'visualize.show', + uiCapabilitiesPath: 'visualize_v2.show', }, title: 'My Visualization Title', }, @@ -155,7 +155,7 @@ describe('Relationships', () => { icon: 'search', inAppUrl: { path: '/discover/1', - uiCapabilitiesPath: 'discover.show', + uiCapabilitiesPath: 'discover_v2.show', }, }, }, @@ -192,7 +192,7 @@ describe('Relationships', () => { icon: 'dashboardApp', inAppUrl: { path: '/app/kibana#/dashboard/1', - uiCapabilitiesPath: 'dashboard.show', + uiCapabilitiesPath: 'dashboard_v2.show', }, title: 'My Dashboard 1', }, @@ -205,7 +205,7 @@ describe('Relationships', () => { icon: 'dashboardApp', inAppUrl: { path: '/app/kibana#/dashboard/2', - uiCapabilitiesPath: 'dashboard.show', + uiCapabilitiesPath: 'dashboard_v2.show', }, title: 'My Dashboard 2', }, @@ -223,7 +223,7 @@ describe('Relationships', () => { icon: 'visualizeApp', inAppUrl: { path: '/edit/1', - uiCapabilitiesPath: 'visualize.show', + uiCapabilitiesPath: 'visualize_v2.show', }, }, }, @@ -260,7 +260,7 @@ describe('Relationships', () => { icon: 'visualizeApp', inAppUrl: { path: '/app/visualize#/edit/1', - uiCapabilitiesPath: 'visualize.show', + uiCapabilitiesPath: 'visualize_v2.show', }, title: 'My Visualization Title 1', }, @@ -273,7 +273,7 @@ describe('Relationships', () => { icon: 'visualizeApp', inAppUrl: { path: '/app/visualize#/edit/2', - uiCapabilitiesPath: 'visualize.show', + uiCapabilitiesPath: 'visualize_v2.show', }, title: 'My Visualization Title 2', }, @@ -291,7 +291,7 @@ describe('Relationships', () => { icon: 'dashboardApp', inAppUrl: { path: '/dashboard/1', - uiCapabilitiesPath: 'dashboard.show', + uiCapabilitiesPath: 'dashboard_v2.show', }, }, }, @@ -332,7 +332,7 @@ describe('Relationships', () => { icon: 'dashboardApp', inAppUrl: { path: '/dashboard/1', - uiCapabilitiesPath: 'dashboard.show', + uiCapabilitiesPath: 'dashboard_v2.show', }, }, }, diff --git a/src/platform/plugins/shared/saved_objects_management/public/management_section/objects_table/saved_objects_table.test.tsx b/src/platform/plugins/shared/saved_objects_management/public/management_section/objects_table/saved_objects_table.test.tsx index f53cadc7b2f21..8dc051fa33a7e 100644 --- a/src/platform/plugins/shared/saved_objects_management/public/management_section/objects_table/saved_objects_table.test.tsx +++ b/src/platform/plugins/shared/saved_objects_management/public/management_section/objects_table/saved_objects_table.test.tsx @@ -181,7 +181,7 @@ describe('SavedObjectsTable', () => { icon: 'search', inAppUrl: { path: '/discover/2', - uiCapabilitiesPath: 'discover.show', + uiCapabilitiesPath: 'discover_v2.show', }, }, }, @@ -193,7 +193,7 @@ describe('SavedObjectsTable', () => { icon: 'dashboardApp', inAppUrl: { path: '/dashboard/3', - uiCapabilitiesPath: 'dashboard.show', + uiCapabilitiesPath: 'dashboard_v2.show', }, }, }, @@ -205,7 +205,7 @@ describe('SavedObjectsTable', () => { icon: 'visualizeApp', inAppUrl: { path: '/edit/4', - uiCapabilitiesPath: 'visualize.show', + uiCapabilitiesPath: 'visualize_v2.show', }, }, }, @@ -490,7 +490,7 @@ describe('SavedObjectsTable', () => { editUrl: '/management/kibana/objects/savedSearches/2', inAppUrl: { path: '/discover/2', - uiCapabilitiesPath: 'discover.show', + uiCapabilitiesPath: 'discover_v2.show', }, }, } as SavedObjectWithMetadata); @@ -506,7 +506,7 @@ describe('SavedObjectsTable', () => { icon: 'search', inAppUrl: { path: '/discover/2', - uiCapabilitiesPath: 'discover.show', + uiCapabilitiesPath: 'discover_v2.show', }, }, }); diff --git a/src/platform/plugins/shared/saved_search/server/saved_objects/search.ts b/src/platform/plugins/shared/saved_search/server/saved_objects/search.ts index 90dbd6fbe6206..113821a2eb025 100644 --- a/src/platform/plugins/shared/saved_search/server/saved_objects/search.ts +++ b/src/platform/plugins/shared/saved_search/server/saved_objects/search.ts @@ -41,7 +41,7 @@ export function getSavedSearchObjectType( getInAppUrl(obj) { return { path: `/app/discover#/view/${encodeURIComponent(obj.id)}`, - uiCapabilitiesPath: 'discover.show', + uiCapabilitiesPath: 'discover_v2.show', }; }, }, diff --git a/src/platform/plugins/shared/unified_histogram/public/chart/chart.test.tsx b/src/platform/plugins/shared/unified_histogram/public/chart/chart.test.tsx index abd72dd502cfe..a6e5e9b1ad75e 100644 --- a/src/platform/plugins/shared/unified_histogram/public/chart/chart.test.tsx +++ b/src/platform/plugins/shared/unified_histogram/public/chart/chart.test.tsx @@ -66,7 +66,7 @@ async function mountComponent({ const services = { ...unifiedHistogramServicesMock, capabilities: { - dashboard: { + dashboard_v2: { showWriteControls: hasDashboardPermissions ?? true, }, } as unknown as Capabilities, diff --git a/src/platform/plugins/shared/unified_histogram/public/chart/chart.tsx b/src/platform/plugins/shared/unified_histogram/public/chart/chart.tsx index b9140e71d0d35..69ace6e73470e 100644 --- a/src/platform/plugins/shared/unified_histogram/public/chart/chart.tsx +++ b/src/platform/plugins/shared/unified_histogram/public/chart/chart.tsx @@ -276,7 +276,7 @@ export function Chart({ const canEditVisualizationOnTheFly = canCustomizeVisualization && chartVisible; const canSaveVisualization = - canEditVisualizationOnTheFly && services.capabilities.dashboard?.showWriteControls; + canEditVisualizationOnTheFly && services.capabilities.dashboard_v2?.showWriteControls; const actions: IconButtonGroupProps['buttons'] = []; diff --git a/src/platform/plugins/shared/unified_search/public/query_string_input/query_bar_menu.test.tsx b/src/platform/plugins/shared/unified_search/public/query_string_input/query_bar_menu.test.tsx index 8ae67375711a7..01c118d9592df 100644 --- a/src/platform/plugins/shared/unified_search/public/query_string_input/query_bar_menu.test.tsx +++ b/src/platform/plugins/shared/unified_search/public/query_string_input/query_bar_menu.test.tsx @@ -77,6 +77,16 @@ describe('Querybar Menu component', () => { }, }; const services = { + application: { + ...startMock.application, + capabilities: { + ...startMock.application.capabilities, + savedQueryManagement: { + showQueries: true, + saveQuery: true, + }, + }, + }, data: dataMock, storage: getStorage(storageValue), uiSettings: startMock.uiSettings, diff --git a/src/platform/plugins/shared/unified_search/public/query_string_input/query_bar_menu_panels.tsx b/src/platform/plugins/shared/unified_search/public/query_string_input/query_bar_menu_panels.tsx index 279e60f031024..d20dc65fa72e6 100644 --- a/src/platform/plugins/shared/unified_search/public/query_string_input/query_bar_menu_panels.tsx +++ b/src/platform/plugins/shared/unified_search/public/query_string_input/query_bar_menu_panels.tsx @@ -217,8 +217,10 @@ export function useQueryBarMenuPanels({ setRenderedComponent, }: QueryBarMenuPanelsProps) { const kibana = useKibana(); - const { appName, usageCollection, uiSettings, http, storage } = kibana.services; + const { appName, usageCollection, uiSettings, http, storage, application } = kibana.services; const reportUiCounter = usageCollection?.reportUiCounter.bind(usageCollection, appName); + const showSavedQueries = + showQueryInput && showFilterBar && application.capabilities.savedQueryManagement?.showQueries; const cancelPendingListingRequest = useRef<() => void>(() => {}); const [hasSavedQueries, setHasSavedQueries] = useState(false); @@ -246,10 +248,10 @@ export function useQueryBarMenuPanels({ setHasSavedQueries(queryCount > 0); }; - if (showQueryInput && showFilterBar) { + if (showSavedQueries) { fetchSavedQueries(); } - }, [savedQueryService, showQueryInput, showFilterBar]); + }, [savedQueryService, showSavedQueries]); useEffect(() => { if (savedQuery) { @@ -430,7 +432,7 @@ export function useQueryBarMenuPanels({ } // saved queries actions are only shown when the showQueryInput and showFilterBar is true - if (showQueryInput && showFilterBar) { + if (showSavedQueries) { items.push(...queryAndFiltersRelatedPanels); } diff --git a/src/platform/plugins/shared/unified_search/public/search_bar/create_search_bar.tsx b/src/platform/plugins/shared/unified_search/public/search_bar/create_search_bar.tsx index 0fc5f85078696..4f78697438dbf 100644 --- a/src/platform/plugins/shared/unified_search/public/search_bar/create_search_bar.tsx +++ b/src/platform/plugins/shared/unified_search/public/search_bar/create_search_bar.tsx @@ -22,7 +22,7 @@ import { useFilterManager } from './lib/use_filter_manager'; import { useTimefilter } from './lib/use_timefilter'; import { useSavedQuery } from './lib/use_saved_query'; import { useQueryStringManager } from './lib/use_query_string_manager'; -import { type SavedQueryMenuVisibility, canShowSavedQuery } from './lib/can_show_saved_query'; +import { canShowSavedQuery } from './lib/can_show_saved_query'; import type { UnifiedSearchPublicPluginStart } from '../types'; export interface StatefulSearchBarDeps { @@ -41,7 +41,12 @@ export type StatefulSearchBarProps = appName: string; useDefaultBehaviors?: boolean; savedQueryId?: string; - saveQueryMenuVisibility?: SavedQueryMenuVisibility; + /** + * Determines if saving queries is allowed within the saved query management popover (still requires privileges). + * This does not impact if queries can be loaded, which is determined by the saved query management read privilege. + * Defaults to false. + */ + allowSavingQueries?: boolean; onSavedQueryIdChange?: (savedQueryId?: string) => void; onFiltersUpdated?: (filters: Filter[]) => void; }; @@ -155,7 +160,7 @@ export function createSearchBar({ // App name should come from the core application service. // Until it's available, we'll ask the user to provide it for the pre-wired component. return (props: StatefulSearchBarProps) => { - const { useDefaultBehaviors } = props; + const { useDefaultBehaviors, allowSavingQueries } = props; // Handle queries const onQuerySubmitRef = useRef(props.onQuerySubmit); @@ -200,7 +205,7 @@ export function createSearchBar({ }, [query, timeRange, useDefaultBehaviors]); const showSaveQuery = canShowSavedQuery({ - saveQueryMenuVisibility: props.saveQueryMenuVisibility, + allowSavingQueries, query, core, }); diff --git a/src/platform/plugins/shared/unified_search/public/search_bar/lib/can_show_saved_query.test.ts b/src/platform/plugins/shared/unified_search/public/search_bar/lib/can_show_saved_query.test.ts index 6f86ed782a93f..9a59849061b48 100644 --- a/src/platform/plugins/shared/unified_search/public/search_bar/lib/can_show_saved_query.test.ts +++ b/src/platform/plugins/shared/unified_search/public/search_bar/lib/can_show_saved_query.test.ts @@ -12,21 +12,21 @@ import { canShowSavedQuery } from './can_show_saved_query'; const core = coreMock.createStart(); -function getCore(saveQueryGloballyAllowed: boolean): typeof core { +function getCore(saveQueryManagementAllowed: boolean): typeof core { return { ...core, application: { ...core.application, capabilities: { ...core.application.capabilities, - savedQueryManagement: { saveQuery: saveQueryGloballyAllowed }, + savedQueryManagement: { saveQuery: saveQueryManagementAllowed }, }, }, }; } -const coreWithoutGlobalPrivilege = getCore(false); -const coreWithGlobalPrivilege = getCore(true); +const coreWithoutSavedQueryManagement = getCore(false); +const coreWithSavedQueryManagement = getCore(true); const kqlQuery = { query: 'response:200', @@ -38,70 +38,41 @@ const esqlQuery = { }; describe('canShowSaveQuery', () => { - it('should allow when allowed_by_app_privilege', async () => { + it('should return false if allowSavingQueries is not true', async () => { expect( canShowSavedQuery({ - core: coreWithoutGlobalPrivilege, + core: coreWithSavedQueryManagement, query: kqlQuery, - saveQueryMenuVisibility: 'allowed_by_app_privilege', }) - ).toBe(true); - }); - - it('should not allow for text-based queries when allowed_by_app_privilege', async () => { - expect( - canShowSavedQuery({ - core: coreWithoutGlobalPrivilege, - query: esqlQuery, - saveQueryMenuVisibility: 'allowed_by_app_privilege', - }) - ).toBe(false); + ); }); - it('should not allow for text-based queries when globally_managed', async () => { + it('should return true with saved query management privilege', async () => { expect( canShowSavedQuery({ - core: coreWithGlobalPrivilege, - query: esqlQuery, - saveQueryMenuVisibility: 'globally_managed', - }) - ).toBe(false); - }); - - it('should allow when globally allowed', async () => { - expect( - canShowSavedQuery({ - core: coreWithGlobalPrivilege, + allowSavingQueries: true, + core: coreWithSavedQueryManagement, query: kqlQuery, - saveQueryMenuVisibility: 'globally_managed', }) ).toBe(true); }); - it('should not allow when globally disallowed', async () => { + it('should return false without saved query management privilege', async () => { expect( canShowSavedQuery({ - core: coreWithoutGlobalPrivilege, + allowSavingQueries: true, + core: coreWithoutSavedQueryManagement, query: kqlQuery, - saveQueryMenuVisibility: 'globally_managed', }) ).toBe(false); }); - it('should not allow when hidden', async () => { + it('should return false for ES|QL queries', async () => { expect( canShowSavedQuery({ - core: coreWithGlobalPrivilege, - query: kqlQuery, - saveQueryMenuVisibility: 'hidden', - }) - ).toBe(false); - - expect( - canShowSavedQuery({ - core: coreWithGlobalPrivilege, - query: kqlQuery, - saveQueryMenuVisibility: undefined, + allowSavingQueries: true, + core: coreWithSavedQueryManagement, + query: esqlQuery, }) ).toBe(false); }); diff --git a/src/platform/plugins/shared/unified_search/public/search_bar/lib/can_show_saved_query.ts b/src/platform/plugins/shared/unified_search/public/search_bar/lib/can_show_saved_query.ts index 34d6feffcfc03..169795140a934 100644 --- a/src/platform/plugins/shared/unified_search/public/search_bar/lib/can_show_saved_query.ts +++ b/src/platform/plugins/shared/unified_search/public/search_bar/lib/can_show_saved_query.ts @@ -11,36 +11,28 @@ import type { AggregateQuery, Query } from '@kbn/es-query'; import type { CoreStart } from '@kbn/core-lifecycle-browser'; import { isOfAggregateQueryType } from '@kbn/es-query'; -export type SavedQueryMenuVisibility = - | 'hidden' - | 'globally_managed' // managed by "Saved Query Management" global privilege - | 'allowed_by_app_privilege'; // use only if your Kibana app grants this privilege, otherwise default to `globally_managed` - +/** + * Determines if saving queries is allowed within the saved query management popover (still requires privileges). + * This does not impact if queries can be loaded, which is determined by the saved query management read privilege. + */ export const canShowSavedQuery = ({ - saveQueryMenuVisibility = 'hidden', + allowSavingQueries = false, query, core, }: { - saveQueryMenuVisibility?: SavedQueryMenuVisibility; + allowSavingQueries?: boolean; query: AggregateQuery | Query | { [key: string]: any }; core: CoreStart; }): boolean => { - // don't show Saved Query menu by default - if (!saveQueryMenuVisibility || saveQueryMenuVisibility === 'hidden') { + // Don't allow saving queries by default + if (!allowSavingQueries) { return false; } - // Saved Queries are not supported for text-based languages (only Saved Searches) + // Saved Queries are not supported for ES|QL (only Saved Searches) if (isOfAggregateQueryType(query)) { return false; } - const isAllowedGlobally = Boolean(core.application.capabilities.savedQueryManagement?.saveQuery); - - // users can allow saving queries globally or grant permission per app - if (saveQueryMenuVisibility === 'allowed_by_app_privilege') { - return true; - } - - return isAllowedGlobally; + return Boolean(core.application.capabilities.savedQueryManagement?.saveQuery); }; diff --git a/src/platform/plugins/shared/unified_search/public/search_bar/search_bar.test.tsx b/src/platform/plugins/shared/unified_search/public/search_bar/search_bar.test.tsx index 89c8dead51eac..869d139db5627 100644 --- a/src/platform/plugins/shared/unified_search/public/search_bar/search_bar.test.tsx +++ b/src/platform/plugins/shared/unified_search/public/search_bar/search_bar.test.tsx @@ -74,6 +74,16 @@ function wrapSearchBarInContext(testProps: any) { (dataViewEditorMock.userPermissions.editDataView as jest.Mock).mockReturnValue(true); const services = { + application: { + ...startMock.application, + capabilities: { + ...startMock.application.capabilities, + savedQueryManagement: { + showQueries: true, + saveQuery: true, + }, + }, + }, uiSettings: startMock.uiSettings, settings: startMock.settings, savedObjects: startMock.savedObjects, diff --git a/src/platform/plugins/shared/visualizations/public/actions/edit_in_lens_action.tsx b/src/platform/plugins/shared/visualizations/public/actions/edit_in_lens_action.tsx index 666a29b7de04f..0a7c235cf0588 100644 --- a/src/platform/plugins/shared/visualizations/public/actions/edit_in_lens_action.tsx +++ b/src/platform/plugins/shared/visualizations/public/actions/edit_in_lens_action.tsx @@ -145,7 +145,7 @@ export class EditInLensAction implements Action { return false; const vis = embeddable.getVis(); - const { visualize } = getCapabilities(); + const { visualize_v2: visualize } = getCapabilities(); if (!vis || !visualize.show) { return false; } diff --git a/src/platform/plugins/shared/visualizations/public/embeddable/initialize_edit_api.ts b/src/platform/plugins/shared/visualizations/public/embeddable/initialize_edit_api.ts index 5884d8d0cd155..0778cebb6c02b 100644 --- a/src/platform/plugins/shared/visualizations/public/embeddable/initialize_edit_api.ts +++ b/src/platform/plugins/shared/visualizations/public/embeddable/initialize_edit_api.ts @@ -77,9 +77,9 @@ export function initializeEditApi({ const isByValue = !savedObjectId$.getValue(); if (isByValue) return Boolean( - capabilities.dashboard?.showWriteControls && capabilities.visualize?.show + capabilities.dashboard_v2?.showWriteControls && capabilities.visualize_v2?.show ); - else return Boolean(capabilities.visualize?.save); + else return Boolean(capabilities.visualize_v2?.save); }, }; } diff --git a/src/platform/plugins/shared/visualizations/public/legacy/embeddable/create_vis_embeddable_from_object.ts b/src/platform/plugins/shared/visualizations/public/legacy/embeddable/create_vis_embeddable_from_object.ts index 774c3851dab3d..8cc3b876e2a67 100644 --- a/src/platform/plugins/shared/visualizations/public/legacy/embeddable/create_vis_embeddable_from_object.ts +++ b/src/platform/plugins/shared/visualizations/public/legacy/embeddable/create_vis_embeddable_from_object.ts @@ -58,9 +58,9 @@ export const createVisEmbeddableFromObject = } const capabilities = { - visualizeSave: Boolean(getCapabilities().visualize.save), - dashboardSave: Boolean(getCapabilities().dashboard?.showWriteControls), - visualizeOpen: Boolean(getCapabilities().visualize?.show), + visualizeSave: Boolean(getCapabilities().visualize_v2.save), + dashboardSave: Boolean(getCapabilities().dashboard_v2?.showWriteControls), + visualizeOpen: Boolean(getCapabilities().visualize_v2?.show), }; return createVisualizeEmbeddableAsync( diff --git a/src/platform/plugins/shared/visualizations/public/plugin.ts b/src/platform/plugins/shared/visualizations/public/plugin.ts index ca4634fdefe93..38f0b4d209bf9 100644 --- a/src/platform/plugins/shared/visualizations/public/plugin.ts +++ b/src/platform/plugins/shared/visualizations/public/plugin.ts @@ -326,8 +326,8 @@ export class VisualizationsPlugin navigation: pluginsStart.navigation, share: pluginsStart.share, toastNotifications: coreStart.notifications.toasts, - visualizeCapabilities: coreStart.application.capabilities.visualize, - dashboardCapabilities: coreStart.application.capabilities.dashboard, + visualizeCapabilities: coreStart.application.capabilities.visualize_v2, + dashboardCapabilities: coreStart.application.capabilities.dashboard_v2, embeddable: pluginsStart.embeddable, stateTransferService: pluginsStart.embeddable.getStateTransfer(), setActiveUrl, diff --git a/src/platform/plugins/shared/visualizations/public/visualize_app/components/visualize_top_nav.tsx b/src/platform/plugins/shared/visualizations/public/visualize_app/components/visualize_top_nav.tsx index cafdb7b106e48..02e07c581b49f 100644 --- a/src/platform/plugins/shared/visualizations/public/visualize_app/components/visualize_top_nav.tsx +++ b/src/platform/plugins/shared/visualizations/public/visualize_app/components/visualize_top_nav.tsx @@ -334,9 +334,7 @@ const TopNav = ({ ] : undefined } - saveQueryMenuVisibility={ - services.visualizeCapabilities.saveQuery ? 'allowed_by_app_privilege' : 'globally_managed' - } + allowSavingQueries dataViewPickerComponentProps={ shouldShowDataViewPicker && vis.data.indexPattern ? { @@ -375,7 +373,6 @@ const TopNav = ({ setMenuMountPoint={setHeaderActionMenu} indexPatterns={indexPatterns} showSearchBar - saveQueryMenuVisibility="hidden" showDatePicker={false} showQueryInput={false} /> diff --git a/src/platform/plugins/shared/visualizations/public/visualize_app/utils/get_top_nav_config.test.tsx b/src/platform/plugins/shared/visualizations/public/visualize_app/utils/get_top_nav_config.test.tsx index ea01b6584c3fb..abf7a8be89bda 100644 --- a/src/platform/plugins/shared/visualizations/public/visualize_app/utils/get_top_nav_config.test.tsx +++ b/src/platform/plugins/shared/visualizations/public/visualize_app/utils/get_top_nav_config.test.tsx @@ -21,7 +21,7 @@ import { createEmbeddableStateTransferMock } from '@kbn/embeddable-plugin/public import { visualizeAppStateStub } from './stubs'; describe('showPublicUrlSwitch', () => { - test('returns false if "visualize" app is not available', () => { + test('returns false if "visualize_v2" app is not available', () => { const anonymousUserCapabilities: Capabilities = { catalogue: {}, management: {}, @@ -32,12 +32,12 @@ describe('showPublicUrlSwitch', () => { expect(result).toBe(false); }); - test('returns false if "visualize" app is not accessible', () => { + test('returns false if "visualize_v2" app is not accessible', () => { const anonymousUserCapabilities: Capabilities = { catalogue: {}, management: {}, navLinks: {}, - visualize: { + visualize_v2: { show: false, }, }; @@ -46,12 +46,12 @@ describe('showPublicUrlSwitch', () => { expect(result).toBe(false); }); - test('returns true if "visualize" app is not available an accessible', () => { + test('returns true if "visualize_v2" app is not available an accessible', () => { const anonymousUserCapabilities: Capabilities = { catalogue: {}, management: {}, navLinks: {}, - visualize: { + visualize_v2: { show: true, }, }; diff --git a/src/platform/plugins/shared/visualizations/public/visualize_app/utils/get_top_nav_config.tsx b/src/platform/plugins/shared/visualizations/public/visualize_app/utils/get_top_nav_config.tsx index 5c5a85fbf06ef..32b223a58c9c1 100644 --- a/src/platform/plugins/shared/visualizations/public/visualize_app/utils/get_top_nav_config.tsx +++ b/src/platform/plugins/shared/visualizations/public/visualize_app/utils/get_top_nav_config.tsx @@ -49,7 +49,6 @@ interface VisualizeCapabilities { createShortUrl: boolean; delete: boolean; save: boolean; - saveQuery: boolean; show: boolean; } @@ -76,9 +75,9 @@ export interface TopNavConfigParams { const SavedObjectSaveModalDashboard = withSuspense(LazySavedObjectSaveModalDashboard); export const showPublicUrlSwitch = (anonymousUserCapabilities: Capabilities) => { - if (!anonymousUserCapabilities.visualize) return false; + if (!anonymousUserCapabilities.visualize_v2) return false; - const visualize = anonymousUserCapabilities.visualize as unknown as VisualizeCapabilities; + const visualize = anonymousUserCapabilities.visualize_v2 as unknown as VisualizeCapabilities; return !!visualize.show; }; diff --git a/src/platform/plugins/shared/visualizations/server/capabilities_provider.ts b/src/platform/plugins/shared/visualizations/server/capabilities_provider.ts index 9ea51f232fd7d..f646528ca88c1 100644 --- a/src/platform/plugins/shared/visualizations/server/capabilities_provider.ts +++ b/src/platform/plugins/shared/visualizations/server/capabilities_provider.ts @@ -8,11 +8,10 @@ */ export const capabilitiesProvider = () => ({ - visualize: { + visualize_v2: { show: true, createShortUrl: true, delete: true, save: true, - saveQuery: true, }, }); diff --git a/src/platform/plugins/shared/visualizations/server/saved_objects/get_in_app_url.test.ts b/src/platform/plugins/shared/visualizations/server/saved_objects/get_in_app_url.test.ts index 5d194f7d871f7..98fd2a05272ba 100644 --- a/src/platform/plugins/shared/visualizations/server/saved_objects/get_in_app_url.test.ts +++ b/src/platform/plugins/shared/visualizations/server/saved_objects/get_in_app_url.test.ts @@ -22,7 +22,7 @@ test('should return visualize edit url', () => { } as unknown as VisualizationSavedObject; expect(getInAppUrl(obj)).toEqual({ path: '/app/visualize#/edit/1', - uiCapabilitiesPath: 'visualize.show', + uiCapabilitiesPath: 'visualize_v2.show', }); }); diff --git a/src/platform/plugins/shared/visualizations/server/saved_objects/get_in_app_url.ts b/src/platform/plugins/shared/visualizations/server/saved_objects/get_in_app_url.ts index 88763aa42be23..4549d014d4c52 100644 --- a/src/platform/plugins/shared/visualizations/server/saved_objects/get_in_app_url.ts +++ b/src/platform/plugins/shared/visualizations/server/saved_objects/get_in_app_url.ts @@ -25,6 +25,6 @@ export function getInAppUrl(obj: VisualizationSavedObject) { ? undefined : { path: `/app/visualize#/edit/${encodeURIComponent(obj.id)}`, - uiCapabilitiesPath: 'visualize.show', + uiCapabilitiesPath: 'visualize_v2.show', }; } diff --git a/test/api_integration/apis/saved_objects_management/find.ts b/test/api_integration/apis/saved_objects_management/find.ts index 5d5c953065eac..ab2a9a004112d 100644 --- a/test/api_integration/apis/saved_objects_management/find.ts +++ b/test/api_integration/apis/saved_objects_management/find.ts @@ -230,7 +230,7 @@ export default function ({ getService }: FtrProviderContext) { hiddenType: false, inAppUrl: { path: '/app/discover#/view/960372e0-3224-11e8-a572-ffca06da1357', - uiCapabilitiesPath: 'discover.show', + uiCapabilitiesPath: 'discover_v2.show', }, namespaceType: 'multiple-isolated', }); @@ -249,7 +249,7 @@ export default function ({ getService }: FtrProviderContext) { hiddenType: false, inAppUrl: { path: '/app/dashboards#/view/b70c7ae0-3224-11e8-a572-ffca06da1357', - uiCapabilitiesPath: 'dashboard.show', + uiCapabilitiesPath: 'dashboard_v2.show', }, namespaceType: 'multiple-isolated', }); @@ -268,7 +268,7 @@ export default function ({ getService }: FtrProviderContext) { hiddenType: false, inAppUrl: { path: '/app/visualize#/edit/a42c0580-3224-11e8-a572-ffca06da1357', - uiCapabilitiesPath: 'visualize.show', + uiCapabilitiesPath: 'visualize_v2.show', }, namespaceType: 'multiple-isolated', }); @@ -278,7 +278,7 @@ export default function ({ getService }: FtrProviderContext) { hiddenType: false, inAppUrl: { path: '/app/visualize#/edit/add810b0-3224-11e8-a572-ffca06da1357', - uiCapabilitiesPath: 'visualize.show', + uiCapabilitiesPath: 'visualize_v2.show', }, namespaceType: 'multiple-isolated', }); diff --git a/test/api_integration/apis/saved_objects_management/relationships.ts b/test/api_integration/apis/saved_objects_management/relationships.ts index 15b7ee51d40af..59a7643632253 100644 --- a/test/api_integration/apis/saved_objects_management/relationships.ts +++ b/test/api_integration/apis/saved_objects_management/relationships.ts @@ -108,7 +108,7 @@ export default function ({ getService }: FtrProviderContext) { icon: 'visualizeApp', inAppUrl: { path: '/app/visualize#/edit/a42c0580-3224-11e8-a572-ffca06da1357', - uiCapabilitiesPath: 'visualize.show', + uiCapabilitiesPath: 'visualize_v2.show', }, namespaceType: 'multiple-isolated', hiddenType: false, @@ -150,7 +150,7 @@ export default function ({ getService }: FtrProviderContext) { title: 'VisualizationFromSavedSearch', inAppUrl: { path: '/app/visualize#/edit/a42c0580-3224-11e8-a572-ffca06da1357', - uiCapabilitiesPath: 'visualize.show', + uiCapabilitiesPath: 'visualize_v2.show', }, namespaceType: 'multiple-isolated', hiddenType: false, @@ -196,7 +196,7 @@ export default function ({ getService }: FtrProviderContext) { title: 'Visualization', inAppUrl: { path: '/app/visualize#/edit/add810b0-3224-11e8-a572-ffca06da1357', - uiCapabilitiesPath: 'visualize.show', + uiCapabilitiesPath: 'visualize_v2.show', }, namespaceType: 'multiple-isolated', hiddenType: false, @@ -211,7 +211,7 @@ export default function ({ getService }: FtrProviderContext) { title: 'VisualizationFromSavedSearch', inAppUrl: { path: '/app/visualize#/edit/a42c0580-3224-11e8-a572-ffca06da1357', - uiCapabilitiesPath: 'visualize.show', + uiCapabilitiesPath: 'visualize_v2.show', }, namespaceType: 'multiple-isolated', hiddenType: false, @@ -235,7 +235,7 @@ export default function ({ getService }: FtrProviderContext) { title: 'Visualization', inAppUrl: { path: '/app/visualize#/edit/add810b0-3224-11e8-a572-ffca06da1357', - uiCapabilitiesPath: 'visualize.show', + uiCapabilitiesPath: 'visualize_v2.show', }, namespaceType: 'multiple-isolated', hiddenType: false, @@ -250,7 +250,7 @@ export default function ({ getService }: FtrProviderContext) { title: 'VisualizationFromSavedSearch', inAppUrl: { path: '/app/visualize#/edit/a42c0580-3224-11e8-a572-ffca06da1357', - uiCapabilitiesPath: 'visualize.show', + uiCapabilitiesPath: 'visualize_v2.show', }, namespaceType: 'multiple-isolated', hiddenType: false, @@ -296,7 +296,7 @@ export default function ({ getService }: FtrProviderContext) { title: 'OneRecord', inAppUrl: { path: '/app/discover#/view/960372e0-3224-11e8-a572-ffca06da1357', - uiCapabilitiesPath: 'discover.show', + uiCapabilitiesPath: 'discover_v2.show', }, namespaceType: 'multiple-isolated', hiddenType: false, @@ -311,7 +311,7 @@ export default function ({ getService }: FtrProviderContext) { title: 'Dashboard', inAppUrl: { path: '/app/dashboards#/view/b70c7ae0-3224-11e8-a572-ffca06da1357', - uiCapabilitiesPath: 'dashboard.show', + uiCapabilitiesPath: 'dashboard_v2.show', }, namespaceType: 'multiple-isolated', hiddenType: false, @@ -337,7 +337,7 @@ export default function ({ getService }: FtrProviderContext) { title: 'OneRecord', inAppUrl: { path: '/app/discover#/view/960372e0-3224-11e8-a572-ffca06da1357', - uiCapabilitiesPath: 'discover.show', + uiCapabilitiesPath: 'discover_v2.show', }, namespaceType: 'multiple-isolated', hiddenType: false, @@ -383,7 +383,7 @@ export default function ({ getService }: FtrProviderContext) { title: 'OneRecord', inAppUrl: { path: '/app/discover#/view/960372e0-3224-11e8-a572-ffca06da1357', - uiCapabilitiesPath: 'discover.show', + uiCapabilitiesPath: 'discover_v2.show', }, namespaceType: 'multiple-isolated', hiddenType: false, @@ -398,7 +398,7 @@ export default function ({ getService }: FtrProviderContext) { title: 'Visualization', inAppUrl: { path: '/app/visualize#/edit/add810b0-3224-11e8-a572-ffca06da1357', - uiCapabilitiesPath: 'visualize.show', + uiCapabilitiesPath: 'visualize_v2.show', }, namespaceType: 'multiple-isolated', hiddenType: false, @@ -424,7 +424,7 @@ export default function ({ getService }: FtrProviderContext) { title: 'OneRecord', inAppUrl: { path: '/app/discover#/view/960372e0-3224-11e8-a572-ffca06da1357', - uiCapabilitiesPath: 'discover.show', + uiCapabilitiesPath: 'discover_v2.show', }, namespaceType: 'multiple-isolated', hiddenType: false, @@ -476,7 +476,7 @@ export default function ({ getService }: FtrProviderContext) { icon: 'visualizeApp', inAppUrl: { path: '/app/visualize#/edit/add810b0-3224-11e8-a572-ffca06da1357', - uiCapabilitiesPath: 'visualize.show', + uiCapabilitiesPath: 'visualize_v2.show', }, namespaceType: 'multiple-isolated', hiddenType: false, diff --git a/test/functional/services/saved_query_management_component.ts b/test/functional/services/saved_query_management_component.ts index 4c476cdb9170e..0fd103cdac17c 100644 --- a/test/functional/services/saved_query_management_component.ts +++ b/test/functional/services/saved_query_management_component.ts @@ -192,6 +192,14 @@ export class SavedQueryManagementComponentService extends FtrService { await this.closeSavedQueryManagementComponent(); } + async savedQueryLoadButtonMissingOrFail() { + await this.retry.try(async () => { + await this.openSavedQueryManagementComponent(); + await this.testSubjects.missingOrFail('saved-query-management-load-button'); + }); + await this.closeSavedQueryManagementComponent(); + } + async openSavedQueryManagementComponent() { const isOpenAlready = await this.testSubjects.exists('queryBarMenuPanel'); if (isOpenAlready) return; @@ -220,11 +228,16 @@ export class SavedQueryManagementComponentService extends FtrService { }); } - async saveNewQueryMissingOrFail() { + async saveNewQueryMissingOrFail(expectedButtonState: 'disabled' | 'hidden' = 'disabled') { await this.openSavedQueryManagementComponent(); - const saveFilterSetBtn = await this.testSubjects.find('saved-query-management-save-button'); - const isDisabled = await saveFilterSetBtn.getAttribute('disabled'); - expect(isDisabled).to.equal('true'); + + if (expectedButtonState === 'disabled') { + const saveFilterSetBtn = await this.testSubjects.find('saved-query-management-save-button'); + const isDisabled = await saveFilterSetBtn.getAttribute('disabled'); + expect(isDisabled).to.equal('true'); + } else { + await this.testSubjects.missingOrFail('saved-query-management-save-button'); + } } async updateCurrentlyLoadedQueryMissingOrFail() { diff --git a/x-pack/platform/plugins/private/data_visualizer/public/application/common/components/field_data_row/action_menu/actions.ts b/x-pack/platform/plugins/private/data_visualizer/public/application/common/components/field_data_row/action_menu/actions.ts index 87c702087e9af..57d26f4c74864 100644 --- a/x-pack/platform/plugins/private/data_visualizer/public/application/common/components/field_data_row/action_menu/actions.ts +++ b/x-pack/platform/plugins/private/data_visualizer/public/application/common/components/field_data_row/action_menu/actions.ts @@ -40,7 +40,7 @@ export function getActions( mlTimefilterRefresh$.next(refresh); }; // Navigate to Lens with prefilled chart for data field - if (services.application?.capabilities?.visualize?.show === true && lensPlugin !== undefined) { + if (services.application?.capabilities?.visualize_v2?.show === true && lensPlugin !== undefined) { const canUseLensEditor = lensPlugin?.canUseEditor(); actions.push({ name: i18n.translate('xpack.dataVisualizer.index.dataGrid.exploreInLensTitle', { @@ -69,7 +69,7 @@ export function getActions( if ( services?.uiActions && mapsPlugin && - services.application?.capabilities?.maps?.show === true + services.application?.capabilities?.maps_v2?.show === true ) { actions.push({ name: i18n.translate('xpack.dataVisualizer.index.dataGrid.exploreInMapsTitle', { diff --git a/x-pack/platform/plugins/private/data_visualizer/public/application/common/components/results_links/results_links.tsx b/x-pack/platform/plugins/private/data_visualizer/public/application/common/components/results_links/results_links.tsx index a48dde6f4fa6b..78f29f75fd6f7 100644 --- a/x-pack/platform/plugins/private/data_visualizer/public/application/common/components/results_links/results_links.tsx +++ b/x-pack/platform/plugins/private/data_visualizer/public/application/common/components/results_links/results_links.tsx @@ -98,7 +98,7 @@ export const ResultsLinks: FC = ({ let unmounted = false; const getDiscoverUrl = async (): Promise => { - const isDiscoverAvailable = capabilities.discover?.show ?? false; + const isDiscoverAvailable = capabilities.discover_v2?.show ?? false; if (!isDiscoverAvailable) return; const discoverLocator = url.locators.get('DISCOVER_APP_LOCATOR'); diff --git a/x-pack/platform/plugins/private/data_visualizer/public/application/index_data_visualizer/components/actions_panel/actions_panel.tsx b/x-pack/platform/plugins/private/data_visualizer/public/application/index_data_visualizer/components/actions_panel/actions_panel.tsx index 525ea4f5877eb..ceb569e7b0049 100644 --- a/x-pack/platform/plugins/private/data_visualizer/public/application/index_data_visualizer/components/actions_panel/actions_panel.tsx +++ b/x-pack/platform/plugins/private/data_visualizer/public/application/index_data_visualizer/components/actions_panel/actions_panel.tsx @@ -56,7 +56,7 @@ export const ActionsPanel: FC = ({ const dataViewId = dataView.id; const dataViewIndexPattern = dataView.getIndexPattern(); const getDiscoverUrl = async (): Promise => { - const isDiscoverAvailable = capabilities.discover?.show ?? false; + const isDiscoverAvailable = capabilities.discover_v2?.show ?? false; if (!isDiscoverAvailable) return; const discoverLocator = url?.locators.get('DISCOVER_APP_LOCATOR'); diff --git a/x-pack/platform/plugins/private/discover_enhanced/public/actions/explore_data/abstract_explore_data_action.ts b/x-pack/platform/plugins/private/discover_enhanced/public/actions/explore_data/abstract_explore_data_action.ts index 143e83589399a..4d4ffca1f471b 100644 --- a/x-pack/platform/plugins/private/discover_enhanced/public/actions/explore_data/abstract_explore_data_action.ts +++ b/x-pack/platform/plugins/private/discover_enhanced/public/actions/explore_data/abstract_explore_data_action.ts @@ -114,7 +114,7 @@ export abstract class AbstractExploreDataAction { const { core, plugins } = this.params.start(); const { capabilities } = core.application; - if (capabilities.discover && !capabilities.discover.show) return false; + if (capabilities.discover_v2 && !capabilities.discover_v2.show) return false; if (!plugins.discover.locator) return false; return shared.hasExactlyOneDataView(embeddable); diff --git a/x-pack/platform/plugins/private/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts b/x-pack/platform/plugins/private/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts index 037cb31afe6e3..e4321915ed86d 100644 --- a/x-pack/platform/plugins/private/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts +++ b/x-pack/platform/plugins/private/discover_enhanced/public/actions/explore_data/explore_data_chart_action.test.ts @@ -177,7 +177,7 @@ describe('"Explore underlying data" panel action', () => { const { action, context, core } = setup(); core.application.capabilities = { ...core.application.capabilities }; - (core.application.capabilities as any).discover = { + (core.application.capabilities as any).discover_v2 = { show: false, }; diff --git a/x-pack/platform/plugins/private/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.test.ts b/x-pack/platform/plugins/private/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.test.ts index 47aba299d65ed..317d9e7144f61 100644 --- a/x-pack/platform/plugins/private/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.test.ts +++ b/x-pack/platform/plugins/private/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.test.ts @@ -165,7 +165,7 @@ describe('"Explore underlying data" panel action', () => { const { action, context, core } = setup(); core.application.capabilities = { ...core.application.capabilities }; - (core.application.capabilities as any).discover = { + (core.application.capabilities as any).discover_v2 = { show: false, }; diff --git a/x-pack/platform/plugins/private/monitoring/public/components/logs/logs.test.tsx b/x-pack/platform/plugins/private/monitoring/public/components/logs/logs.test.tsx index f103288a24980..c4454020f37b6 100644 --- a/x-pack/platform/plugins/private/monitoring/public/components/logs/logs.test.tsx +++ b/x-pack/platform/plugins/private/monitoring/public/components/logs/logs.test.tsx @@ -14,7 +14,7 @@ jest.mock('../../legacy_shims', () => ({ Legacy: { shims: { getBasePath: () => '', - capabilities: { discover: { show: true } }, + capabilities: { discover_v2: { show: true } }, }, }, })); diff --git a/x-pack/platform/plugins/private/monitoring/public/components/logs/logs.tsx b/x-pack/platform/plugins/private/monitoring/public/components/logs/logs.tsx index b17129d90eac0..010b9bdf76dd9 100644 --- a/x-pack/platform/plugins/private/monitoring/public/components/logs/logs.tsx +++ b/x-pack/platform/plugins/private/monitoring/public/components/logs/logs.tsx @@ -209,7 +209,7 @@ export class LogsContent extends PureComponent { renderCallout() { const { capabilities: uiCapabilities, kibanaServices } = Legacy.shims; - const show = uiCapabilities.discover && uiCapabilities.discover.show; + const show = uiCapabilities.discover_v2 && uiCapabilities.discover_v2.show; const { logs: { enabled }, diff --git a/x-pack/platform/plugins/private/transform/public/app/sections/create_transform/components/step_create/step_create_form.tsx b/x-pack/platform/plugins/private/transform/public/app/sections/create_transform/components/step_create/step_create_form.tsx index 61694124d1a89..bc855a1c36620 100644 --- a/x-pack/platform/plugins/private/transform/public/app/sections/create_transform/components/step_create/step_create_form.tsx +++ b/x-pack/platform/plugins/private/transform/public/app/sections/create_transform/components/step_create/step_create_form.tsx @@ -85,7 +85,7 @@ export const StepCreateForm: FC = React.memo( const toastNotifications = useToastNotifications(); const { application, share, ...startServices } = useAppDependencies(); - const isDiscoverAvailable = application.capabilities.discover?.show ?? false; + const isDiscoverAvailable = application.capabilities.discover_v2?.show ?? false; useEffect(() => { let unmounted = false; diff --git a/x-pack/platform/plugins/private/transform/public/app/sections/transform_management/components/action_discover/use_action_discover.tsx b/x-pack/platform/plugins/private/transform/public/app/sections/transform_management/components/action_discover/use_action_discover.tsx index ca78630a6730e..c6937e2f19d42 100644 --- a/x-pack/platform/plugins/private/transform/public/app/sections/transform_management/components/action_discover/use_action_discover.tsx +++ b/x-pack/platform/plugins/private/transform/public/app/sections/transform_management/components/action_discover/use_action_discover.tsx @@ -25,7 +25,7 @@ export const useDiscoverAction = (forceDisable: boolean) => { share, application: { capabilities }, } = useAppDependencies(); - const isDiscoverAvailable = !!capabilities.discover?.show; + const isDiscoverAvailable = !!capabilities.discover_v2?.show; const { data: dataViewsTitleIdMap } = useGetDataViewsTitleIdMap(); diff --git a/x-pack/platform/plugins/private/translations/translations/fr-FR.json b/x-pack/platform/plugins/private/translations/translations/fr-FR.json index 501e239b0095c..c595800be16e7 100644 --- a/x-pack/platform/plugins/private/translations/translations/fr-FR.json +++ b/x-pack/platform/plugins/private/translations/translations/fr-FR.json @@ -17459,11 +17459,9 @@ "xpack.exploratoryView.ux.addDataButtonLabel": "Ajouter des données d'expérience utilisateur", "xpack.exploratoryView.uxLabel": "Expérience utilisateur (RUM)", "xpack.features.advancedSettingsFeatureName": "Paramètres avancés", - "xpack.features.dashboardFeatureName": "Dashboard", "xpack.features.dataViewFeatureName": "Gestion de la vue de données", "xpack.features.devToolsFeatureName": "Outils de développement", "xpack.features.devToolsPrivilegesTooltip": "L'utilisateur doit également recevoir les privilèges de cluster et d'index Elasticsearch appropriés.", - "xpack.features.discoverFeatureName": "Discover", "xpack.features.filesManagementFeatureName": "Gestion des fichiers", "xpack.features.filesSharedImagesFeatureName": "Images partagées", "xpack.features.filesSharedImagesPrivilegesTooltip": "Requis pour accéder aux images stockées dans Kibana.", @@ -17484,7 +17482,6 @@ "xpack.features.savedObjectsManagementFeatureName": "Gestion des objets enregistrés", "xpack.features.savedQueryManagementFeatureName": "Gestion des requêtes enregistrées", "xpack.features.savedQueryManagementTooltip": "Si \"All\" (Tout) est défini, les requêtes enregistrées peuvent être gérées grâce à Kibana dans toutes les applications compatibles. Si \"None\" est défini, les privilèges relatifs aux requêtes enregistrées sont fixés indépendamment pour chaque application.", - "xpack.features.visualizeFeatureName": "Bibliothèque Visualize", "xpack.fileUpload.dataViewAlreadyExistsErrorMessage": "La vue de données existe déjà.", "xpack.fileUpload.fileSizeError": "La taille du fichier {fileSize} dépasse la taille maximale de fichier de {maxFileSize}", "xpack.fileUpload.fileTypeError": "Le fichier ne fait pas partie des types acceptables :{types}", @@ -24966,7 +24963,6 @@ "xpack.maps.esSearch.topHitsSizeMsg": "Affichage des {topHitsSize} premiers documents par entité.", "xpack.maps.feature.appDescription": "Explorez les données géospatiales d'Elasticsearch et de l'Elastic Maps Service.", "xpack.maps.featureCatalogue.mapsSubtitle": "Tracez les données géographiques.", - "xpack.maps.featureRegistry.mapsFeatureName": "Maps", "xpack.maps.fields.percentileMedianLabek": "médiane", "xpack.maps.fileUpload.trimmedResultsMsg": "Résultats limités à {numFeatures} fonctionnalités, {previewCoverage} % du fichier.", "xpack.maps.fileUploadWizard.configureDocumentLayerLabel": "Ajouter comme calque du document", diff --git a/x-pack/platform/plugins/private/translations/translations/ja-JP.json b/x-pack/platform/plugins/private/translations/translations/ja-JP.json index 18025161122ab..864b40b95889b 100644 --- a/x-pack/platform/plugins/private/translations/translations/ja-JP.json +++ b/x-pack/platform/plugins/private/translations/translations/ja-JP.json @@ -17318,11 +17318,9 @@ "xpack.exploratoryView.ux.addDataButtonLabel": "UXデータを追加", "xpack.exploratoryView.uxLabel": "ユーザーエクスペリエンス(RUM)", "xpack.features.advancedSettingsFeatureName": "高度な設定", - "xpack.features.dashboardFeatureName": "ダッシュボード", "xpack.features.dataViewFeatureName": "データビュー管理", "xpack.features.devToolsFeatureName": "開発ツール", "xpack.features.devToolsPrivilegesTooltip": "また、ユーザーに適切な Elasticsearch クラスターとインデックスの権限が与えられている必要があります。", - "xpack.features.discoverFeatureName": "Discover", "xpack.features.filesManagementFeatureName": "ファイル管理", "xpack.features.filesSharedImagesFeatureName": "共有画像", "xpack.features.filesSharedImagesPrivilegesTooltip": "Kibanaで保存された画像にアクセスする必要があります。", @@ -17343,7 +17341,6 @@ "xpack.features.savedObjectsManagementFeatureName": "保存されたオブジェクトの管理", "xpack.features.savedQueryManagementFeatureName": "保存されたクエリー管理", "xpack.features.savedQueryManagementTooltip": "[すべて]に設定すると、保存されたクエリーは、クエリーをサポートするすべてのアプリケーションのKibana全体で管理できます。[なし]に設定すると、保存されたクエリー権限は各アプリケーションで独自に決定されます。", - "xpack.features.visualizeFeatureName": "Visualizeライブラリ", "xpack.fileUpload.dataViewAlreadyExistsErrorMessage": "データビューはすでに存在します。", "xpack.fileUpload.fileSizeError": "ファイルサイズ{fileSize}は最大ファイルサイズの{maxFileSize}を超えています", "xpack.fileUpload.fileTypeError": "ファイルは使用可能なタイプのいずれかではありません。{types}", @@ -24832,7 +24829,6 @@ "xpack.maps.esSearch.topHitsSizeMsg": "エンティティごとに上位の{topHitsSize}ドキュメントを表示しています。", "xpack.maps.feature.appDescription": "ElasticsearchとElastic Maps Serviceの地理空間データを閲覧します。", "xpack.maps.featureCatalogue.mapsSubtitle": "地理的なデータをプロットします。", - "xpack.maps.featureRegistry.mapsFeatureName": "マップ", "xpack.maps.fields.percentileMedianLabek": "中間", "xpack.maps.fileUpload.trimmedResultsMsg": "結果は{numFeatures}個の特徴量に制限されます。これはファイルの{previewCoverage}%です。", "xpack.maps.fileUploadWizard.configureDocumentLayerLabel": "ドキュメントレイヤーとして追加", diff --git a/x-pack/platform/plugins/private/translations/translations/zh-CN.json b/x-pack/platform/plugins/private/translations/translations/zh-CN.json index fe24125547127..03d42d3589f5c 100644 --- a/x-pack/platform/plugins/private/translations/translations/zh-CN.json +++ b/x-pack/platform/plugins/private/translations/translations/zh-CN.json @@ -17040,11 +17040,9 @@ "xpack.exploratoryView.ux.addDataButtonLabel": "添加 UX 数据", "xpack.exploratoryView.uxLabel": "用户体验 (RUM)", "xpack.features.advancedSettingsFeatureName": "高级设置", - "xpack.features.dashboardFeatureName": "仪表板", "xpack.features.dataViewFeatureName": "数据视图管理", "xpack.features.devToolsFeatureName": "开发工具", "xpack.features.devToolsPrivilegesTooltip": "还应向用户授予适当的 Elasticsearch 集群和索引权限", - "xpack.features.discoverFeatureName": "Discover", "xpack.features.filesManagementFeatureName": "文件管理", "xpack.features.filesSharedImagesFeatureName": "共享图像", "xpack.features.filesSharedImagesPrivilegesTooltip": "访问存储在 Kibana 中的图像时需要此项。", @@ -17065,7 +17063,6 @@ "xpack.features.savedObjectsManagementFeatureName": "已保存对象管理", "xpack.features.savedQueryManagementFeatureName": "已保存查询管理", "xpack.features.savedQueryManagementTooltip": "如果设置为'全部',可以在支持已保存查询的所有应用程序中管理整个 Kibana 中的已保存查询。如果设置为'无',将由每个应用程序单独确定已保存查询权限。", - "xpack.features.visualizeFeatureName": "Visualize 库", "xpack.fileUpload.dataViewAlreadyExistsErrorMessage": "数据视图已存在。", "xpack.fileUpload.fileSizeError": "文件大小 {fileSize} 超过最大文件大小 {maxFileSize}", "xpack.fileUpload.fileTypeError": "文件不是可接受类型之一:{types}", @@ -24409,7 +24406,6 @@ "xpack.maps.esSearch.topHitsSizeMsg": "显示每个实体排名前 {topHitsSize} 的文档。", "xpack.maps.feature.appDescription": "从 Elasticsearch 和 Elastic Maps Service 浏览地理空间数据。", "xpack.maps.featureCatalogue.mapsSubtitle": "绘制地理数据。", - "xpack.maps.featureRegistry.mapsFeatureName": "Maps", "xpack.maps.fields.percentileMedianLabek": "中值", "xpack.maps.fileUpload.trimmedResultsMsg": "结果仅限于 {numFeatures} 个特征、{previewCoverage}% 的文件。", "xpack.maps.fileUploadWizard.configureDocumentLayerLabel": "添加为文档层", diff --git a/x-pack/platform/plugins/shared/aiops/public/components/change_point_detection/fields_config.tsx b/x-pack/platform/plugins/shared/aiops/public/components/change_point_detection/fields_config.tsx index 226eb6fbbc2fc..d548c8d10d747 100644 --- a/x-pack/platform/plugins/shared/aiops/public/components/change_point_detection/fields_config.tsx +++ b/x-pack/platform/plugins/shared/aiops/public/components/change_point_detection/fields_config.tsx @@ -188,7 +188,7 @@ const FieldPanel: FC = ({ const [isActionMenuOpen, setIsActionMenuOpen] = useState(false); const [isDashboardFormValid, setIsDashboardFormValid] = useState(true); - const canEditDashboards = capabilities.dashboard?.createNew ?? false; + const canEditDashboards = capabilities.dashboard_v2?.createNew ?? false; const { create: canCreateCase, update: canUpdateCase } = cases?.helpers?.canUseCases() ?? { create: false, update: false, diff --git a/x-pack/platform/plugins/shared/aiops/public/components/log_categorization/attachments_menu.tsx b/x-pack/platform/plugins/shared/aiops/public/components/log_categorization/attachments_menu.tsx index a82e1a4b087ed..cf68d19622f63 100644 --- a/x-pack/platform/plugins/shared/aiops/public/components/log_categorization/attachments_menu.tsx +++ b/x-pack/platform/plugins/shared/aiops/public/components/log_categorization/attachments_menu.tsx @@ -74,7 +74,7 @@ export const AttachmentsMenu = ({ const timeRange = useTimeRangeUpdates(); - const canEditDashboards = capabilities.dashboard.createNew; + const canEditDashboards = capabilities.dashboard_v2.createNew; const onSave: SaveModalDashboardProps['onSave'] = useCallback( ({ dashboardId, newTitle, newDescription }) => { diff --git a/x-pack/platform/plugins/shared/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_attachments_menu.tsx b/x-pack/platform/plugins/shared/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_attachments_menu.tsx index def6721c2adb3..9db40a6d7b4e4 100644 --- a/x-pack/platform/plugins/shared/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_attachments_menu.tsx +++ b/x-pack/platform/plugins/shared/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_attachments_menu.tsx @@ -66,7 +66,7 @@ export const LogRateAnalysisAttachmentsMenu = ({ CASES_TOAST_MESSAGES_TITLES.LOG_RATE_ANALYSIS ); - const canEditDashboards = capabilities.dashboard.createNew; + const canEditDashboards = capabilities.dashboard_v2.createNew; const { create: canCreateCase, update: canUpdateCase } = cases?.helpers?.canUseCases() ?? { create: false, diff --git a/x-pack/platform/plugins/shared/aiops/public/components/log_rate_analysis_results_table/use_view_in_discover_action.tsx b/x-pack/platform/plugins/shared/aiops/public/components/log_rate_analysis_results_table/use_view_in_discover_action.tsx index a9a030ecd16b8..0d3ef084b0cc0 100644 --- a/x-pack/platform/plugins/shared/aiops/public/components/log_rate_analysis_results_table/use_view_in_discover_action.tsx +++ b/x-pack/platform/plugins/shared/aiops/public/components/log_rate_analysis_results_table/use_view_in_discover_action.tsx @@ -38,7 +38,7 @@ export const useViewInDiscoverAction = (dataViewId?: string): TableItemAction => const { timeRange } = useFilterQueryUpdates(); const discoverUrlError = useMemo(() => { - if (!application.capabilities.discover?.show) { + if (!application.capabilities.discover_v2?.show) { const discoverNotEnabled = i18n.translate( 'xpack.aiops.logRateAnalysis.resultsTable.discoverNotEnabledErrorMessage', { @@ -68,7 +68,7 @@ export const useViewInDiscoverAction = (dataViewId?: string): TableItemAction => return autoGeneratedDiscoverLinkError; } - }, [application.capabilities.discover?.show, dataViewId, discoverLocator]); + }, [application.capabilities.discover_v2?.show, dataViewId, discoverLocator]); const generateDiscoverUrl = async (groupTableItem: GroupTableItem | SignificantItem) => { if (discoverLocator !== undefined) { diff --git a/x-pack/platform/plugins/shared/cases/public/common/lib/kibana/hooks.ts b/x-pack/platform/plugins/shared/cases/public/common/lib/kibana/hooks.ts index 6a309111ceddb..509fdc53d738d 100644 --- a/x-pack/platform/plugins/shared/cases/public/common/lib/kibana/hooks.ts +++ b/x-pack/platform/plugins/shared/cases/public/common/lib/kibana/hooks.ts @@ -196,19 +196,22 @@ export const useApplicationCapabilities = (): UseApplicationCapabilities => { reopenCase: permissions.reopenCase, createComment: permissions.createComment, }, - visualize: { crud: !!capabilities.visualize?.save, read: !!capabilities.visualize?.show }, + visualize: { + crud: !!capabilities.visualize_v2?.save, + read: !!capabilities.visualize_v2?.show, + }, dashboard: { - crud: !!capabilities.dashboard?.createNew, - read: !!capabilities.dashboard?.show, + crud: !!capabilities.dashboard_v2?.createNew, + read: !!capabilities.dashboard_v2?.show, }, }), [ capabilities.actions?.save, capabilities.actions?.show, - capabilities.dashboard?.createNew, - capabilities.dashboard?.show, - capabilities.visualize?.save, - capabilities.visualize?.show, + capabilities.dashboard_v2?.createNew, + capabilities.dashboard_v2?.show, + capabilities.visualize_v2?.save, + capabilities.visualize_v2?.show, permissions.all, permissions.create, permissions.read, diff --git a/x-pack/platform/plugins/shared/cases/public/common/lib/kibana/kibana_react.mock.tsx b/x-pack/platform/plugins/shared/cases/public/common/lib/kibana/kibana_react.mock.tsx index e644c9604d495..c026b33de8297 100644 --- a/x-pack/platform/plugins/shared/cases/public/common/lib/kibana/kibana_react.mock.tsx +++ b/x-pack/platform/plugins/shared/cases/public/common/lib/kibana/kibana_react.mock.tsx @@ -94,8 +94,8 @@ export const createStartServicesMock = ({ license }: StartServiceArgs = {}): Sta case_reopen: true, create_comment: true, }, - visualize: { save: true, show: true }, - dashboard: { show: true, createNew: true }, + visualize_v2: { save: true, show: true }, + dashboard_v2: { show: true, createNew: true }, }; return services; diff --git a/x-pack/platform/plugins/shared/features/server/__snapshots__/oss_features.test.ts.snap b/x-pack/platform/plugins/shared/features/server/__snapshots__/oss_features.test.ts.snap index cc32fa26b475d..45029ec5d7860 100644 --- a/x-pack/platform/plugins/shared/features/server/__snapshots__/oss_features.test.ts.snap +++ b/x-pack/platform/plugins/shared/features/server/__snapshots__/oss_features.test.ts.snap @@ -4,6 +4,83 @@ exports[`buildOSSFeatures returns features excluding reporting subfeatures 1`] = Array [ Object { "id": "discover", + "subFeatures": Array [ + Object { + "name": "Short URLs", + "privilegeGroups": Array [ + Object { + "groupType": "independent", + "privileges": Array [ + Object { + "id": "url_create", + "includeIn": "all", + "name": "Create Short URLs", + "replacedBy": Array [ + Object { + "feature": "discover_v2", + "privileges": Array [ + "url_create", + ], + }, + ], + "savedObject": Object { + "all": Array [ + "url", + ], + "read": Array [], + }, + "ui": Array [ + "createShortUrl", + ], + }, + ], + }, + ], + }, + Object { + "name": "Store Search Sessions", + "privilegeGroups": Array [ + Object { + "groupType": "independent", + "privileges": Array [ + Object { + "api": Array [ + "store_search_session", + ], + "id": "store_search_session", + "includeIn": "all", + "management": Object { + "kibana": Array [ + "search_sessions", + ], + }, + "name": "Store Search Sessions", + "replacedBy": Array [ + Object { + "feature": "discover_v2", + "privileges": Array [ + "store_search_session", + ], + }, + ], + "savedObject": Object { + "all": Array [ + "search-session", + ], + "read": Array [], + }, + "ui": Array [ + "storeSearchSession", + ], + }, + ], + }, + ], + }, + ], + }, + Object { + "id": "discover_v2", "subFeatures": Array [ Object { "name": "Short URLs", @@ -65,6 +142,43 @@ Array [ }, Object { "id": "visualize", + "subFeatures": Array [ + Object { + "name": "Short URLs", + "privilegeGroups": Array [ + Object { + "groupType": "independent", + "privileges": Array [ + Object { + "id": "url_create", + "includeIn": "all", + "name": "Create Short URLs", + "replacedBy": Array [ + Object { + "feature": "visualize_v2", + "privileges": Array [ + "url_create", + ], + }, + ], + "savedObject": Object { + "all": Array [ + "url", + ], + "read": Array [], + }, + "ui": Array [ + "createShortUrl", + ], + }, + ], + }, + ], + }, + ], + }, + Object { + "id": "visualize_v2", "subFeatures": Array [ Object { "name": "Short URLs", @@ -94,6 +208,83 @@ Array [ }, Object { "id": "dashboard", + "subFeatures": Array [ + Object { + "name": "Short URLs", + "privilegeGroups": Array [ + Object { + "groupType": "independent", + "privileges": Array [ + Object { + "id": "url_create", + "includeIn": "all", + "name": "Create Short URLs", + "replacedBy": Array [ + Object { + "feature": "dashboard_v2", + "privileges": Array [ + "url_create", + ], + }, + ], + "savedObject": Object { + "all": Array [ + "url", + ], + "read": Array [], + }, + "ui": Array [ + "createShortUrl", + ], + }, + ], + }, + ], + }, + Object { + "name": "Store Search Sessions", + "privilegeGroups": Array [ + Object { + "groupType": "independent", + "privileges": Array [ + Object { + "api": Array [ + "store_search_session", + ], + "id": "store_search_session", + "includeIn": "all", + "management": Object { + "kibana": Array [ + "search_sessions", + ], + }, + "name": "Store Search Sessions", + "replacedBy": Array [ + Object { + "feature": "dashboard_v2", + "privileges": Array [ + "store_search_session", + ], + }, + ], + "savedObject": Object { + "all": Array [ + "search-session", + ], + "read": Array [], + }, + "ui": Array [ + "storeSearchSession", + ], + }, + ], + }, + ], + }, + ], + }, + Object { + "id": "dashboard_v2", "subFeatures": Array [ Object { "name": "Short URLs", @@ -199,6 +390,14 @@ Array [ "id": "url_create", "includeIn": "all", "name": "Create Short URLs", + "replacedBy": Array [ + Object { + "feature": "discover_v2", + "privileges": Array [ + "url_create", + ], + }, + ], "savedObject": Object { "all": Array [ "url", @@ -231,6 +430,14 @@ Array [ ], }, "name": "Store Search Sessions", + "replacedBy": Array [ + Object { + "feature": "discover_v2", + "privileges": Array [ + "store_search_session", + ], + }, + ], "savedObject": Object { "all": Array [ "search-session", @@ -263,6 +470,14 @@ Array [ ], }, "name": "Generate CSV reports", + "replacedBy": Array [ + Object { + "feature": "discover_v2", + "privileges": Array [ + "generate_report", + ], + }, + ], "savedObject": Object { "all": Array [], "read": Array [], @@ -278,7 +493,7 @@ Array [ ], }, Object { - "id": "visualize", + "id": "discover_v2", "subFeatures": Array [ Object { "name": "Short URLs", @@ -304,6 +519,38 @@ Array [ }, ], }, + Object { + "name": "Store Search Sessions", + "privilegeGroups": Array [ + Object { + "groupType": "independent", + "privileges": Array [ + Object { + "api": Array [ + "store_search_session", + ], + "id": "store_search_session", + "includeIn": "all", + "management": Object { + "kibana": Array [ + "search_sessions", + ], + }, + "name": "Store Search Sessions", + "savedObject": Object { + "all": Array [ + "search-session", + ], + "read": Array [], + }, + "ui": Array [ + "storeSearchSession", + ], + }, + ], + }, + ], + }, Object { "name": "Reporting", "privilegeGroups": Array [ @@ -321,14 +568,13 @@ Array [ "reporting", ], }, - "minimumLicense": "gold", - "name": "Generate PDF or PNG reports", + "name": "Generate CSV reports", "savedObject": Object { "all": Array [], "read": Array [], }, "ui": Array [ - "generateScreenshot", + "generateCsv", ], }, ], @@ -338,7 +584,7 @@ Array [ ], }, Object { - "id": "dashboard", + "id": "visualize", "subFeatures": Array [ Object { "name": "Short URLs", @@ -350,6 +596,14 @@ Array [ "id": "url_create", "includeIn": "all", "name": "Create Short URLs", + "replacedBy": Array [ + Object { + "feature": "visualize_v2", + "privileges": Array [ + "url_create", + ], + }, + ], "savedObject": Object { "all": Array [ "url", @@ -365,31 +619,303 @@ Array [ ], }, Object { - "name": "Store Search Sessions", + "name": "Reporting", "privilegeGroups": Array [ Object { "groupType": "independent", "privileges": Array [ Object { "api": Array [ - "store_search_session", + "generateReport", ], - "id": "store_search_session", + "id": "generate_report", "includeIn": "all", "management": Object { - "kibana": Array [ - "search_sessions", + "insightsAndAlerting": Array [ + "reporting", ], }, - "name": "Store Search Sessions", + "minimumLicense": "gold", + "name": "Generate PDF or PNG reports", + "replacedBy": Array [ + Object { + "feature": "visualize_v2", + "privileges": Array [ + "generate_report", + ], + }, + ], + "savedObject": Object { + "all": Array [], + "read": Array [], + }, + "ui": Array [ + "generateScreenshot", + ], + }, + ], + }, + ], + }, + ], + }, + Object { + "id": "visualize_v2", + "subFeatures": Array [ + Object { + "name": "Short URLs", + "privilegeGroups": Array [ + Object { + "groupType": "independent", + "privileges": Array [ + Object { + "id": "url_create", + "includeIn": "all", + "name": "Create Short URLs", "savedObject": Object { "all": Array [ - "search-session", + "url", ], "read": Array [], }, "ui": Array [ - "storeSearchSession", + "createShortUrl", + ], + }, + ], + }, + ], + }, + Object { + "name": "Reporting", + "privilegeGroups": Array [ + Object { + "groupType": "independent", + "privileges": Array [ + Object { + "api": Array [ + "generateReport", + ], + "id": "generate_report", + "includeIn": "all", + "management": Object { + "insightsAndAlerting": Array [ + "reporting", + ], + }, + "minimumLicense": "gold", + "name": "Generate PDF or PNG reports", + "savedObject": Object { + "all": Array [], + "read": Array [], + }, + "ui": Array [ + "generateScreenshot", + ], + }, + ], + }, + ], + }, + ], + }, + Object { + "id": "dashboard", + "subFeatures": Array [ + Object { + "name": "Short URLs", + "privilegeGroups": Array [ + Object { + "groupType": "independent", + "privileges": Array [ + Object { + "id": "url_create", + "includeIn": "all", + "name": "Create Short URLs", + "replacedBy": Array [ + Object { + "feature": "dashboard_v2", + "privileges": Array [ + "url_create", + ], + }, + ], + "savedObject": Object { + "all": Array [ + "url", + ], + "read": Array [], + }, + "ui": Array [ + "createShortUrl", + ], + }, + ], + }, + ], + }, + Object { + "name": "Store Search Sessions", + "privilegeGroups": Array [ + Object { + "groupType": "independent", + "privileges": Array [ + Object { + "api": Array [ + "store_search_session", + ], + "id": "store_search_session", + "includeIn": "all", + "management": Object { + "kibana": Array [ + "search_sessions", + ], + }, + "name": "Store Search Sessions", + "replacedBy": Array [ + Object { + "feature": "dashboard_v2", + "privileges": Array [ + "store_search_session", + ], + }, + ], + "savedObject": Object { + "all": Array [ + "search-session", + ], + "read": Array [], + }, + "ui": Array [ + "storeSearchSession", + ], + }, + ], + }, + ], + }, + Object { + "name": "Reporting", + "privilegeGroups": Array [ + Object { + "groupType": "independent", + "privileges": Array [ + Object { + "api": Array [ + "generateReport", + ], + "id": "generate_report", + "includeIn": "all", + "management": Object { + "insightsAndAlerting": Array [ + "reporting", + ], + }, + "minimumLicense": "gold", + "name": "Generate PDF or PNG reports", + "replacedBy": Array [ + Object { + "feature": "dashboard_v2", + "privileges": Array [ + "generate_report", + ], + }, + ], + "savedObject": Object { + "all": Array [], + "read": Array [], + }, + "ui": Array [ + "generateScreenshot", + ], + }, + Object { + "api": Array [ + "downloadCsv", + ], + "id": "download_csv_report", + "includeIn": "all", + "management": Object { + "insightsAndAlerting": Array [ + "reporting", + ], + }, + "name": "Generate CSV reports from Discover session panels", + "replacedBy": Array [ + Object { + "feature": "dashboard_v2", + "privileges": Array [ + "download_csv_report", + ], + }, + ], + "savedObject": Object { + "all": Array [], + "read": Array [], + }, + "ui": Array [ + "downloadCsv", + ], + }, + ], + }, + ], + }, + ], + }, + Object { + "id": "dashboard_v2", + "subFeatures": Array [ + Object { + "name": "Short URLs", + "privilegeGroups": Array [ + Object { + "groupType": "independent", + "privileges": Array [ + Object { + "id": "url_create", + "includeIn": "all", + "name": "Create Short URLs", + "savedObject": Object { + "all": Array [ + "url", + ], + "read": Array [], + }, + "ui": Array [ + "createShortUrl", + ], + }, + ], + }, + ], + }, + Object { + "name": "Store Search Sessions", + "privilegeGroups": Array [ + Object { + "groupType": "independent", + "privileges": Array [ + Object { + "api": Array [ + "store_search_session", + ], + "id": "store_search_session", + "includeIn": "all", + "management": Object { + "kibana": Array [ + "search_sessions", + ], + }, + "name": "Store Search Sessions", + "savedObject": Object { + "all": Array [ + "search-session", + ], + "read": Array [], + }, + "ui": Array [ + "storeSearchSession", ], }, ], @@ -575,6 +1101,36 @@ Array [ "search_sessions", ], }, + "replacedBy": Object { + "default": Array [ + Object { + "feature": "dashboard_v2", + "privileges": Array [ + "all", + ], + }, + Object { + "feature": "savedQueryManagement", + "privileges": Array [ + "all", + ], + }, + ], + "minimal": Array [ + Object { + "feature": "dashboard_v2", + "privileges": Array [ + "minimal_all", + ], + }, + Object { + "feature": "savedQueryManagement", + "privileges": Array [ + "minimal_all", + ], + }, + ], + }, "savedObject": Object { "all": Array [ "dashboard", @@ -618,6 +1174,36 @@ Array [ "catalogue": Array [ "dashboard", ], + "replacedBy": Object { + "default": Array [ + Object { + "feature": "dashboard_v2", + "privileges": Array [ + "read", + ], + }, + Object { + "feature": "savedQueryManagement", + "privileges": Array [ + "read", + ], + }, + ], + "minimal": Array [ + Object { + "feature": "dashboard_v2", + "privileges": Array [ + "minimal_read", + ], + }, + Object { + "feature": "savedQueryManagement", + "privileges": Array [ + "minimal_read", + ], + }, + ], + }, "savedObject": Object { "all": Array [], "read": Array [ @@ -629,8 +1215,8 @@ Array [ "links", "map", "dashboard", - "query", "tag", + "query", ], }, "ui": Array [ @@ -642,23 +1228,128 @@ Array [ ] `; -exports[`buildOSSFeatures with a basic license returns the dev_tools feature augmented with appropriate sub feature privileges 1`] = ` +exports[`buildOSSFeatures with a basic license returns the dashboard_v2 feature augmented with appropriate sub feature privileges 1`] = ` Array [ Object { "privilege": Object { + "alerting": Object { + "alert": Object { + "all": Array [], + "read": Array [], + }, + "rule": Object { + "all": Array [], + "read": Array [], + }, + }, "api": Array [ - "console", + "bulkGetUserProfiles", + "dashboardUsageStats", + "store_search_session", ], "app": Array [ - "dev_tools", + "dashboards", "kibana", ], - "catalogue": Array [ - "console", - "searchprofiler", - "grokdebugger", - ], - "savedObject": Object { + "cases": Object { + "all": Array [], + "create": Array [], + "createComment": Array [], + "delete": Array [], + "push": Array [], + "read": Array [], + "reopenCase": Array [], + "settings": Array [], + "update": Array [], + }, + "catalogue": Array [ + "dashboard", + ], + "management": Object { + "kibana": Array [ + "search_sessions", + ], + }, + "savedObject": Object { + "all": Array [ + "dashboard", + "url", + "search-session", + ], + "read": Array [ + "index-pattern", + "search", + "visualization", + "canvas-workpad", + "lens", + "links", + "map", + "tag", + ], + }, + "ui": Array [ + "createNew", + "show", + "showWriteControls", + "createShortUrl", + "storeSearchSession", + ], + }, + "privilegeId": "all", + }, + Object { + "privilege": Object { + "api": Array [ + "bulkGetUserProfiles", + "dashboardUsageStats", + ], + "app": Array [ + "dashboards", + "kibana", + ], + "catalogue": Array [ + "dashboard", + ], + "savedObject": Object { + "all": Array [], + "read": Array [ + "index-pattern", + "search", + "visualization", + "canvas-workpad", + "lens", + "links", + "map", + "dashboard", + "tag", + ], + }, + "ui": Array [ + "show", + ], + }, + "privilegeId": "read", + }, +] +`; + +exports[`buildOSSFeatures with a basic license returns the dev_tools feature augmented with appropriate sub feature privileges 1`] = ` +Array [ + Object { + "privilege": Object { + "api": Array [ + "console", + ], + "app": Array [ + "dev_tools", + "kibana", + ], + "catalogue": Array [ + "console", + "searchprofiler", + "grokdebugger", + ], + "savedObject": Object { "all": Array [], "read": Array [], }, @@ -739,6 +1430,36 @@ Array [ "search_sessions", ], }, + "replacedBy": Object { + "default": Array [ + Object { + "feature": "discover_v2", + "privileges": Array [ + "all", + ], + }, + Object { + "feature": "savedQueryManagement", + "privileges": Array [ + "all", + ], + }, + ], + "minimal": Array [ + Object { + "feature": "discover_v2", + "privileges": Array [ + "minimal_all", + ], + }, + Object { + "feature": "savedQueryManagement", + "privileges": Array [ + "minimal_all", + ], + }, + ], + }, "savedObject": Object { "all": Array [ "search", @@ -772,6 +1493,36 @@ Array [ "catalogue": Array [ "discover", ], + "replacedBy": Object { + "default": Array [ + Object { + "feature": "discover_v2", + "privileges": Array [ + "read", + ], + }, + Object { + "feature": "savedQueryManagement", + "privileges": Array [ + "read", + ], + }, + ], + "minimal": Array [ + Object { + "feature": "discover_v2", + "privileges": Array [ + "minimal_read", + ], + }, + Object { + "feature": "savedQueryManagement", + "privileges": Array [ + "minimal_read", + ], + }, + ], + }, "savedObject": Object { "all": Array [], "read": Array [ @@ -789,6 +1540,92 @@ Array [ ] `; +exports[`buildOSSFeatures with a basic license returns the discover_v2 feature augmented with appropriate sub feature privileges 1`] = ` +Array [ + Object { + "privilege": Object { + "alerting": Object { + "alert": Object { + "all": Array [], + "read": Array [], + }, + "rule": Object { + "all": Array [], + "read": Array [], + }, + }, + "api": Array [ + "fileUpload:analyzeFile", + "store_search_session", + ], + "app": Array [ + "discover", + "kibana", + ], + "cases": Object { + "all": Array [], + "create": Array [], + "createComment": Array [], + "delete": Array [], + "push": Array [], + "read": Array [], + "reopenCase": Array [], + "settings": Array [], + "update": Array [], + }, + "catalogue": Array [ + "discover", + ], + "management": Object { + "kibana": Array [ + "search_sessions", + ], + }, + "savedObject": Object { + "all": Array [ + "search", + "url", + "search-session", + ], + "read": Array [ + "index-pattern", + ], + }, + "ui": Array [ + "show", + "save", + "createShortUrl", + "storeSearchSession", + ], + }, + "privilegeId": "all", + }, + Object { + "privilege": Object { + "api": Array [], + "app": Array [ + "discover", + "kibana", + ], + "catalogue": Array [ + "discover", + ], + "savedObject": Object { + "all": Array [], + "read": Array [ + "index-pattern", + "search", + ], + }, + "ui": Array [ + "show", + ], + }, + "privilegeId": "read", + }, +] +`; + exports[`buildOSSFeatures with a basic license returns the filesManagement feature augmented with appropriate sub feature privileges 1`] = ` Array [ Object { @@ -1027,6 +1864,7 @@ Array [ "read": Array [], }, "ui": Array [ + "showQueries", "saveQuery", ], }, @@ -1043,7 +1881,9 @@ Array [ "query", ], }, - "ui": Array [], + "ui": Array [ + "showQueries", + ], }, "privilegeId": "read", }, @@ -1088,11 +1928,41 @@ Array [ "visualize", ], "management": Object {}, + "replacedBy": Object { + "default": Array [ + Object { + "feature": "visualize_v2", + "privileges": Array [ + "all", + ], + }, + Object { + "feature": "savedQueryManagement", + "privileges": Array [ + "all", + ], + }, + ], + "minimal": Array [ + Object { + "feature": "visualize_v2", + "privileges": Array [ + "minimal_all", + ], + }, + Object { + "feature": "savedQueryManagement", + "privileges": Array [ + "minimal_all", + ], + }, + ], + }, "savedObject": Object { "all": Array [ "visualization", - "query", "lens", + "query", "url", ], "read": Array [ @@ -1124,13 +1994,129 @@ Array [ "catalogue": Array [ "visualize", ], + "replacedBy": Object { + "default": Array [ + Object { + "feature": "visualize_v2", + "privileges": Array [ + "read", + ], + }, + Object { + "feature": "savedQueryManagement", + "privileges": Array [ + "read", + ], + }, + ], + "minimal": Array [ + Object { + "feature": "visualize_v2", + "privileges": Array [ + "minimal_read", + ], + }, + Object { + "feature": "savedQueryManagement", + "privileges": Array [ + "minimal_read", + ], + }, + ], + }, "savedObject": Object { "all": Array [], "read": Array [ "index-pattern", "search", "visualization", + "lens", + "tag", "query", + ], + }, + "ui": Array [ + "show", + ], + }, + "privilegeId": "read", + }, +] +`; + +exports[`buildOSSFeatures with a basic license returns the visualize_v2 feature augmented with appropriate sub feature privileges 1`] = ` +Array [ + Object { + "privilege": Object { + "alerting": Object { + "alert": Object { + "all": Array [], + "read": Array [], + }, + "rule": Object { + "all": Array [], + "read": Array [], + }, + }, + "api": Array [], + "app": Array [ + "visualize", + "lens", + "kibana", + ], + "cases": Object { + "all": Array [], + "create": Array [], + "createComment": Array [], + "delete": Array [], + "push": Array [], + "read": Array [], + "reopenCase": Array [], + "settings": Array [], + "update": Array [], + }, + "catalogue": Array [ + "visualize", + ], + "management": Object {}, + "savedObject": Object { + "all": Array [ + "visualization", + "lens", + "url", + ], + "read": Array [ + "index-pattern", + "search", + "tag", + ], + }, + "ui": Array [ + "show", + "delete", + "save", + "createShortUrl", + ], + }, + "privilegeId": "all", + }, + Object { + "privilege": Object { + "api": Array [], + "app": Array [ + "visualize", + "lens", + "kibana", + ], + "catalogue": Array [ + "visualize", + ], + "savedObject": Object { + "all": Array [], + "read": Array [ + "index-pattern", + "search", + "visualization", "lens", "tag", ], @@ -1195,7 +2181,178 @@ Array [ ] `; -exports[`buildOSSFeatures with a enterprise license returns the dashboard feature augmented with appropriate sub feature privileges 1`] = ` +exports[`buildOSSFeatures with a enterprise license returns the dashboard feature augmented with appropriate sub feature privileges 1`] = ` +Array [ + Object { + "privilege": Object { + "alerting": Object { + "alert": Object { + "all": Array [], + "read": Array [], + }, + "rule": Object { + "all": Array [], + "read": Array [], + }, + }, + "api": Array [ + "bulkGetUserProfiles", + "dashboardUsageStats", + "savedQuery:manage", + "savedQuery:read", + "store_search_session", + ], + "app": Array [ + "dashboards", + "kibana", + ], + "cases": Object { + "all": Array [], + "create": Array [], + "createComment": Array [], + "delete": Array [], + "push": Array [], + "read": Array [], + "reopenCase": Array [], + "settings": Array [], + "update": Array [], + }, + "catalogue": Array [ + "dashboard", + ], + "management": Object { + "kibana": Array [ + "search_sessions", + ], + }, + "replacedBy": Object { + "default": Array [ + Object { + "feature": "dashboard_v2", + "privileges": Array [ + "all", + ], + }, + Object { + "feature": "savedQueryManagement", + "privileges": Array [ + "all", + ], + }, + ], + "minimal": Array [ + Object { + "feature": "dashboard_v2", + "privileges": Array [ + "minimal_all", + ], + }, + Object { + "feature": "savedQueryManagement", + "privileges": Array [ + "minimal_all", + ], + }, + ], + }, + "savedObject": Object { + "all": Array [ + "dashboard", + "query", + "url", + "search-session", + ], + "read": Array [ + "index-pattern", + "search", + "visualization", + "canvas-workpad", + "lens", + "links", + "map", + "tag", + ], + }, + "ui": Array [ + "createNew", + "show", + "showWriteControls", + "saveQuery", + "createShortUrl", + "storeSearchSession", + ], + }, + "privilegeId": "all", + }, + Object { + "privilege": Object { + "api": Array [ + "bulkGetUserProfiles", + "dashboardUsageStats", + "savedQuery:read", + ], + "app": Array [ + "dashboards", + "kibana", + ], + "catalogue": Array [ + "dashboard", + ], + "replacedBy": Object { + "default": Array [ + Object { + "feature": "dashboard_v2", + "privileges": Array [ + "read", + ], + }, + Object { + "feature": "savedQueryManagement", + "privileges": Array [ + "read", + ], + }, + ], + "minimal": Array [ + Object { + "feature": "dashboard_v2", + "privileges": Array [ + "minimal_read", + ], + }, + Object { + "feature": "savedQueryManagement", + "privileges": Array [ + "minimal_read", + ], + }, + ], + }, + "savedObject": Object { + "all": Array [], + "read": Array [ + "index-pattern", + "search", + "visualization", + "canvas-workpad", + "lens", + "links", + "map", + "dashboard", + "tag", + "query", + ], + }, + "ui": Array [ + "show", + ], + }, + "privilegeId": "read", + }, +] +`; + +exports[`buildOSSFeatures with a enterprise license returns the dashboard_v2 feature augmented with appropriate sub feature privileges 1`] = ` Array [ Object { "privilege": Object { @@ -1212,8 +2369,6 @@ Array [ "api": Array [ "bulkGetUserProfiles", "dashboardUsageStats", - "savedQuery:manage", - "savedQuery:read", "store_search_session", ], "app": Array [ @@ -1242,7 +2397,6 @@ Array [ "savedObject": Object { "all": Array [ "dashboard", - "query", "url", "search-session", ], @@ -1261,7 +2415,6 @@ Array [ "createNew", "show", "showWriteControls", - "saveQuery", "createShortUrl", "storeSearchSession", ], @@ -1273,7 +2426,6 @@ Array [ "api": Array [ "bulkGetUserProfiles", "dashboardUsageStats", - "savedQuery:read", ], "app": Array [ "dashboards", @@ -1293,7 +2445,6 @@ Array [ "links", "map", "dashboard", - "query", "tag", ], }, @@ -1403,6 +2554,36 @@ Array [ "search_sessions", ], }, + "replacedBy": Object { + "default": Array [ + Object { + "feature": "discover_v2", + "privileges": Array [ + "all", + ], + }, + Object { + "feature": "savedQueryManagement", + "privileges": Array [ + "all", + ], + }, + ], + "minimal": Array [ + Object { + "feature": "discover_v2", + "privileges": Array [ + "minimal_all", + ], + }, + Object { + "feature": "savedQueryManagement", + "privileges": Array [ + "minimal_all", + ], + }, + ], + }, "savedObject": Object { "all": Array [ "search", @@ -1436,6 +2617,36 @@ Array [ "catalogue": Array [ "discover", ], + "replacedBy": Object { + "default": Array [ + Object { + "feature": "discover_v2", + "privileges": Array [ + "read", + ], + }, + Object { + "feature": "savedQueryManagement", + "privileges": Array [ + "read", + ], + }, + ], + "minimal": Array [ + Object { + "feature": "discover_v2", + "privileges": Array [ + "minimal_read", + ], + }, + Object { + "feature": "savedQueryManagement", + "privileges": Array [ + "minimal_read", + ], + }, + ], + }, "savedObject": Object { "all": Array [], "read": Array [ @@ -1453,6 +2664,92 @@ Array [ ] `; +exports[`buildOSSFeatures with a enterprise license returns the discover_v2 feature augmented with appropriate sub feature privileges 1`] = ` +Array [ + Object { + "privilege": Object { + "alerting": Object { + "alert": Object { + "all": Array [], + "read": Array [], + }, + "rule": Object { + "all": Array [], + "read": Array [], + }, + }, + "api": Array [ + "fileUpload:analyzeFile", + "store_search_session", + ], + "app": Array [ + "discover", + "kibana", + ], + "cases": Object { + "all": Array [], + "create": Array [], + "createComment": Array [], + "delete": Array [], + "push": Array [], + "read": Array [], + "reopenCase": Array [], + "settings": Array [], + "update": Array [], + }, + "catalogue": Array [ + "discover", + ], + "management": Object { + "kibana": Array [ + "search_sessions", + ], + }, + "savedObject": Object { + "all": Array [ + "search", + "url", + "search-session", + ], + "read": Array [ + "index-pattern", + ], + }, + "ui": Array [ + "show", + "save", + "createShortUrl", + "storeSearchSession", + ], + }, + "privilegeId": "all", + }, + Object { + "privilege": Object { + "api": Array [], + "app": Array [ + "discover", + "kibana", + ], + "catalogue": Array [ + "discover", + ], + "savedObject": Object { + "all": Array [], + "read": Array [ + "index-pattern", + "search", + ], + }, + "ui": Array [ + "show", + ], + }, + "privilegeId": "read", + }, +] +`; + exports[`buildOSSFeatures with a enterprise license returns the filesManagement feature augmented with appropriate sub feature privileges 1`] = ` Array [ Object { @@ -1691,6 +2988,7 @@ Array [ "read": Array [], }, "ui": Array [ + "showQueries", "saveQuery", ], }, @@ -1707,7 +3005,9 @@ Array [ "query", ], }, - "ui": Array [], + "ui": Array [ + "showQueries", + ], }, "privilegeId": "read", }, @@ -1752,11 +3052,41 @@ Array [ "visualize", ], "management": Object {}, + "replacedBy": Object { + "default": Array [ + Object { + "feature": "visualize_v2", + "privileges": Array [ + "all", + ], + }, + Object { + "feature": "savedQueryManagement", + "privileges": Array [ + "all", + ], + }, + ], + "minimal": Array [ + Object { + "feature": "visualize_v2", + "privileges": Array [ + "minimal_all", + ], + }, + Object { + "feature": "savedQueryManagement", + "privileges": Array [ + "minimal_all", + ], + }, + ], + }, "savedObject": Object { "all": Array [ "visualization", - "query", "lens", + "query", "url", ], "read": Array [ @@ -1788,13 +3118,129 @@ Array [ "catalogue": Array [ "visualize", ], + "replacedBy": Object { + "default": Array [ + Object { + "feature": "visualize_v2", + "privileges": Array [ + "read", + ], + }, + Object { + "feature": "savedQueryManagement", + "privileges": Array [ + "read", + ], + }, + ], + "minimal": Array [ + Object { + "feature": "visualize_v2", + "privileges": Array [ + "minimal_read", + ], + }, + Object { + "feature": "savedQueryManagement", + "privileges": Array [ + "minimal_read", + ], + }, + ], + }, "savedObject": Object { "all": Array [], "read": Array [ "index-pattern", "search", "visualization", + "lens", + "tag", "query", + ], + }, + "ui": Array [ + "show", + ], + }, + "privilegeId": "read", + }, +] +`; + +exports[`buildOSSFeatures with a enterprise license returns the visualize_v2 feature augmented with appropriate sub feature privileges 1`] = ` +Array [ + Object { + "privilege": Object { + "alerting": Object { + "alert": Object { + "all": Array [], + "read": Array [], + }, + "rule": Object { + "all": Array [], + "read": Array [], + }, + }, + "api": Array [], + "app": Array [ + "visualize", + "lens", + "kibana", + ], + "cases": Object { + "all": Array [], + "create": Array [], + "createComment": Array [], + "delete": Array [], + "push": Array [], + "read": Array [], + "reopenCase": Array [], + "settings": Array [], + "update": Array [], + }, + "catalogue": Array [ + "visualize", + ], + "management": Object {}, + "savedObject": Object { + "all": Array [ + "visualization", + "lens", + "url", + ], + "read": Array [ + "index-pattern", + "search", + "tag", + ], + }, + "ui": Array [ + "show", + "delete", + "save", + "createShortUrl", + ], + }, + "privilegeId": "all", + }, + Object { + "privilege": Object { + "api": Array [], + "app": Array [ + "visualize", + "lens", + "kibana", + ], + "catalogue": Array [ + "visualize", + ], + "savedObject": Object { + "all": Array [], + "read": Array [ + "index-pattern", + "search", + "visualization", "lens", "tag", ], diff --git a/x-pack/platform/plugins/shared/features/server/feature_registry.ts b/x-pack/platform/plugins/shared/features/server/feature_registry.ts index d801af9b97304..8e2de38ecbfe5 100644 --- a/x-pack/platform/plugins/shared/features/server/feature_registry.ts +++ b/x-pack/platform/plugins/shared/features/server/feature_registry.ts @@ -269,7 +269,8 @@ export class FeatureRegistry { ); } - if (referencedPrivilege.disabled) { + // Enabled privileges cannot be replaced with disabled ones. + if (referencedPrivilege.disabled && !privilege.disabled) { throw new Error( `Cannot replace privilege "${privilegeId}" of deprecated feature "${feature.id}" with disabled privilege "${privilegeReference}" of feature "${featureReference.feature}".` ); diff --git a/x-pack/platform/plugins/shared/features/server/oss_features.ts b/x-pack/platform/plugins/shared/features/server/oss_features.ts index d0596a59ca507..d1556f2993b0c 100644 --- a/x-pack/platform/plugins/shared/features/server/oss_features.ts +++ b/x-pack/platform/plugins/shared/features/server/oss_features.ts @@ -21,291 +21,58 @@ export const buildOSSFeatures = ({ }: BuildOSSFeaturesParams): KibanaFeatureConfig[] => { return [ { - id: 'discover', - name: i18n.translate('xpack.features.discoverFeatureName', { - defaultMessage: 'Discover', - }), - management: { - kibana: ['search_sessions'], - ...(includeReporting ? { insightsAndAlerting: ['reporting'] } : {}), + deprecated: { + notice: i18n.translate('xpack.features.discoverFeatureDeprecationNotice', { + defaultMessage: + 'The Discover V1 privilege has been deprecated and replaced with a Discover V2 privilege in order to improve saved query management. See {link} for more details.', + values: { link: 'https://github.com/elastic/kibana/pull/202863' }, + }), + replacedBy: ['discover_v2'], }, + id: 'discover', order: 100, - category: DEFAULT_APP_CATEGORIES.kibana, - scope: [KibanaFeatureScope.Spaces, KibanaFeatureScope.Security], - app: ['discover', 'kibana'], - catalogue: ['discover'], - privileges: { - all: { - app: ['discover', 'kibana'], - api: ['fileUpload:analyzeFile', 'savedQuery:manage', 'savedQuery:read'], - catalogue: ['discover'], - savedObject: { - all: ['search', 'query'], - read: ['index-pattern'], - }, - ui: ['show', 'save', 'saveQuery'], - }, - read: { - app: ['discover', 'kibana'], - catalogue: ['discover'], - savedObject: { - all: [], - read: ['index-pattern', 'search', 'query'], - }, - ui: ['show'], - api: ['savedQuery:read'], - }, - }, - subFeatures: [ - { - name: i18n.translate('xpack.features.ossFeatures.discoverShortUrlSubFeatureName', { - defaultMessage: 'Short URLs', - }), - privilegeGroups: [ - { - groupType: 'independent', - privileges: [ - { - id: 'url_create', - name: i18n.translate( - 'xpack.features.ossFeatures.discoverCreateShortUrlPrivilegeName', - { - defaultMessage: 'Create Short URLs', - } - ), - includeIn: 'all', - savedObject: { - all: ['url'], - read: [], - }, - ui: ['createShortUrl'], - }, - ], - }, - ], - }, - { - name: i18n.translate('xpack.features.ossFeatures.discoverSearchSessionsFeatureName', { - defaultMessage: 'Store Search Sessions', - }), - privilegeGroups: [ - { - groupType: 'independent', - privileges: [ - { - id: 'store_search_session', - name: i18n.translate( - 'xpack.features.ossFeatures.discoverStoreSearchSessionsPrivilegeName', - { - defaultMessage: 'Store Search Sessions', - } - ), - includeIn: 'all', - savedObject: { - all: ['search-session'], - read: [], - }, - ui: ['storeSearchSession'], - management: { - kibana: ['search_sessions'], - }, - api: ['store_search_session'], - }, - ], - }, - ], - }, - ...(includeReporting ? [reportingFeatures.discoverReporting] : []), - ], + ...getBaseDiscoverFeature({ includeReporting, version: 'v1' }), }, { - id: 'visualize', - name: i18n.translate('xpack.features.visualizeFeatureName', { - defaultMessage: 'Visualize Library', - }), - management: { - ...(includeReporting ? { insightsAndAlerting: ['reporting'] } : {}), + id: 'discover_v2', + order: 101, + ...getBaseDiscoverFeature({ includeReporting, version: 'v2' }), + }, + { + deprecated: { + notice: i18n.translate('xpack.features.visualizeFeatureDeprecationNotice', { + defaultMessage: + 'The Visualize Library V1 privilege has been deprecated and replaced with a Visualize Library V2 privilege in order to improve saved query management. See {link} for more details.', + values: { link: 'https://github.com/elastic/kibana/pull/202863' }, + }), + replacedBy: ['visualize_v2'], }, + id: 'visualize', order: 700, - category: DEFAULT_APP_CATEGORIES.kibana, - scope: [KibanaFeatureScope.Spaces, KibanaFeatureScope.Security], - app: ['visualize', 'lens', 'kibana'], - catalogue: ['visualize'], - privileges: { - all: { - app: ['visualize', 'lens', 'kibana'], - catalogue: ['visualize'], - savedObject: { - all: ['visualization', 'query', 'lens'], - read: ['index-pattern', 'search', 'tag'], - }, - ui: ['show', 'delete', 'save', 'saveQuery'], - api: ['savedQuery:manage', 'savedQuery:read'], - }, - read: { - app: ['visualize', 'lens', 'kibana'], - catalogue: ['visualize'], - savedObject: { - all: [], - read: ['index-pattern', 'search', 'visualization', 'query', 'lens', 'tag'], - }, - ui: ['show'], - api: ['savedQuery:read'], - }, - }, - subFeatures: [ - { - name: i18n.translate('xpack.features.ossFeatures.visualizeShortUrlSubFeatureName', { - defaultMessage: 'Short URLs', - }), - privilegeGroups: [ - { - groupType: 'independent', - privileges: [ - { - id: 'url_create', - name: i18n.translate( - 'xpack.features.ossFeatures.visualizeCreateShortUrlPrivilegeName', - { - defaultMessage: 'Create Short URLs', - } - ), - includeIn: 'all', - savedObject: { - all: ['url'], - read: [], - }, - ui: ['createShortUrl'], - }, - ], - }, - ], - }, - ...(includeReporting ? [reportingFeatures.visualizeReporting] : []), - ], + ...getBaseVisualizeFeature({ includeReporting, version: 'v1' }), }, { - id: 'dashboard', - name: i18n.translate('xpack.features.dashboardFeatureName', { - defaultMessage: 'Dashboard', - }), - management: { - kibana: ['search_sessions'], - ...(includeReporting ? { insightsAndAlerting: ['reporting'] } : {}), + id: 'visualize_v2', + order: 701, + ...getBaseVisualizeFeature({ includeReporting, version: 'v2' }), + }, + { + deprecated: { + notice: i18n.translate('xpack.features.dashboardFeatureDeprecationNotice', { + defaultMessage: + 'The Dashboard V1 privilege has been deprecated and replaced with a Dashboard V2 privilege in order to improve saved query management. See {link} for more details.', + values: { link: 'https://github.com/elastic/kibana/pull/202863' }, + }), + replacedBy: ['dashboard_v2'], }, + id: 'dashboard', order: 200, - category: DEFAULT_APP_CATEGORIES.kibana, - scope: [KibanaFeatureScope.Spaces, KibanaFeatureScope.Security], - app: ['dashboards', 'kibana'], - catalogue: ['dashboard'], - privileges: { - all: { - app: ['dashboards', 'kibana'], - catalogue: ['dashboard'], - savedObject: { - all: ['dashboard', 'query'], - read: [ - 'index-pattern', - 'search', - 'visualization', - 'canvas-workpad', - 'lens', - 'links', - 'map', - 'tag', - ], - }, - ui: ['createNew', 'show', 'showWriteControls', 'saveQuery'], - api: [ - 'bulkGetUserProfiles', - 'dashboardUsageStats', - 'savedQuery:manage', - 'savedQuery:read', - ], - }, - read: { - app: ['dashboards', 'kibana'], - catalogue: ['dashboard'], - savedObject: { - all: [], - read: [ - 'index-pattern', - 'search', - 'visualization', - 'canvas-workpad', - 'lens', - 'links', - 'map', - 'dashboard', - 'query', - 'tag', - ], - }, - ui: ['show'], - api: ['bulkGetUserProfiles', 'dashboardUsageStats', 'savedQuery:read'], - }, - }, - subFeatures: [ - { - name: i18n.translate('xpack.features.ossFeatures.dashboardShortUrlSubFeatureName', { - defaultMessage: 'Short URLs', - }), - privilegeGroups: [ - { - groupType: 'independent', - privileges: [ - { - id: 'url_create', - name: i18n.translate( - 'xpack.features.ossFeatures.dashboardCreateShortUrlPrivilegeName', - { - defaultMessage: 'Create Short URLs', - } - ), - includeIn: 'all', - savedObject: { - all: ['url'], - read: [], - }, - ui: ['createShortUrl'], - }, - ], - }, - ], - }, - { - name: i18n.translate('xpack.features.ossFeatures.dashboardSearchSessionsFeatureName', { - defaultMessage: 'Store Search Sessions', - }), - privilegeGroups: [ - { - groupType: 'independent', - privileges: [ - { - id: 'store_search_session', - name: i18n.translate( - 'xpack.features.ossFeatures.dashboardStoreSearchSessionsPrivilegeName', - { - defaultMessage: 'Store Search Sessions', - } - ), - includeIn: 'all', - savedObject: { - all: ['search-session'], - read: [], - }, - ui: ['storeSearchSession'], - management: { - kibana: ['search_sessions'], - }, - api: ['store_search_session'], - }, - ], - }, - ], - }, - ...(includeReporting ? [reportingFeatures.dashboardReporting] : []), - ], + ...getBaseDashboardFeature({ includeReporting, version: 'v1' }), + }, + { + id: 'dashboard_v2', + order: 201, + ...getBaseDashboardFeature({ includeReporting, version: 'v2' }), }, { id: 'dev_tools', @@ -552,8 +319,7 @@ export const buildOSSFeatures = ({ app: ['kibana'], catalogue: [], privilegesTooltip: i18n.translate('xpack.features.savedQueryManagementTooltip', { - defaultMessage: - 'If set to "All", saved queries can be managed across Kibana in all applications that support them. Otherwise, saved query privileges will be determined independently by each application.', + defaultMessage: 'Controls access to saved queries across Kibana', }), privileges: { all: { @@ -563,7 +329,7 @@ export const buildOSSFeatures = ({ all: ['query'], read: [], }, - ui: ['saveQuery'], + ui: ['showQueries', 'saveQuery'], api: ['savedQuery:manage', 'savedQuery:read'], }, read: { @@ -571,7 +337,7 @@ export const buildOSSFeatures = ({ all: [], read: ['query'], }, - ui: [], + ui: ['showQueries'], api: ['savedQuery:read'], }, }, @@ -579,6 +345,437 @@ export const buildOSSFeatures = ({ ]; }; +const getBaseDiscoverFeature = ({ + includeReporting, + version, +}: { + includeReporting: boolean; + version: 'v1' | 'v2'; +}): Omit => { + const apiAllPrivileges = ['fileUpload:analyzeFile']; + const savedObjectAllPrivileges = ['search']; + const uiAllPrivileges = ['show', 'save']; + const apiReadPrivileges = []; + const savedObjectReadPrivileges = ['index-pattern', 'search']; + + if (version === 'v1') { + apiAllPrivileges.push('savedQuery:manage', 'savedQuery:read'); + savedObjectAllPrivileges.push('query'); + uiAllPrivileges.push('saveQuery'); + apiReadPrivileges.push('savedQuery:read'); + savedObjectReadPrivileges.push('query'); + } + + return { + name: i18n.translate('xpack.features.discoverFeatureName', { + defaultMessage: 'Discover', + }), + management: { + kibana: ['search_sessions'], + ...(includeReporting ? { insightsAndAlerting: ['reporting'] } : {}), + }, + category: DEFAULT_APP_CATEGORIES.kibana, + scope: [KibanaFeatureScope.Spaces, KibanaFeatureScope.Security], + app: ['discover', 'kibana'], + catalogue: ['discover'], + privileges: { + all: { + app: ['discover', 'kibana'], + api: apiAllPrivileges, + catalogue: ['discover'], + savedObject: { + all: savedObjectAllPrivileges, + read: ['index-pattern'], + }, + ui: uiAllPrivileges, + ...(version === 'v1' && { + replacedBy: { + default: [ + { feature: 'discover_v2', privileges: ['all'] }, + { feature: 'savedQueryManagement', privileges: ['all'] }, + ], + minimal: [ + { feature: 'discover_v2', privileges: ['minimal_all'] }, + { feature: 'savedQueryManagement', privileges: ['minimal_all'] }, + ], + }, + }), + }, + read: { + app: ['discover', 'kibana'], + api: apiReadPrivileges, + catalogue: ['discover'], + savedObject: { + all: [], + read: savedObjectReadPrivileges, + }, + ui: ['show'], + ...(version === 'v1' && { + replacedBy: { + default: [ + { feature: 'discover_v2', privileges: ['read'] }, + { feature: 'savedQueryManagement', privileges: ['read'] }, + ], + minimal: [ + { feature: 'discover_v2', privileges: ['minimal_read'] }, + { feature: 'savedQueryManagement', privileges: ['minimal_read'] }, + ], + }, + }), + }, + }, + subFeatures: [ + { + name: i18n.translate('xpack.features.ossFeatures.discoverShortUrlSubFeatureName', { + defaultMessage: 'Short URLs', + }), + privilegeGroups: [ + { + groupType: 'independent', + privileges: [ + { + id: 'url_create', + name: i18n.translate( + 'xpack.features.ossFeatures.discoverCreateShortUrlPrivilegeName', + { + defaultMessage: 'Create Short URLs', + } + ), + includeIn: 'all', + savedObject: { + all: ['url'], + read: [], + }, + ui: ['createShortUrl'], + ...(version === 'v1' && { + replacedBy: [{ feature: 'discover_v2', privileges: ['url_create'] }], + }), + }, + ], + }, + ], + }, + { + name: i18n.translate('xpack.features.ossFeatures.discoverSearchSessionsFeatureName', { + defaultMessage: 'Store Search Sessions', + }), + privilegeGroups: [ + { + groupType: 'independent', + privileges: [ + { + id: 'store_search_session', + name: i18n.translate( + 'xpack.features.ossFeatures.discoverStoreSearchSessionsPrivilegeName', + { + defaultMessage: 'Store Search Sessions', + } + ), + includeIn: 'all', + savedObject: { + all: ['search-session'], + read: [], + }, + ui: ['storeSearchSession'], + management: { + kibana: ['search_sessions'], + }, + api: ['store_search_session'], + ...(version === 'v1' && { + replacedBy: [{ feature: 'discover_v2', privileges: ['store_search_session'] }], + }), + }, + ], + }, + ], + }, + ...(includeReporting ? [reportingFeatures.getDiscoverReporting(version)] : []), + ], + }; +}; + +const getBaseVisualizeFeature = ({ + includeReporting, + version, +}: { + includeReporting: boolean; + version: 'v1' | 'v2'; +}): Omit => { + const apiAllPrivileges = []; + const savedObjectAllPrivileges = ['visualization', 'lens']; + const uiAllPrivileges = ['show', 'delete', 'save']; + const apiReadPrivileges = []; + const savedObjectReadPrivileges = ['index-pattern', 'search', 'visualization', 'lens', 'tag']; + + if (version === 'v1') { + apiAllPrivileges.push('savedQuery:manage', 'savedQuery:read'); + savedObjectAllPrivileges.push('query'); + uiAllPrivileges.push('saveQuery'); + apiReadPrivileges.push('savedQuery:read'); + savedObjectReadPrivileges.push('query'); + } + + return { + name: i18n.translate('xpack.features.visualizeFeatureName', { + defaultMessage: 'Visualize Library', + }), + management: { + ...(includeReporting ? { insightsAndAlerting: ['reporting'] } : {}), + }, + category: DEFAULT_APP_CATEGORIES.kibana, + scope: [KibanaFeatureScope.Spaces, KibanaFeatureScope.Security], + app: ['visualize', 'lens', 'kibana'], + catalogue: ['visualize'], + privileges: { + all: { + app: ['visualize', 'lens', 'kibana'], + api: apiAllPrivileges, + catalogue: ['visualize'], + savedObject: { + all: savedObjectAllPrivileges, + read: ['index-pattern', 'search', 'tag'], + }, + ui: uiAllPrivileges, + ...(version === 'v1' && { + replacedBy: { + default: [ + { feature: 'visualize_v2', privileges: ['all'] }, + { feature: 'savedQueryManagement', privileges: ['all'] }, + ], + minimal: [ + { feature: 'visualize_v2', privileges: ['minimal_all'] }, + { feature: 'savedQueryManagement', privileges: ['minimal_all'] }, + ], + }, + }), + }, + read: { + app: ['visualize', 'lens', 'kibana'], + api: apiReadPrivileges, + catalogue: ['visualize'], + savedObject: { + all: [], + read: savedObjectReadPrivileges, + }, + ui: ['show'], + ...(version === 'v1' && { + replacedBy: { + default: [ + { feature: 'visualize_v2', privileges: ['read'] }, + { feature: 'savedQueryManagement', privileges: ['read'] }, + ], + minimal: [ + { feature: 'visualize_v2', privileges: ['minimal_read'] }, + { feature: 'savedQueryManagement', privileges: ['minimal_read'] }, + ], + }, + }), + }, + }, + subFeatures: [ + { + name: i18n.translate('xpack.features.ossFeatures.visualizeShortUrlSubFeatureName', { + defaultMessage: 'Short URLs', + }), + privilegeGroups: [ + { + groupType: 'independent', + privileges: [ + { + id: 'url_create', + name: i18n.translate( + 'xpack.features.ossFeatures.visualizeCreateShortUrlPrivilegeName', + { + defaultMessage: 'Create Short URLs', + } + ), + includeIn: 'all', + savedObject: { + all: ['url'], + read: [], + }, + ui: ['createShortUrl'], + ...(version === 'v1' && { + replacedBy: [{ feature: 'visualize_v2', privileges: ['url_create'] }], + }), + }, + ], + }, + ], + }, + ...(includeReporting ? [reportingFeatures.getVisualizeReporting(version)] : []), + ], + }; +}; + +const getBaseDashboardFeature = ({ + includeReporting, + version, +}: { + includeReporting: boolean; + version: 'v1' | 'v2'; +}): Omit => { + const apiAllPrivileges = ['bulkGetUserProfiles', 'dashboardUsageStats']; + const savedObjectAllPrivileges = ['dashboard']; + const uiAllPrivileges = ['createNew', 'show', 'showWriteControls']; + const apiReadPrivileges = ['bulkGetUserProfiles', 'dashboardUsageStats']; + const savedObjectReadPrivileges = [ + 'index-pattern', + 'search', + 'visualization', + 'canvas-workpad', + 'lens', + 'links', + 'map', + 'dashboard', + 'tag', + ]; + + if (version === 'v1') { + apiAllPrivileges.push('savedQuery:manage', 'savedQuery:read'); + savedObjectAllPrivileges.push('query'); + uiAllPrivileges.push('saveQuery'); + apiReadPrivileges.push('savedQuery:read'); + savedObjectReadPrivileges.push('query'); + } + + return { + name: i18n.translate('xpack.features.dashboardFeatureName', { + defaultMessage: 'Dashboard', + }), + management: { + kibana: ['search_sessions'], + ...(includeReporting ? { insightsAndAlerting: ['reporting'] } : {}), + }, + category: DEFAULT_APP_CATEGORIES.kibana, + scope: [KibanaFeatureScope.Spaces, KibanaFeatureScope.Security], + app: ['dashboards', 'kibana'], + catalogue: ['dashboard'], + privileges: { + all: { + app: ['dashboards', 'kibana'], + catalogue: ['dashboard'], + savedObject: { + all: savedObjectAllPrivileges, + read: [ + 'index-pattern', + 'search', + 'visualization', + 'canvas-workpad', + 'lens', + 'links', + 'map', + 'tag', + ], + }, + ui: uiAllPrivileges, + api: apiAllPrivileges, + ...(version === 'v1' && { + replacedBy: { + default: [ + { feature: 'dashboard_v2', privileges: ['all'] }, + { feature: 'savedQueryManagement', privileges: ['all'] }, + ], + minimal: [ + { feature: 'dashboard_v2', privileges: ['minimal_all'] }, + { feature: 'savedQueryManagement', privileges: ['minimal_all'] }, + ], + }, + }), + }, + read: { + app: ['dashboards', 'kibana'], + catalogue: ['dashboard'], + savedObject: { + all: [], + read: savedObjectReadPrivileges, + }, + ui: ['show'], + api: apiReadPrivileges, + ...(version === 'v1' && { + replacedBy: { + default: [ + { feature: 'dashboard_v2', privileges: ['read'] }, + { feature: 'savedQueryManagement', privileges: ['read'] }, + ], + minimal: [ + { feature: 'dashboard_v2', privileges: ['minimal_read'] }, + { feature: 'savedQueryManagement', privileges: ['minimal_read'] }, + ], + }, + }), + }, + }, + subFeatures: [ + { + name: i18n.translate('xpack.features.ossFeatures.dashboardShortUrlSubFeatureName', { + defaultMessage: 'Short URLs', + }), + privilegeGroups: [ + { + groupType: 'independent', + privileges: [ + { + id: 'url_create', + name: i18n.translate( + 'xpack.features.ossFeatures.dashboardCreateShortUrlPrivilegeName', + { + defaultMessage: 'Create Short URLs', + } + ), + includeIn: 'all', + savedObject: { + all: ['url'], + read: [], + }, + ui: ['createShortUrl'], + ...(version === 'v1' && { + replacedBy: [{ feature: 'dashboard_v2', privileges: ['url_create'] }], + }), + }, + ], + }, + ], + }, + { + name: i18n.translate('xpack.features.ossFeatures.dashboardSearchSessionsFeatureName', { + defaultMessage: 'Store Search Sessions', + }), + privilegeGroups: [ + { + groupType: 'independent', + privileges: [ + { + id: 'store_search_session', + name: i18n.translate( + 'xpack.features.ossFeatures.dashboardStoreSearchSessionsPrivilegeName', + { + defaultMessage: 'Store Search Sessions', + } + ), + includeIn: 'all', + savedObject: { + all: ['search-session'], + read: [], + }, + ui: ['storeSearchSession'], + management: { + kibana: ['search_sessions'], + }, + api: ['store_search_session'], + ...(version === 'v1' && { + replacedBy: [{ feature: 'dashboard_v2', privileges: ['store_search_session'] }], + }), + }, + ], + }, + ], + }, + ...(includeReporting ? [reportingFeatures.getDashboardReporting(version)] : []), + ], + }; +}; + const reportingPrivilegeGroupName = i18n.translate( 'xpack.features.ossFeatures.reporting.reportingTitle', { @@ -587,11 +784,11 @@ const reportingPrivilegeGroupName = i18n.translate( ); const reportingFeatures: { - discoverReporting: SubFeatureConfig; - dashboardReporting: SubFeatureConfig; - visualizeReporting: SubFeatureConfig; + getDiscoverReporting: (version: 'v1' | 'v2') => SubFeatureConfig; + getDashboardReporting: (version: 'v1' | 'v2') => SubFeatureConfig; + getVisualizeReporting: (version: 'v1' | 'v2') => SubFeatureConfig; } = { - discoverReporting: { + getDiscoverReporting: (version) => ({ name: reportingPrivilegeGroupName, privilegeGroups: [ { @@ -607,12 +804,15 @@ const reportingFeatures: { management: { insightsAndAlerting: ['reporting'] }, api: ['generateReport'], ui: ['generateCsv'], + ...(version === 'v1' && { + replacedBy: [{ feature: 'discover_v2', privileges: ['generate_report'] }], + }), }, ], }, ], - }, - dashboardReporting: { + }), + getDashboardReporting: (version) => ({ name: reportingPrivilegeGroupName, privilegeGroups: [ { @@ -632,6 +832,9 @@ const reportingFeatures: { management: { insightsAndAlerting: ['reporting'] }, api: ['generateReport'], ui: ['generateScreenshot'], + ...(version === 'v1' && { + replacedBy: [{ feature: 'dashboard_v2', privileges: ['generate_report'] }], + }), }, { id: 'download_csv_report', @@ -643,12 +846,15 @@ const reportingFeatures: { management: { insightsAndAlerting: ['reporting'] }, api: ['downloadCsv'], ui: ['downloadCsv'], + ...(version === 'v1' && { + replacedBy: [{ feature: 'dashboard_v2', privileges: ['download_csv_report'] }], + }), }, ], }, ], - }, - visualizeReporting: { + }), + getVisualizeReporting: (version) => ({ name: reportingPrivilegeGroupName, privilegeGroups: [ { @@ -668,9 +874,12 @@ const reportingFeatures: { management: { insightsAndAlerting: ['reporting'] }, api: ['generateReport'], ui: ['generateScreenshot'], + ...(version === 'v1' && { + replacedBy: [{ feature: 'visualize_v2', privileges: ['generate_report'] }], + }), }, ], }, ], - }, + }), }; diff --git a/x-pack/platform/plugins/shared/features/server/plugin.test.ts b/x-pack/platform/plugins/shared/features/server/plugin.test.ts index 6ada13971c34e..facb25e72ec5d 100644 --- a/x-pack/platform/plugins/shared/features/server/plugin.test.ts +++ b/x-pack/platform/plugins/shared/features/server/plugin.test.ts @@ -62,8 +62,11 @@ describe('Features Plugin', () => { Array [ "baz", "discover", + "discover_v2", "visualize", + "visualize_v2", "dashboard", + "dashboard_v2", "dev_tools", "advancedSettings", "indexPatterns", diff --git a/x-pack/platform/plugins/shared/lens/public/app_plugin/app.test.tsx b/x-pack/platform/plugins/shared/lens/public/app_plugin/app.test.tsx index c146352ede566..4646d680999be 100644 --- a/x-pack/platform/plugins/shared/lens/public/app_plugin/app.test.tsx +++ b/x-pack/platform/plugins/shared/lens/public/app_plugin/app.test.tsx @@ -532,8 +532,8 @@ describe('Lens App', () => { it('shows a disabled save button when the user does not have permissions', async () => { services.application.capabilities = { ...services.application.capabilities, - visualize: { save: false, saveQuery: false, show: true }, - dashboard: { + visualize_v2: { save: false, show: true }, + dashboard_v2: { showWriteControls: false, }, }; @@ -804,31 +804,6 @@ describe('Lens App', () => { await waitForModalVisible(); expect(screen.queryByTestId('saveAsNewCheckbox')).not.toBeInTheDocument(); }); - - it('enables Save Query UI when user has app-level permissions', async () => { - services.application.capabilities = { - ...services.application.capabilities, - visualize: { saveQuery: true }, - }; - - await renderApp(); - expect(services.navigation.ui.AggregateQueryTopNavMenu).toHaveBeenLastCalledWith( - expect.objectContaining({ saveQueryMenuVisibility: 'allowed_by_app_privilege' }), - {} - ); - }); - - it('checks global save query permission when user does not have app-level permissions', async () => { - services.application.capabilities = { - ...services.application.capabilities, - visualize: { saveQuery: false }, - }; - await renderApp(); - expect(services.navigation.ui.AggregateQueryTopNavMenu).toHaveBeenLastCalledWith( - expect.objectContaining({ saveQueryMenuVisibility: 'globally_managed' }), - {} - ); - }); }); }); @@ -854,7 +829,7 @@ describe('Lens App', () => { it('should still be enabled even if the user is missing save permissions', async () => { services.application.capabilities = { ...services.application.capabilities, - visualize: { save: false, saveQuery: false, show: true, createShortUrl: true }, + visualize_v2: { save: false, show: true, createShortUrl: true }, }; await renderApp({ @@ -869,7 +844,7 @@ describe('Lens App', () => { it('should still be enabled even if the user is missing shortUrl permissions', async () => { services.application.capabilities = { ...services.application.capabilities, - visualize: { save: true, saveQuery: false, show: true, createShortUrl: false }, + visualize_v2: { save: true, show: true, createShortUrl: false }, }; await renderApp({ @@ -885,7 +860,7 @@ describe('Lens App', () => { it('should be disabled if the user is missing shortUrl permissions and visualization is not saveable', async () => { services.application.capabilities = { ...services.application.capabilities, - visualize: { save: false, saveQuery: false, show: true, createShortUrl: false }, + visualize_v2: { save: false, show: true, createShortUrl: false }, }; await renderApp({ @@ -1046,24 +1021,11 @@ describe('Lens App', () => { }); describe('saved query handling', () => { - it('does not allow saving when the user is missing the saveQuery permission', async () => { - services.application.capabilities = { - ...services.application.capabilities, - visualize: { save: false, saveQuery: false, show: true }, - }; - await renderApp(); - expect(services.navigation.ui.AggregateQueryTopNavMenu).toHaveBeenCalledWith( - expect.objectContaining({ saveQueryMenuVisibility: 'globally_managed' }), - {} - ); - }); - it('persists the saved query ID when the query is saved', async () => { await renderApp(); expect(services.navigation.ui.AggregateQueryTopNavMenu).toHaveBeenCalledWith( expect.objectContaining({ - saveQueryMenuVisibility: 'allowed_by_app_privilege', savedQuery: undefined, onSaved: expect.any(Function), onSavedQueryUpdated: expect.any(Function), @@ -1320,7 +1282,7 @@ describe('Lens App', () => { it('does not confirm if the user is missing save permissions', async () => { services.application.capabilities = { ...services.application.capabilities, - visualize: { save: false, saveQuery: false, show: true }, + visualize_v2: { save: false, show: true }, }; await renderApp({ preloadedState: { isSaveable: true }, diff --git a/x-pack/platform/plugins/shared/lens/public/app_plugin/app.tsx b/x-pack/platform/plugins/shared/lens/public/app_plugin/app.tsx index b8903bde1af0f..1756ea1877126 100644 --- a/x-pack/platform/plugins/shared/lens/public/app_plugin/app.tsx +++ b/x-pack/platform/plugins/shared/lens/public/app_plugin/app.tsx @@ -201,7 +201,7 @@ export function App({ useEffect(() => { onAppLeave((actions) => { if ( - application.capabilities.visualize.save && + application.capabilities.visualize_v2.save && !isLensEqualWrapper(persistedDoc) && (isSaveable || persistedDoc) ) { @@ -227,7 +227,7 @@ export function App({ lastKnownDoc, isSaveable, persistedDoc, - application.capabilities.visualize.save, + application.capabilities.visualize_v2.save, data.query.filterManager, datasourceMap, visualizationMap, diff --git a/x-pack/platform/plugins/shared/lens/public/app_plugin/lens_top_nav.tsx b/x-pack/platform/plugins/shared/lens/public/app_plugin/lens_top_nav.tsx index c673c48db6c82..36dc5ca1c8884 100644 --- a/x-pack/platform/plugins/shared/lens/public/app_plugin/lens_top_nav.tsx +++ b/x-pack/platform/plugins/shared/lens/public/app_plugin/lens_top_nav.tsx @@ -453,9 +453,11 @@ export const LensTopNavMenu = ({ const { AggregateQueryTopNavMenu } = navigation.ui; const { from, to } = data.query.timefilter.timefilter.getTime(); - const savingToLibraryPermitted = Boolean(isSaveable && application.capabilities.visualize.save); + const savingToLibraryPermitted = Boolean( + isSaveable && application.capabilities.visualize_v2.save + ); const savingToDashboardPermitted = Boolean( - isSaveable && application.capabilities.dashboard?.showWriteControls + isSaveable && application.capabilities.dashboard_v2?.showWriteControls ); const defaultLensTitle = i18n.translate('xpack.lens.app.share.defaultDashboardTitle', { @@ -541,7 +543,9 @@ export const LensTopNavMenu = ({ const hasData = Boolean(activeData && Object.keys(activeData).length); const csvEnabled = Boolean(isSaveable && hasData); - const shareUrlEnabled = Boolean(application.capabilities.visualize.createShortUrl && hasData); + const shareUrlEnabled = Boolean( + application.capabilities.visualize_v2.createShortUrl && hasData + ); const showShareMenu = csvEnabled || shareUrlEnabled; const baseMenuEntries = getLensTopNavConfig({ @@ -1100,11 +1104,7 @@ export const LensTopNavMenu = ({ setMenuMountPoint={setHeaderActionMenu} popoverBreakpoints={['xs', 's', 'm']} config={topNavConfig} - saveQueryMenuVisibility={ - application.capabilities.visualize.saveQuery - ? 'allowed_by_app_privilege' - : 'globally_managed' - } + allowSavingQueries badges={ managed ? [ diff --git a/x-pack/platform/plugins/shared/lens/public/app_plugin/mounter.tsx b/x-pack/platform/plugins/shared/lens/public/app_plugin/mounter.tsx index c431f48f0c403..bc7f3a99686ad 100644 --- a/x-pack/platform/plugins/shared/lens/public/app_plugin/mounter.tsx +++ b/x-pack/platform/plugins/shared/lens/public/app_plugin/mounter.tsx @@ -169,7 +169,7 @@ export async function mountApp( const embeddableEditorIncomingState = stateTransfer?.getIncomingEditorState(APP_ID); addHelpMenuToAppChrome(coreStart.chrome, coreStart.docLinks); - if (!lensServices.application.capabilities.visualize.save) { + if (!lensServices.application.capabilities.visualize_v2.save) { coreStart.chrome.setBadge({ text: i18n.translate('xpack.lens.badge.readOnly.text', { defaultMessage: 'Read only', diff --git a/x-pack/platform/plugins/shared/lens/public/app_plugin/save_modal_container.tsx b/x-pack/platform/plugins/shared/lens/public/app_plugin/save_modal_container.tsx index f287e4426eaaa..f3120c7b9ce22 100644 --- a/x-pack/platform/plugins/shared/lens/public/app_plugin/save_modal_container.tsx +++ b/x-pack/platform/plugins/shared/lens/public/app_plugin/save_modal_container.tsx @@ -163,7 +163,9 @@ export function SaveModalContainer({ return ; } - const savingToLibraryPermitted = Boolean(isSaveable && application.capabilities.visualize.save); + const savingToLibraryPermitted = Boolean( + isSaveable && application.capabilities.visualize_v2.save + ); return ( { undefined, { navLinks: { discover: false }, - discover: { show: true }, + discover_v2: { show: true }, } ).isVisible ).toBeFalsy(); @@ -250,7 +250,7 @@ describe('getLayerMetaInfo', () => { undefined, { navLinks: { discover: true }, - discover: { show: false }, + discover_v2: { show: false }, } ).isVisible ).toBeFalsy(); diff --git a/x-pack/platform/plugins/shared/lens/public/app_plugin/show_underlying_data.ts b/x-pack/platform/plugins/shared/lens/public/app_plugin/show_underlying_data.ts index f35443a510147..8b8b92e830aeb 100644 --- a/x-pack/platform/plugins/shared/lens/public/app_plugin/show_underlying_data.ts +++ b/x-pack/platform/plugins/shared/lens/public/app_plugin/show_underlying_data.ts @@ -98,10 +98,10 @@ export function getLayerMetaInfo( timeRange: TimeRange | undefined, capabilities: RecursiveReadonly<{ navLinks: Capabilities['navLinks']; - discover?: Capabilities['discover']; + discover_v2?: Capabilities['discover_v2']; }> ): { meta: LayerMetaInfo | undefined; isVisible: boolean; error: string | undefined } { - const isVisible = Boolean(capabilities.navLinks?.discover && capabilities.discover?.show); + const isVisible = Boolean(capabilities.navLinks?.discover && capabilities.discover_v2?.show); // If Multiple tables, return // If there are time shifts, return // If dataViews have not loaded yet, return diff --git a/x-pack/platform/plugins/shared/lens/public/datasources/common/field_item.test.tsx b/x-pack/platform/plugins/shared/lens/public/datasources/common/field_item.test.tsx index c6757ff800c7a..72dd3e771d810 100644 --- a/x-pack/platform/plugins/shared/lens/public/datasources/common/field_item.test.tsx +++ b/x-pack/platform/plugins/shared/lens/public/datasources/common/field_item.test.tsx @@ -118,7 +118,7 @@ const mockedServices = { }, application: { capabilities: { - discover: { save: true, saveQuery: true, show: true }, + discover_v2: { save: true, show: true }, }, }, core: corePluginMock, @@ -388,12 +388,12 @@ describe('Lens Field Item', () => { ).not.toBeInTheDocument(); }); - it('should not display Explore in discover button if discover capabilities show is false', async () => { + it('should not display Explore in discover button if discover_v2 capabilities show is false', async () => { const services = { ...mockedServices, application: { capabilities: { - discover: { save: false, saveQuery: false, show: false }, + discover_v2: { save: false, show: false }, }, }, }; diff --git a/x-pack/platform/plugins/shared/lens/public/datasources/common/field_item.tsx b/x-pack/platform/plugins/shared/lens/public/datasources/common/field_item.tsx index 1ae7f00f0d1e3..f3e388989c429 100644 --- a/x-pack/platform/plugins/shared/lens/public/datasources/common/field_item.tsx +++ b/x-pack/platform/plugins/shared/lens/public/datasources/common/field_item.tsx @@ -390,7 +390,7 @@ function getExploreInDiscover({ getEsQueryConfig(services.uiSettings) ); const discoverLocator = services.share?.url.locators.get('DISCOVER_APP_LOCATOR'); - if (!discoverLocator || !services.application.capabilities.discover.show) { + if (!discoverLocator || !services.application.capabilities.discover_v2.show) { return; } return discoverLocator.getRedirectUrl({ diff --git a/x-pack/platform/plugins/shared/lens/public/mocks/services_mock.tsx b/x-pack/platform/plugins/shared/lens/public/mocks/services_mock.tsx index b5366984c4352..2f3d78fb54a81 100644 --- a/x-pack/platform/plugins/shared/lens/public/mocks/services_mock.tsx +++ b/x-pack/platform/plugins/shared/lens/public/mocks/services_mock.tsx @@ -138,8 +138,8 @@ export function makeDefaultServices( ...core.application, capabilities: { ...core.application.capabilities, - visualize: { save: true, saveQuery: true, show: true, createShortUrl: true }, - dashboard: { + visualize_v2: { save: true, show: true, createShortUrl: true }, + dashboard_v2: { showWriteControls: true, }, }, diff --git a/x-pack/platform/plugins/shared/lens/public/plugin.ts b/x-pack/platform/plugins/shared/lens/public/plugin.ts index d02f0a0685cff..8c009148831df 100644 --- a/x-pack/platform/plugins/shared/lens/public/plugin.ts +++ b/x-pack/platform/plugins/shared/lens/public/plugin.ts @@ -628,7 +628,7 @@ export class LensPlugin { } start(core: CoreStart, startDependencies: LensPluginStartDependencies): LensPublicStart { - this.hasDiscoverAccess = core.application.capabilities.discover.show as boolean; + this.hasDiscoverAccess = core.application.capabilities.discover_v2.show as boolean; this.dataViewsService = startDependencies.dataViews; // unregisters the Visualize action and registers the lens one if (startDependencies.uiActions.hasAction(ACTION_VISUALIZE_FIELD)) { @@ -731,7 +731,7 @@ export class LensPlugin { }); }, canUseEditor: () => { - return Boolean(core.application.capabilities.visualize?.show); + return Boolean(core.application.capabilities.visualize_v2?.show); }, getXyVisTypes: async () => { const { visualizationSubtypes } = await import('./visualizations/xy/types'); diff --git a/x-pack/platform/plugins/shared/lens/public/react_embeddable/initializers/initialize_actions.ts b/x-pack/platform/plugins/shared/lens/public/react_embeddable/initializers/initialize_actions.ts index 6b08879b577ad..4c1b811ad8b2f 100644 --- a/x-pack/platform/plugins/shared/lens/public/react_embeddable/initializers/initialize_actions.ts +++ b/x-pack/platform/plugins/shared/lens/public/react_embeddable/initializers/initialize_actions.ts @@ -66,7 +66,7 @@ function getViewUnderlyingDataArgs({ canOpenVisualizations: boolean; canSaveDashboards: boolean; navLinks: Capabilities['navLinks']; - discover: Capabilities['discover']; + discover_v2: Capabilities['discover_v2']; }; query: Array; filters: Filter[]; @@ -187,11 +187,11 @@ function loadViewUnderlyingDataArgs( activeVisualizationState, activeData, capabilities: { - canSaveDashboards: Boolean(capabilities.dashboard?.showWriteControls), - canSaveVisualizations: Boolean(capabilities.visualize.save), - canOpenVisualizations: Boolean(capabilities.visualize.show), + canSaveDashboards: Boolean(capabilities.dashboard_v2?.showWriteControls), + canSaveVisualizations: Boolean(capabilities.visualize_v2.save), + canOpenVisualizations: Boolean(capabilities.visualize_v2.show), navLinks: capabilities.navLinks, - discover: capabilities.discover, + discover_v2: capabilities.discover_v2, }, query: mergedSearchContext.query, filters: mergedSearchContext.filters || [], diff --git a/x-pack/platform/plugins/shared/lens/public/react_embeddable/initializers/initialize_edit.test.ts b/x-pack/platform/plugins/shared/lens/public/react_embeddable/initializers/initialize_edit.test.ts index af3bcb6282714..f3ef29f84e218 100644 --- a/x-pack/platform/plugins/shared/lens/public/react_embeddable/initializers/initialize_edit.test.ts +++ b/x-pack/platform/plugins/shared/lens/public/react_embeddable/initializers/initialize_edit.test.ts @@ -51,7 +51,7 @@ describe('edit features', () => { it('should not be editable if visualize library privileges do not allow it', () => { const editApi = createEditApi({ capabilities: { - visualize: { + visualize_v2: { // cannot save save: false, saveQuery: true, @@ -59,7 +59,7 @@ describe('edit features', () => { show: true, createShortUrl: true, }, - dashboard: { + dashboard_v2: { // cannot edit in dashboard showWriteControls: false, }, diff --git a/x-pack/platform/plugins/shared/lens/public/react_embeddable/initializers/initialize_edit.tsx b/x-pack/platform/plugins/shared/lens/public/react_embeddable/initializers/initialize_edit.tsx index a9c00596fbeb5..9b170f24bd2a3 100644 --- a/x-pack/platform/plugins/shared/lens/public/react_embeddable/initializers/initialize_edit.tsx +++ b/x-pack/platform/plugins/shared/lens/public/react_embeddable/initializers/initialize_edit.tsx @@ -181,10 +181,10 @@ export function initializeEditApi( return false; } return ( - Boolean(capabilities.visualize.save) || + Boolean(capabilities.visualize_v2.save) || (!getState().savedObjectId && - Boolean(capabilities.dashboard?.showWriteControls) && - Boolean(capabilities.visualize.show)) + Boolean(capabilities.dashboard_v2?.showWriteControls) && + Boolean(capabilities.visualize_v2.show)) ); }; diff --git a/x-pack/platform/plugins/shared/lens/public/trigger_actions/convert_to_lens_action.ts b/x-pack/platform/plugins/shared/lens/public/trigger_actions/convert_to_lens_action.ts index 017cb64f9dd4b..e701122b3ff00 100644 --- a/x-pack/platform/plugins/shared/lens/public/trigger_actions/convert_to_lens_action.ts +++ b/x-pack/platform/plugins/shared/lens/public/trigger_actions/convert_to_lens_action.ts @@ -17,7 +17,7 @@ export const convertToLensActionFactory = type: ACTION_CONVERT_TO_LENS, id, getDisplayName: () => displayName, - isCompatible: async () => !!application.capabilities.visualize.show, + isCompatible: async () => !!application.capabilities.visualize_v2.show, execute: async (context: { [key: string]: VisualizeEditorContext }) => { const table = Object.values(context.layers); const payload = { diff --git a/x-pack/platform/plugins/shared/lens/public/trigger_actions/dashboard_visualize_panel_actions.ts b/x-pack/platform/plugins/shared/lens/public/trigger_actions/dashboard_visualize_panel_actions.ts index 943b656aba57e..836bda33d9fca 100644 --- a/x-pack/platform/plugins/shared/lens/public/trigger_actions/dashboard_visualize_panel_actions.ts +++ b/x-pack/platform/plugins/shared/lens/public/trigger_actions/dashboard_visualize_panel_actions.ts @@ -22,7 +22,7 @@ export const visualizeDashboardVisualizePanelction = (application: ApplicationSt i18n.translate('xpack.lens.visualizeLegacyVisualizationChart', { defaultMessage: 'Visualize legacy visualization chart', }), - isCompatible: async () => !!application.capabilities.visualize.show, + isCompatible: async () => !!application.capabilities.visualize_v2.show, execute: async (context: { [key: string]: VisualizeEditorContext }) => { const table = Object.values(context.layers); const payload = { diff --git a/x-pack/platform/plugins/shared/lens/public/trigger_actions/visualize_agg_based_vis_actions.ts b/x-pack/platform/plugins/shared/lens/public/trigger_actions/visualize_agg_based_vis_actions.ts index a5300d550f2c7..80468a6ef71f8 100644 --- a/x-pack/platform/plugins/shared/lens/public/trigger_actions/visualize_agg_based_vis_actions.ts +++ b/x-pack/platform/plugins/shared/lens/public/trigger_actions/visualize_agg_based_vis_actions.ts @@ -22,7 +22,7 @@ export const visualizeAggBasedVisAction = (application: ApplicationStart) => i18n.translate('xpack.lens.visualizeAggBasedLegend', { defaultMessage: 'Visualize agg based chart', }), - isCompatible: async () => !!application.capabilities.visualize.show, + isCompatible: async () => !!application.capabilities.visualize_v2.show, execute: async (context: { [key: string]: VisualizeEditorContext }) => { const table = Object.values(context.layers); const payload = { diff --git a/x-pack/platform/plugins/shared/lens/public/trigger_actions/visualize_field_actions.ts b/x-pack/platform/plugins/shared/lens/public/trigger_actions/visualize_field_actions.ts index 4f5c9aaad7c42..b8f997c1e64b8 100644 --- a/x-pack/platform/plugins/shared/lens/public/trigger_actions/visualize_field_actions.ts +++ b/x-pack/platform/plugins/shared/lens/public/trigger_actions/visualize_field_actions.ts @@ -21,7 +21,7 @@ export const visualizeFieldAction = (application: ApplicationStart) => i18n.translate('xpack.lens.discover.visualizeFieldLegend', { defaultMessage: 'Visualize field', }), - isCompatible: async () => !!application.capabilities.visualize.show, + isCompatible: async () => !!application.capabilities.visualize_v2.show, execute: async (context: VisualizeFieldContext) => { application.navigateToApp('lens', { state: { type: ACTION_VISUALIZE_LENS_FIELD, payload: context }, diff --git a/x-pack/platform/plugins/shared/lens/public/trigger_actions/visualize_tsvb_actions.ts b/x-pack/platform/plugins/shared/lens/public/trigger_actions/visualize_tsvb_actions.ts index 535bfa14ba5c8..9d7307c89d625 100644 --- a/x-pack/platform/plugins/shared/lens/public/trigger_actions/visualize_tsvb_actions.ts +++ b/x-pack/platform/plugins/shared/lens/public/trigger_actions/visualize_tsvb_actions.ts @@ -19,7 +19,7 @@ export const visualizeTSVBAction = (application: ApplicationStart) => i18n.translate('xpack.lens.visualizeTSVBLegend', { defaultMessage: 'Visualize TSVB chart', }), - isCompatible: async () => !!application.capabilities.visualize.show, + isCompatible: async () => !!application.capabilities.visualize_v2.show, execute: async (context: { [key: string]: VisualizeEditorContext }) => { const table = Object.values(context.layers); const payload = { diff --git a/x-pack/platform/plugins/shared/lens/public/visualizations/xy/annotations/actions/index.ts b/x-pack/platform/plugins/shared/lens/public/visualizations/xy/annotations/actions/index.ts index 8e2c87a951051..089bab6829397 100644 --- a/x-pack/platform/plugins/shared/lens/public/visualizations/xy/annotations/actions/index.ts +++ b/x-pack/platform/plugins/shared/lens/public/visualizations/xy/annotations/actions/index.ts @@ -49,7 +49,7 @@ export const createAnnotationActions = ({ const actions = []; const savingToLibraryPermitted = Boolean( - core.application.capabilities.visualize.save && isSaveable + core.application.capabilities.visualize_v2.save && isSaveable ); if (savingToLibraryPermitted) { diff --git a/x-pack/platform/plugins/shared/lens/public/visualizations/xy/visualization.test.tsx b/x-pack/platform/plugins/shared/lens/public/visualizations/xy/visualization.test.tsx index ecb3c16fb6dda..66595233600cc 100644 --- a/x-pack/platform/plugins/shared/lens/public/visualizations/xy/visualization.test.tsx +++ b/x-pack/platform/plugins/shared/lens/public/visualizations/xy/visualization.test.tsx @@ -104,7 +104,7 @@ const paletteServiceMock = chartPluginMock.createPaletteRegistry(); const fieldFormatsMock = fieldFormatsServiceMock.createStartContract(); const core = coreMock.createStart(); -set(core, 'application.capabilities.visualize.save', true); +set(core, 'application.capabilities.visualize_v2.save', true); const xyVisualization = getXyVisualization({ paletteService: paletteServiceMock, diff --git a/x-pack/platform/plugins/shared/lens/server/saved_objects.ts b/x-pack/platform/plugins/shared/lens/server/saved_objects.ts index b91d138902140..3b05772f7743c 100644 --- a/x-pack/platform/plugins/shared/lens/server/saved_objects.ts +++ b/x-pack/platform/plugins/shared/lens/server/saved_objects.ts @@ -31,7 +31,7 @@ export function setupSavedObjects( getTitle: (obj: { attributes: { title: string } }) => obj.attributes.title, getInAppUrl: (obj: { id: string }) => ({ path: `/app/lens${getEditPath(obj.id)}`, - uiCapabilitiesPath: 'visualize.show', + uiCapabilitiesPath: 'visualize_v2.show', }), }, migrations: () => diff --git a/x-pack/platform/plugins/shared/maps/public/kibana_services.ts b/x-pack/platform/plugins/shared/maps/public/kibana_services.ts index 181876de0e77b..94b667366b55c 100644 --- a/x-pack/platform/plugins/shared/maps/public/kibana_services.ts +++ b/x-pack/platform/plugins/shared/maps/public/kibana_services.ts @@ -76,8 +76,8 @@ export const getTimeFilter = () => pluginsStart.data.query.timefilter.timefilter export const getToasts = () => coreStart.notifications.toasts; export const getCoreChrome = () => coreStart.chrome; export const getDevToolsCapabilities = () => coreStart.application.capabilities.dev_tools; -export const getMapsCapabilities = () => coreStart.application.capabilities.maps; -export const getVisualizeCapabilities = () => coreStart.application.capabilities.visualize; +export const getMapsCapabilities = () => coreStart.application.capabilities.maps_v2; +export const getVisualizeCapabilities = () => coreStart.application.capabilities.visualize_v2; export const getDocLinks = () => coreStart.docLinks; export const getCoreOverlays = () => coreStart.overlays; export const getCharts = () => pluginsStart.charts; diff --git a/x-pack/platform/plugins/shared/maps/public/plugin.ts b/x-pack/platform/plugins/shared/maps/public/plugin.ts index fbdb2ef67d2ed..af3f46f5e1a4b 100644 --- a/x-pack/platform/plugins/shared/maps/public/plugin.ts +++ b/x-pack/platform/plugins/shared/maps/public/plugin.ts @@ -251,13 +251,13 @@ export class MapsPlugin setLicensingPluginStart(plugins.licensing); setStartServices(core, plugins); - if (core.application.capabilities.maps.show) { + if (core.application.capabilities.maps_v2.show) { plugins.uiActions.addTriggerAction(VISUALIZE_GEO_FIELD_TRIGGER, visualizeGeoFieldAction); } plugins.uiActions.addTriggerAction(CONTEXT_MENU_TRIGGER, filterByMapExtentAction); plugins.uiActions.addTriggerAction(CONTEXT_MENU_TRIGGER, synchronizeMovementAction); - if (!core.application.capabilities.maps.save) { + if (!core.application.capabilities.maps_v2.save) { plugins.visualizations.unRegisterAlias(APP_ID); } diff --git a/x-pack/platform/plugins/shared/maps/public/react_embeddable/library_transforms.ts b/x-pack/platform/plugins/shared/maps/public/react_embeddable/library_transforms.ts index 9c92436beef32..90d85879ae556 100644 --- a/x-pack/platform/plugins/shared/maps/public/react_embeddable/library_transforms.ts +++ b/x-pack/platform/plugins/shared/maps/public/react_embeddable/library_transforms.ts @@ -35,7 +35,7 @@ export function initializeLibraryTransforms( ): HasLibraryTransforms { return { canLinkToLibrary: async () => { - const { maps } = getCore().application.capabilities; + const { maps_v2: maps } = getCore().application.capabilities; return maps.save && savedMap.getSavedObjectId() === undefined; }, saveToLibrary: async (title: string) => { diff --git a/x-pack/platform/plugins/shared/maps/public/routes/map_page/map_app/map_app.tsx b/x-pack/platform/plugins/shared/maps/public/routes/map_page/map_app/map_app.tsx index 22ba9698ab8d7..5ac414d54c274 100644 --- a/x-pack/platform/plugins/shared/maps/public/routes/map_page/map_app/map_app.tsx +++ b/x-pack/platform/plugins/shared/maps/public/routes/map_page/map_app/map_app.tsx @@ -38,7 +38,6 @@ import { getExecutionContextService, getCoreChrome, getIndexPatternService, - getMapsCapabilities, getNavigation, getSpacesApi, getTimeFilter, @@ -534,9 +533,7 @@ export class MapApp extends React.Component { showSearchBar={true} showFilterBar={true} showDatePicker={true} - saveQueryMenuVisibility={ - getMapsCapabilities().saveQuery ? 'allowed_by_app_privilege' : 'globally_managed' - } + allowSavingQueries savedQuery={this.state.savedQuery} onSaved={this._updateStateFromSavedQuery} onSavedQueryUpdated={this._updateStateFromSavedQuery} diff --git a/x-pack/platform/plugins/shared/maps/server/plugin.ts b/x-pack/platform/plugins/shared/maps/server/plugin.ts index 097b59715cb76..20d5d3c7580be 100644 --- a/x-pack/platform/plugins/shared/maps/server/plugin.ts +++ b/x-pack/platform/plugins/shared/maps/server/plugin.ts @@ -18,7 +18,7 @@ import { HomeServerPluginSetup } from '@kbn/home-plugin/server'; import { DataViewPersistableStateService } from '@kbn/data-views-plugin/common'; import type { EMSSettings } from '@kbn/maps-ems-plugin/server'; -import { KibanaFeatureScope } from '@kbn/features-plugin/common'; +import { KibanaFeatureConfig, KibanaFeatureScope } from '@kbn/features-plugin/common'; import { CONTENT_ID, LATEST_VERSION } from '../common/content_management'; import { getEcommerceSavedObjects } from './sample_data/ecommerce_saved_objects'; import { getFlightsSavedObjects } from './sample_data/flights_saved_objects'; @@ -169,38 +169,92 @@ export class MapsPlugin implements Plugin { registerIntegrations(core, customIntegrations); } - features.registerKibanaFeature({ - id: APP_ID, - name: i18n.translate('xpack.maps.featureRegistry.mapsFeatureName', { - defaultMessage: 'Maps', - }), - order: 400, - category: DEFAULT_APP_CATEGORIES.kibana, - scope: [KibanaFeatureScope.Spaces, KibanaFeatureScope.Security], - app: [APP_ID, 'kibana'], - catalogue: [APP_ID], - privileges: { - all: { - app: [APP_ID, 'kibana'], - catalogue: [APP_ID], - savedObject: { - all: [MAP_SAVED_OBJECT_TYPE, 'query'], - read: ['index-pattern', 'tag'], + const getBaseMapsFeature = ( + version: 'v1' | 'v2' + ): Omit => { + const apiAllPrivileges = []; + const savedObjectAllPrivileges = [MAP_SAVED_OBJECT_TYPE]; + const uiAllPrivileges = ['save', 'show']; + const apiReadPrivileges = []; + const savedObjectReadPrivileges = [MAP_SAVED_OBJECT_TYPE, 'index-pattern', 'tag']; + + if (version === 'v1') { + apiAllPrivileges.push('savedQuery:manage', 'savedQuery:read'); + savedObjectAllPrivileges.push('query'); + uiAllPrivileges.push('saveQuery'); + apiReadPrivileges.push('savedQuery:read'); + savedObjectReadPrivileges.push('query'); + } + + return { + name: i18n.translate('xpack.maps.featureRegistry.mapsFeatureName', { + defaultMessage: 'Maps', + }), + category: DEFAULT_APP_CATEGORIES.kibana, + scope: [KibanaFeatureScope.Spaces, KibanaFeatureScope.Security], + app: [APP_ID, 'kibana'], + catalogue: [APP_ID], + privileges: { + all: { + app: [APP_ID, 'kibana'], + api: apiAllPrivileges, + catalogue: [APP_ID], + savedObject: { + all: savedObjectAllPrivileges, + read: ['index-pattern', 'tag'], + }, + ui: uiAllPrivileges, + ...(version === 'v1' && { + replacedBy: [ + { feature: 'maps_v2', privileges: ['all'] }, + { feature: 'savedQueryManagement', privileges: ['all'] }, + ], + }), }, - ui: ['save', 'show', 'saveQuery'], - api: ['savedQuery:manage', 'savedQuery:read'], - }, - read: { - app: [APP_ID, 'kibana'], - catalogue: [APP_ID], - savedObject: { - all: [], - read: [MAP_SAVED_OBJECT_TYPE, 'index-pattern', 'query', 'tag'], + read: { + app: [APP_ID, 'kibana'], + api: apiReadPrivileges, + catalogue: [APP_ID], + savedObject: { + all: [], + read: savedObjectReadPrivileges, + }, + ui: ['show'], + ...(version === 'v1' && { + replacedBy: { + default: [ + { feature: 'maps_v2', privileges: ['read'] }, + { feature: 'savedQueryManagement', privileges: ['read'] }, + ], + minimal: [ + { feature: 'maps_v2', privileges: ['minimal_read'] }, + { feature: 'savedQueryManagement', privileges: ['minimal_read'] }, + ], + }, + }), }, - ui: ['show'], - api: ['savedQuery:read'], }, + }; + }; + + features.registerKibanaFeature({ + deprecated: { + notice: i18n.translate('xpack.maps.featureRegistry.mapsFeatureDeprecationNotice', { + defaultMessage: + 'The Maps V1 privilege has been deprecated and replaced with a Maps V2 privilege in order to improve saved query management. See {link} for more details.', + values: { link: 'https://github.com/elastic/kibana/pull/202863' }, + }), + replacedBy: ['maps_v2'], }, + id: APP_ID, + order: 400, + ...getBaseMapsFeature('v1'), + }); + + features.registerKibanaFeature({ + id: 'maps_v2', + order: 401, + ...getBaseMapsFeature('v2'), }); setupSavedObjects(core, getFilterMigrations, getDataViewMigrations); diff --git a/x-pack/platform/plugins/shared/maps/server/saved_objects/setup_saved_objects.ts b/x-pack/platform/plugins/shared/maps/server/saved_objects/setup_saved_objects.ts index af9dc73dbc646..684150cff2eeb 100644 --- a/x-pack/platform/plugins/shared/maps/server/saved_objects/setup_saved_objects.ts +++ b/x-pack/platform/plugins/shared/maps/server/saved_objects/setup_saved_objects.ts @@ -50,7 +50,7 @@ export function setupSavedObjects( getInAppUrl(obj) { return { path: getFullPath(obj.id), - uiCapabilitiesPath: 'maps.show', + uiCapabilitiesPath: 'maps_v2.show', }; }, }, diff --git a/x-pack/platform/plugins/shared/ml/public/application/components/anomalies_table/links_menu.tsx b/x-pack/platform/plugins/shared/ml/public/application/components/anomalies_table/links_menu.tsx index dd963136f29ce..927e2a7ec87c9 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/components/anomalies_table/links_menu.tsx +++ b/x-pack/platform/plugins/shared/ml/public/application/components/anomalies_table/links_menu.tsx @@ -788,7 +788,7 @@ export const LinksMenuUI = (props: LinksMenuProps) => { }); } - if (application.capabilities.discover?.show && !isCategorizationAnomalyRecord) { + if (application.capabilities.discover_v2?.show && !isCategorizationAnomalyRecord) { // Add item from the start, but disable it during the URL generation. const isLoading = openInDiscoverUrlError === undefined && openInDiscoverUrl === undefined; @@ -837,7 +837,7 @@ export const LinksMenuUI = (props: LinksMenuProps) => { ); } } - if (application.capabilities.maps?.show) { + if (application.capabilities.maps_v2?.show) { if (anomaly.isGeoRecord === true) { items.push( { } } - if (application.capabilities.discover?.show && isCategorizationAnomalyRecord) { + if (application.capabilities.discover_v2?.show && isCategorizationAnomalyRecord) { items.push( = ({ pipelineName, sourceIndex }) => ); const showDiscoverLink = useMemo( - () => capabilities.discover?.show !== undefined && discoverLocator !== undefined, - [capabilities.discover?.show, discoverLocator] + () => capabilities.discover_v2?.show !== undefined && discoverLocator !== undefined, + [capabilities.discover_v2?.show, discoverLocator] ); const generateDiscoverUrl = useCallback( diff --git a/x-pack/platform/plugins/shared/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/expandable_section/expandable_section_results.tsx b/x-pack/platform/plugins/shared/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/expandable_section/expandable_section_results.tsx index 366debdc3fea3..853c6194f76f9 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/expandable_section/expandable_section_results.tsx +++ b/x-pack/platform/plugins/shared/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/expandable_section/expandable_section_results.tsx @@ -155,7 +155,7 @@ export const ExpandableSectionResults: FC = ({ ); const discoverUrlError = useMemo(() => { - if (!application.capabilities.discover?.show) { + if (!application.capabilities.discover_v2?.show) { const discoverNotEnabled = i18n.translate( 'xpack.ml.dataframe.analytics.exploration.dataGridActions.discoverNotEnabledErrorMessage', { @@ -185,7 +185,7 @@ export const ExpandableSectionResults: FC = ({ return autoGeneratedDiscoverLinkError; } - }, [application.capabilities.discover?.show, dataViewId, discoverLocator]); + }, [application.capabilities.discover_v2?.show, dataViewId, discoverLocator]); const { columnsWithCharts, status, tableItems } = indexData; diff --git a/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_context_menu.tsx b/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_context_menu.tsx index ccee7f8fa1be5..9fc699b588000 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_context_menu.tsx +++ b/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_context_menu.tsx @@ -105,7 +105,7 @@ export const AnomalyContextMenu: FC = ({ CASES_TOAST_MESSAGES_TITLES.ANOMALY_CHARTS(maxSeriesToPlot) ); - const canEditDashboards = capabilities.dashboard?.createNew ?? false; + const canEditDashboards = capabilities.dashboard_v2?.createNew ?? false; const casesPrivileges = cases?.helpers.canUseCases(); const { anomalyExplorerCommonStateService, chartsStateService } = useAnomalyExplorerContext(); diff --git a/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_timeline.tsx b/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_timeline.tsx index e70ca44772ed8..944e2aa881195 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_timeline.tsx +++ b/x-pack/platform/plugins/shared/ml/public/application/explorer/anomaly_timeline.tsx @@ -115,7 +115,7 @@ export const AnomalyTimeline: FC = React.memo( const [isMenuOpen, setIsMenuOpen] = useState(false); - const canEditDashboards = capabilities.dashboard?.createNew ?? false; + const canEditDashboards = capabilities.dashboard_v2?.createNew ?? false; const timeBuckets = useTimeBuckets(uiSettings); diff --git a/x-pack/platform/plugins/shared/ml/public/application/timeseriesexplorer/components/timeseriesexplorer_controls/timeseriesexplorer_controls.tsx b/x-pack/platform/plugins/shared/ml/public/application/timeseriesexplorer/components/timeseriesexplorer_controls/timeseriesexplorer_controls.tsx index 5857846354fcf..c4663c64846ee 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/timeseriesexplorer/components/timeseriesexplorer_controls/timeseriesexplorer_controls.tsx +++ b/x-pack/platform/plugins/shared/ml/public/application/timeseriesexplorer/components/timeseriesexplorer_controls/timeseriesexplorer_controls.tsx @@ -114,7 +114,7 @@ export const TimeSeriesExplorerControls: FC = ({ const globalTimeRange = useTimeRangeUpdates(true); - const canEditDashboards = capabilities.dashboard?.createNew ?? false; + const canEditDashboards = capabilities.dashboard_v2?.createNew ?? false; const closePopoverOnAction = useCallback( (actionCallback: Function) => { diff --git a/x-pack/platform/plugins/shared/osquery/public/discover/view_results_in_discover.tsx b/x-pack/platform/plugins/shared/osquery/public/discover/view_results_in_discover.tsx index d524f06392e54..33fded0c0d06d 100644 --- a/x-pack/platform/plugins/shared/osquery/public/discover/view_results_in_discover.tsx +++ b/x-pack/platform/plugins/shared/osquery/public/discover/view_results_in_discover.tsx @@ -29,7 +29,7 @@ const ViewResultsInDiscoverActionComponent: React.FC { const { discover, application } = useKibana().services; const locator = discover?.locator; - const discoverPermissions = application.capabilities.discover; + const discoverPermissions = application.capabilities.discover_v2; const { data: logsDataView } = useLogsDataView({ skip: !actionId, checkOnly: true }); const [discoverUrl, setDiscoverUrl] = useState(''); diff --git a/x-pack/platform/plugins/shared/osquery/public/packs/pack_queries_status_table.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/pack_queries_status_table.tsx index d43721a61b6d2..064394c74f995 100644 --- a/x-pack/platform/plugins/shared/osquery/public/packs/pack_queries_status_table.tsx +++ b/x-pack/platform/plugins/shared/osquery/public/packs/pack_queries_status_table.tsx @@ -245,7 +245,7 @@ const ViewResultsInDiscoverActionComponent: React.FC { const { discover, application } = useKibana().services; const locator = discover?.locator; - const discoverPermissions = application.capabilities.discover; + const discoverPermissions = application.capabilities.discover_v2; const { data: logsDataView } = useLogsDataView({ skip: !actionId, checkOnly: true }); const [discoverUrl, setDiscoverUrl] = useState(''); diff --git a/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/osquery_result_wrapper.test.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/osquery_result_wrapper.test.tsx index 0d3de3fb23d87..98e366b342c9e 100644 --- a/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/osquery_result_wrapper.test.tsx +++ b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/osquery_result_wrapper.test.tsx @@ -33,7 +33,7 @@ const defaultPermissions = { runSavedQueries: true, readSavedQueries: true, }, - discover: { + discover_v2: { show: true, }, }; diff --git a/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/osquery_results.test.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/osquery_results.test.tsx index 4e02daabcc005..7d159cd8105c1 100644 --- a/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/osquery_results.test.tsx +++ b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/osquery_results.test.tsx @@ -57,7 +57,7 @@ const defaultPermissions = { runSavedQueries: false, readSavedQueries: false, }, - discover: { + discover_v2: { show: true, }, }; diff --git a/x-pack/platform/plugins/shared/stack_alerts/public/rule_types/es_query/expression/search_source_expression_form.tsx b/x-pack/platform/plugins/shared/stack_alerts/public/rule_types/es_query/expression/search_source_expression_form.tsx index be4ebbbc13216..90b22d56e6dc5 100644 --- a/x-pack/platform/plugins/shared/stack_alerts/public/rule_types/es_query/expression/search_source_expression_form.tsx +++ b/x-pack/platform/plugins/shared/stack_alerts/public/rule_types/es_query/expression/search_source_expression_form.tsx @@ -350,7 +350,7 @@ export const SearchSourceExpressionForm = (props: SearchSourceExpressionFormProp onClearSavedQuery={onClearSavedQuery} onSavedQueryUpdated={onSavedQuery} onSaved={onSavedQuery} - saveQueryMenuVisibility="allowed_by_app_privilege" + allowSavingQueries showQueryInput showFilterBar showDatePicker={false} diff --git a/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/alerts_search_bar/alerts_search_bar.tsx b/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/alerts_search_bar/alerts_search_bar.tsx index 0a5c18fab9d8c..19e4c30f7d241 100644 --- a/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/alerts_search_bar/alerts_search_bar.tsx +++ b/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/alerts_search_bar/alerts_search_bar.tsx @@ -180,7 +180,7 @@ export function AlertsSearchBar({ onRefresh={onRefresh} showDatePicker={showDatePicker} showQueryInput={true} - saveQueryMenuVisibility="allowed_by_app_privilege" + allowSavingQueries showSubmitButton={showSubmitButton} submitOnBlur={submitOnBlur} onQueryChange={onSearchQueryChange} diff --git a/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/rules_list/components/kql_search_bar/kql_search_bar.tsx b/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/rules_list/components/kql_search_bar/kql_search_bar.tsx index 87e68b7a27cc6..2a7aadcf08322 100644 --- a/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/rules_list/components/kql_search_bar/kql_search_bar.tsx +++ b/x-pack/platform/plugins/shared/triggers_actions_ui/public/application/sections/rules_list/components/kql_search_bar/kql_search_bar.tsx @@ -88,7 +88,6 @@ export const KqlSearchBar = React.memo(({ onQuerySubmit }) => indexPatterns={loading || error ? NO_INDEX_PATTERNS : dataView} showAutoRefreshOnly={false} showDatePicker={false} - saveQueryMenuVisibility="hidden" showQueryInput={true} showQueryMenu={false} showFilterBar={true} diff --git a/x-pack/solutions/observability/plugins/apm/public/components/routing/templates/apm_service_template/analyze_data_button.stories.tsx b/x-pack/solutions/observability/plugins/apm/public/components/routing/templates/apm_service_template/analyze_data_button.stories.tsx index 287c34b701895..d0109290e3e20 100644 --- a/x-pack/solutions/observability/plugins/apm/public/components/routing/templates/apm_service_template/analyze_data_button.stories.tsx +++ b/x-pack/solutions/observability/plugins/apm/public/components/routing/templates/apm_service_template/analyze_data_button.stories.tsx @@ -42,7 +42,7 @@ export default { { core: { application: { - capabilities: { dashboard: { show: canShowDashboard } }, + capabilities: { dashboard_v2: { show: canShowDashboard } }, }, http: { basePath: { get: () => '' } }, }, diff --git a/x-pack/solutions/observability/plugins/apm/public/components/routing/templates/apm_service_template/analyze_data_button.tsx b/x-pack/solutions/observability/plugins/apm/public/components/routing/templates/apm_service_template/analyze_data_button.tsx index 102c5233abf11..73f9194b68d3d 100644 --- a/x-pack/solutions/observability/plugins/apm/public/components/routing/templates/apm_service_template/analyze_data_button.tsx +++ b/x-pack/solutions/observability/plugins/apm/public/components/routing/templates/apm_service_template/analyze_data_button.tsx @@ -43,7 +43,7 @@ export function AnalyzeDataButton() { } = useAnyOfApmParams('/services/{serviceName}', '/mobile-services/{serviceName}'); const basepath = services.http?.basePath.get(); - const canShowDashboard = services.application?.capabilities.dashboard.show; + const canShowDashboard = services.application?.capabilities.dashboard_v2.show; if ( (isRumAgentName(agentName) || isMobileAgentName(agentName)) && diff --git a/x-pack/solutions/observability/plugins/infra/public/components/logs_deprecation_callout.tsx b/x-pack/solutions/observability/plugins/infra/public/components/logs_deprecation_callout.tsx index 04dc05b81a265..f9cd6efb211b9 100644 --- a/x-pack/solutions/observability/plugins/infra/public/components/logs_deprecation_callout.tsx +++ b/x-pack/solutions/observability/plugins/infra/public/components/logs_deprecation_callout.tsx @@ -44,7 +44,7 @@ export const LogsDeprecationCallout = ({ page }: LogsDeprecationCalloutProps) => services: { share, application: { - capabilities: { discover, fleet }, + capabilities: { discover_v2: discover, fleet }, }, }, } = useKibanaContextForPlugin(); diff --git a/x-pack/solutions/observability/plugins/infra/public/pages/metrics/hosts/components/search_bar/unified_search_bar.tsx b/x-pack/solutions/observability/plugins/infra/public/pages/metrics/hosts/components/search_bar/unified_search_bar.tsx index 8d522cebb5102..784c7679a5838 100644 --- a/x-pack/solutions/observability/plugins/infra/public/pages/metrics/hosts/components/search_bar/unified_search_bar.tsx +++ b/x-pack/solutions/observability/plugins/infra/public/pages/metrics/hosts/components/search_bar/unified_search_bar.tsx @@ -19,7 +19,7 @@ import type { HostLimitOptions } from '../../types'; export const UnifiedSearchBar = () => { const { - services: { unifiedSearch, application }, + services: { unifiedSearch }, } = useKibanaContextForPlugin(); const { metricsView } = useMetricsDataViewContext(); const { searchCriteria, onLimitChange, onPanelFiltersChange, onSubmit } = @@ -49,11 +49,7 @@ export const UnifiedSearchBar = () => { defaultMessage: 'Search hosts (E.g. cloud.provider:gcp AND system.load.1 > 0.5)', })} onQuerySubmit={handleRefresh} - saveQueryMenuVisibility={ - application?.capabilities?.visualize?.saveQuery - ? 'allowed_by_app_privilege' - : 'globally_managed' - } + allowSavingQueries showDatePicker showFilterBar showQueryInput diff --git a/x-pack/solutions/observability/plugins/infra/public/pages/metrics/metrics_explorer/components/chart_context_menu.test.tsx b/x-pack/solutions/observability/plugins/infra/public/pages/metrics/metrics_explorer/components/chart_context_menu.test.tsx index 0e54b6fe3f6ab..1f1ed6943157d 100644 --- a/x-pack/solutions/observability/plugins/infra/public/pages/metrics/metrics_explorer/components/chart_context_menu.test.tsx +++ b/x-pack/solutions/observability/plugins/infra/public/pages/metrics/metrics_explorer/components/chart_context_menu.test.tsx @@ -35,7 +35,7 @@ const uiCapabilities: Capabilities = { navLinks: { show: false }, management: { fake: { show: false } }, catalogue: { show: false }, - visualize: { show: true }, + visualize_v2: { show: true }, infrastructure: { save: true }, }; @@ -161,7 +161,7 @@ describe('MetricsExplorerChartContextMenu', () => { }); it('should not display "Open in Visualize" when unavailble in uiCapabilities', async () => { - const customUICapabilities = { ...uiCapabilities, visualize: { show: false } }; + const customUICapabilities = { ...uiCapabilities, visualize_v2: { show: false } }; const onFilter = jest.fn().mockImplementation((query: string) => void 0); const component = mountComponentWithProviders({ timeRange, @@ -177,7 +177,7 @@ describe('MetricsExplorerChartContextMenu', () => { }); it('should not display anything when Visualize is disabled and there are no group bys.', async () => { - const customUICapabilities = { ...uiCapabilities, visualize: { show: false } }; + const customUICapabilities = { ...uiCapabilities, visualize_v2: { show: false } }; const onFilter = jest.fn().mockImplementation((query: string) => void 0); const customOptions = { ...options, groupBy: void 0 }; const component = mountComponentWithProviders({ diff --git a/x-pack/solutions/observability/plugins/infra/public/pages/metrics/metrics_explorer/components/chart_context_menu.tsx b/x-pack/solutions/observability/plugins/infra/public/pages/metrics/metrics_explorer/components/chart_context_menu.tsx index 2196308b2f7e7..5fff40471ef69 100644 --- a/x-pack/solutions/observability/plugins/infra/public/pages/metrics/metrics_explorer/components/chart_context_menu.tsx +++ b/x-pack/solutions/observability/plugins/infra/public/pages/metrics/metrics_explorer/components/chart_context_menu.tsx @@ -135,7 +135,7 @@ export const MetricsExplorerChartContextMenu: React.FC = ({ ] : []; - const openInVisualize = uiCapabilities?.visualize?.show + const openInVisualize = uiCapabilities?.visualize_v2?.show ? [ { name: i18n.translate('xpack.infra.metricsExplorer.openInTSVB', { diff --git a/x-pack/solutions/observability/plugins/inventory/public/hooks/use_discover_redirect.ts b/x-pack/solutions/observability/plugins/inventory/public/hooks/use_discover_redirect.ts index 528e973220f20..d1cbfc8cf6f94 100644 --- a/x-pack/solutions/observability/plugins/inventory/public/hooks/use_discover_redirect.ts +++ b/x-pack/solutions/observability/plugins/inventory/public/hooks/use_discover_redirect.ts @@ -25,14 +25,14 @@ export const useDiscoverRedirect = (entity: InventoryEntity) => { }) : ''; - return application.capabilities.discover?.show + return application.capabilities.discover_v2?.show ? discoverLocator?.getRedirectUrl({ dataViewSpec: dataView?.toMinimalSpec?.(), query: { query: entityKqlFilter, language: 'kuery' }, }) : undefined; }, [ - application.capabilities.discover?.show, + application.capabilities.discover_v2?.show, dataView, discoverLocator, entity, diff --git a/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/group_view/slo_group_filters.tsx b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/group_view/slo_group_filters.tsx index 0adf7200d1629..6957e6ec61618 100644 --- a/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/group_view/slo_group_filters.tsx +++ b/x-pack/solutions/observability/plugins/slo/public/embeddable/slo/overview/group_view/slo_group_filters.tsx @@ -254,7 +254,7 @@ export function SloGroupFilters({ selectedFilters, onSelected }: Props) { query={{ query: String(kqlQuery), language: 'kuery' }} showDatePicker={false} disableQueryLanguageSwitcher={true} - saveQueryMenuVisibility="globally_managed" + allowSavingQueries onClearSavedQuery={() => {}} showQueryInput={true} onSavedQueryUpdated={(savedQuery) => { diff --git a/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_list_search_bar.tsx b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_list_search_bar.tsx index d6d501494bc4f..cb34e84e292d7 100644 --- a/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_list_search_bar.tsx +++ b/x-pack/solutions/observability/plugins/slo/public/pages/slos/components/slo_list_search_bar.tsx @@ -74,7 +74,7 @@ export function SloListSearchBar() { showDatePicker={false} showQueryInput={true} disableQueryLanguageSwitcher={true} - saveQueryMenuVisibility="globally_managed" + allowSavingQueries onClearSavedQuery={() => {}} onSavedQueryUpdated={(savedQuery) => { onStateChange({ diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/.storybook/decorators/kibana_react_decorator.tsx b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/.storybook/decorators/kibana_react_decorator.tsx index 901be2d061d05..b9843fd285361 100644 --- a/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/.storybook/decorators/kibana_react_decorator.tsx +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/.storybook/decorators/kibana_react_decorator.tsx @@ -8,6 +8,7 @@ import React, { ComponentType } from 'react'; import { action } from '@storybook/addon-actions'; import { createKibanaReactContext, type KibanaServices } from '@kbn/kibana-react-plugin/public'; import { UI_SETTINGS } from '@kbn/data-plugin/common'; +import { applicationServiceMock } from '@kbn/core-application-browser-mocks'; import { of } from 'rxjs'; import { WEB_STORAGE_CLEAR_ACTION, @@ -110,6 +111,7 @@ const uiSettings: Record = { }; const services: Partial = { + application: applicationServiceMock.createStartContract(), uiSettings: { // @ts-ignore get: (key: string) => uiSettings[key], diff --git a/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/tsconfig.json b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/tsconfig.json index 339a6ec7e7f25..a1327c4e82d20 100644 --- a/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/tsconfig.json +++ b/x-pack/solutions/security/packages/kbn-cloud-security-posture/graph/tsconfig.json @@ -17,6 +17,7 @@ "@kbn/i18n", "@kbn/i18n-react", "@kbn/storybook", - "@kbn/data-plugin" + "@kbn/data-plugin", + "@kbn/core-application-browser-mocks" ] } diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/layout/findings_search_bar.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/layout/findings_search_bar.tsx index 61d4a5cc7d6dc..dfd47a1a8cf28 100644 --- a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/layout/findings_search_bar.tsx +++ b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/layout/findings_search_bar.tsx @@ -51,7 +51,6 @@ export const FindingsSearchBar = ({ showFilterBar={true} showQueryInput={true} showDatePicker={false} - saveQueryMenuVisibility="hidden" isLoading={loading} indexPatterns={[dataView]} onQuerySubmit={setQuery} diff --git a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/alert_selection_query/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/alert_selection_query/index.tsx index 5261779f899ef..bd5669fd0d9d1 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/alert_selection_query/index.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/alert_selection_query/index.tsx @@ -161,7 +161,6 @@ const AlertSelectionQueryComponent: React.FC = ({ data-test-subj="alertSelectionSearchBar" indexPatterns={indexPatterns} filters={filters} - saveQueryMenuVisibility="hidden" showDatePicker={false} showFilterBar={true} showQueryInput={true} diff --git a/x-pack/solutions/security/plugins/security_solution/public/common/components/search_bar/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/search_bar/index.tsx index 792074b39cfeb..fe3839031d680 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/common/components/search_bar/index.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/common/components/search_bar/index.tsx @@ -337,7 +337,7 @@ export const SearchBarComponent = memo( showFilterBar={!hideFilterBar} showDatePicker={true} showQueryInput={!hideQueryInput} - saveQueryMenuVisibility="allowed_by_app_privilege" + allowSavingQueries dataTestSubj={dataTestSubj} /> diff --git a/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_actions.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_actions.test.tsx index db5f4189739fa..e597849f92b17 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_actions.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_actions.test.tsx @@ -51,7 +51,7 @@ jest.mock('../../lib/kibana/kibana_react', () => { addWarning: jest.fn(), }, }, - application: { capabilities: { visualize: { save: true } } }, + application: { capabilities: { visualize_v2: { save: true } } }, }, }), }; diff --git a/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_save_to_library.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_save_to_library.test.tsx index 0801ce58ce7a4..b16fa3d4870e5 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_save_to_library.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_save_to_library.test.tsx @@ -34,7 +34,7 @@ const mockUseKibana = useKibana as jest.Mock; describe('useSaveToLibrary hook', () => { const mockStartServices = { - application: { capabilities: { visualize: { save: true } } }, + application: { capabilities: { visualize_v2: { save: true } } }, lens: { SaveModalComponent: jest.fn() }, }; @@ -58,7 +58,7 @@ describe('useSaveToLibrary hook', () => { it('should disable visualizations if user cannot save', () => { const noSaveCapabilities = { ...mockStartServices, - application: { capabilities: { visualize: { save: false } } }, + application: { capabilities: { visualize_v2: { save: false } } }, }; mockUseKibana.mockReturnValue({ services: noSaveCapabilities }); diff --git a/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_save_to_library.tsx b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_save_to_library.tsx index ab3ff52eab674..e58d598e2b100 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_save_to_library.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/common/components/visualization_actions/use_save_to_library.tsx @@ -21,7 +21,7 @@ export const useSaveToLibrary = ({ attributes: LensAttributes | undefined | null; }) => { const startServices = useKibana().services; - const canSaveVisualization = !!startServices.application.capabilities.visualize?.save; + const canSaveVisualization = !!startServices.application.capabilities.visualize_v2?.save; const { SaveModalComponent } = startServices.lens; const getSecuritySolutionUrl = useGetSecuritySolutionUrl(); const { redirectTo, getEditOrCreateDashboardPath } = useRedirectToDashboardFromLens({ diff --git a/x-pack/solutions/security/plugins/security_solution/public/common/lib/kibana/kibana_react.mock.ts b/x-pack/solutions/security/plugins/security_solution/public/common/lib/kibana/kibana_react.mock.ts index c24142f63a843..89df2a0510d25 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/common/lib/kibana/kibana_react.mock.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/common/lib/kibana/kibana_react.mock.ts @@ -209,6 +209,10 @@ export const createStartServicesMock = ( crud: true, read: true, }, + savedQueryManagement: { + showQueries: true, + saveQuery: true, + }, }, }, security, diff --git a/x-pack/solutions/security/plugins/security_solution/public/dashboards/components/dashboard_tool_bar.tsx b/x-pack/solutions/security/plugins/security_solution/public/dashboards/components/dashboard_tool_bar.tsx index b2673d4770d0b..8475c25bcb51f 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/dashboards/components/dashboard_tool_bar.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/dashboards/components/dashboard_tool_bar.tsx @@ -7,7 +7,7 @@ import React, { useCallback, useEffect, useMemo } from 'react'; import type { DashboardApi } from '@kbn/dashboard-plugin/public'; -import { DashboardTopNav, LEGACY_DASHBOARD_APP_ID } from '@kbn/dashboard-plugin/public'; +import { DashboardTopNav } from '@kbn/dashboard-plugin/public'; import type { ViewMode } from '@kbn/embeddable-plugin/public'; import type { ChromeBreadcrumb } from '@kbn/core/public'; @@ -68,7 +68,7 @@ const DashboardToolBarComponent = ({ }), [] ); - const { showWriteControls } = useCapabilities(LEGACY_DASHBOARD_APP_ID); + const { showWriteControls } = useCapabilities('dashboard_v2'); return showWriteControls ? ( = ({ const filters = useDeepEqualSelector(getGlobalFiltersQuerySelector); const { sourcererDataView } = useSourcererDataView(); - const { show: canReadDashboard } = - useCapabilities(LEGACY_DASHBOARD_APP_ID); + const { show: canReadDashboard } = useCapabilities('dashboard_v2'); const errorState = useMemo( () => (canReadDashboard ? null : DashboardViewPromptState.NoReadPermission), [canReadDashboard] diff --git a/x-pack/solutions/security/plugins/security_solution/public/dashboards/pages/landing_page/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/dashboards/pages/landing_page/index.tsx index b25b235213e60..0f3a57098be02 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/dashboards/pages/landing_page/index.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/dashboards/pages/landing_page/index.tsx @@ -15,7 +15,7 @@ import { } from '@elastic/eui'; import React, { useCallback, useMemo } from 'react'; import type { DashboardCapabilities } from '@kbn/dashboard-plugin/common/types'; -import { DashboardListingTable, LEGACY_DASHBOARD_APP_ID } from '@kbn/dashboard-plugin/public'; +import { DashboardListingTable } from '@kbn/dashboard-plugin/public'; import { LandingLinksImageCards } from '@kbn/security-solution-navigation/landing_links'; import { useContractComponents } from '../../../common/hooks/use_contract_component'; import { SecuritySolutionPageWrapper } from '../../../common/components/page_wrapper'; @@ -87,7 +87,7 @@ export const DashboardsLandingPage = () => { const { links = [] } = useRootNavLink(SecurityPageName.dashboards) ?? {}; const urlState = useGlobalQueryString(); const { show: canReadDashboard, createNew: canCreateDashboard } = - useCapabilities(LEGACY_DASHBOARD_APP_ID); + useCapabilities('dashboard_v2'); const { navigateTo } = useNavigateTo(); const getSecuritySolutionUrl = useGetSecuritySolutionUrl(); const getSecuritySolutionDashboardUrl = useCallback( diff --git a/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/network.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/network.test.tsx index ab4627f911165..6a697a3206229 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/network.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/network.test.tsx @@ -83,7 +83,7 @@ jest.mock('../../../common/lib/kibana', () => { ...original.useKibana().services.application, capabilities: { siemV2: { crud_alerts: true, read_alerts: true }, - maps: mockMapVisibility(), + maps_v2: mockMapVisibility(), }, navigateToApp: mockNavigateToApp, }, diff --git a/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/network.tsx b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/network.tsx index 0732b31805609..939f43f1648df 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/network.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/explore/network/pages/network.tsx @@ -79,7 +79,7 @@ const NetworkComponent = React.memo( const kibana = useKibana(); const { tabName } = useParams<{ tabName: string }>(); - const canUseMaps = kibana.services.application.capabilities.maps.show; + const canUseMaps = kibana.services.application.capabilities.maps_v2.show; const tabsFilters = useMemo(() => { if (tabName === NetworkRouteType.events) { diff --git a/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/dashboards/index.ts b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/dashboards/index.ts index 6d9bce2e34904..0492c00c512b1 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/dashboards/index.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/onboarding/components/onboarding_body/cards/dashboards/index.ts @@ -22,5 +22,5 @@ export const dashboardsCardConfig: OnboardingCardConfig = { './dashboards_card' ) ), - capabilitiesRequired: ['dashboard.show'], + capabilitiesRequired: ['dashboard_v2.show'], }; diff --git a/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/es_serverless_resources/roles.yml b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/es_serverless_resources/roles.yml index f51004e521bf4..04cc11ad6d9a6 100644 --- a/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/es_serverless_resources/roles.yml +++ b/x-pack/solutions/security/plugins/security_solution/scripts/endpoint/common/roles_users/serverless/es_serverless_resources/roles.yml @@ -72,12 +72,13 @@ viewer: - feature_actions.read - feature_builtInAlerts.read - feature_osquery.read - - feature_discover.all - - feature_dashboard.all + - feature_discover_v2.all + - feature_dashboard_v2.all - feature_canvas.all - feature_graph.all - - feature_maps.all - - feature_visualize.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' run_as: [] @@ -155,12 +156,13 @@ editor: - feature_actions.endpoint_security_execute - feature_builtInAlerts.all - feature_osquery.all - - feature_discover.all - - feature_dashboard.all + - feature_discover_v2.all + - feature_dashboard_v2.all - feature_canvas.all - feature_graph.all - - feature_maps.all - - feature_visualize.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' run_as: [] @@ -208,12 +210,13 @@ t1_analyst: - feature_builtInAlerts.read - feature_osquery.read - feature_osquery.run_saved_queries - - feature_discover.all - - feature_dashboard.all + - feature_discover_v2.all + - feature_dashboard_v2.all - feature_canvas.all - feature_graph.all - - feature_maps.all - - feature_visualize.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' t2_analyst: @@ -266,12 +269,13 @@ t2_analyst: - feature_builtInAlerts.read - feature_osquery.read - feature_osquery.run_saved_queries - - feature_discover.all - - feature_dashboard.all + - feature_discover_v2.all + - feature_dashboard_v2.all - feature_canvas.all - feature_graph.all - - feature_maps.all - - feature_visualize.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' t3_analyst: @@ -340,12 +344,13 @@ t3_analyst: - feature_actions.endpoint_security_execute - feature_builtInAlerts.all - feature_osquery.all - - feature_discover.all - - feature_dashboard.all + - feature_discover_v2.all + - feature_dashboard_v2.all - feature_canvas.all - feature_graph.all - - feature_maps.all - - feature_visualize.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' threat_intelligence_analyst: @@ -400,12 +405,13 @@ threat_intelligence_analyst: - feature_actions.read - feature_builtInAlerts.read - feature_osquery.all - - feature_discover.all - - feature_dashboard.all + - feature_discover_v2.all + - feature_dashboard_v2.all - feature_canvas.all - feature_graph.all - - feature_maps.all - - feature_visualize.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' rule_author: @@ -472,12 +478,13 @@ rule_author: - feature_actions.read - feature_builtInAlerts.all - feature_osquery.all - - feature_discover.all - - feature_dashboard.all + - feature_discover_v2.all + - feature_dashboard_v2.all - feature_canvas.all - feature_graph.all - - feature_maps.all - - feature_visualize.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' soc_manager: @@ -551,12 +558,13 @@ soc_manager: - feature_builtInAlerts.all - feature_osquery.all - feature_indexPatterns.all - - feature_discover.all - - feature_dashboard.all + - feature_discover_v2.all + - feature_dashboard_v2.all - feature_canvas.all - feature_graph.all - - feature_maps.all - - feature_visualize.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' detections_admin: @@ -613,12 +621,13 @@ detections_admin: - feature_actions.all - feature_builtInAlerts.all - feature_dev_tools.all - - feature_discover.all - - feature_dashboard.all + - feature_discover_v2.all + - feature_dashboard_v2.all - feature_canvas.all - feature_graph.all - - feature_maps.all - - feature_visualize.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' platform_engineer: @@ -679,12 +688,13 @@ platform_engineer: - feature_fleetv2.all - feature_osquery.all - feature_indexPatterns.all - - feature_discover.all - - feature_dashboard.all + - feature_discover_v2.all + - feature_dashboard_v2.all - feature_canvas.all - feature_graph.all - - feature_maps.all - - feature_visualize.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' endpoint_operations_analyst: @@ -756,12 +766,13 @@ endpoint_operations_analyst: - feature_osquery.all - feature_fleet.all - feature_fleetv2.all - - feature_discover.all - - feature_dashboard.all + - feature_discover_v2.all + - feature_dashboard_v2.all - feature_canvas.all - feature_graph.all - - feature_maps.all - - feature_visualize.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' endpoint_policy_manager: @@ -827,10 +838,11 @@ endpoint_policy_manager: - feature_osquery.all - feature_fleet.all - feature_fleetv2.all - - feature_discover.all - - feature_dashboard.all + - feature_discover_v2.all + - feature_dashboard_v2.all - feature_canvas.all - feature_graph.all - - feature_maps.all - - feature_visualize.all - resources: '*' + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all + resources: '*' \ No newline at end of file diff --git a/x-pack/test/api_integration/apis/features/features/features.ts b/x-pack/test/api_integration/apis/features/features/features.ts index fe33d3483150b..51bc40c3af9fb 100644 --- a/x-pack/test/api_integration/apis/features/features/features.ts +++ b/x-pack/test/api_integration/apis/features/features/features.ts @@ -95,9 +95,9 @@ export default function ({ getService }: FtrProviderContext) { const featureIds = body.map((b: KibanaFeature) => b.id); expect(featureIds.sort()).to.eql( [ - 'discover', - 'visualize', - 'dashboard', + 'discover_v2', + 'visualize_v2', + 'dashboard_v2', 'dataQuality', 'dev_tools', 'actions', @@ -126,7 +126,7 @@ export default function ({ getService }: FtrProviderContext) { 'inventory', 'logs', 'maintenanceWindow', - 'maps', + 'maps_v2', 'osquery', 'rulesSettings', 'uptime', @@ -151,9 +151,9 @@ export default function ({ getService }: FtrProviderContext) { expect(body).to.be.an(Array); const scopeAgnosticFeatures = [ - 'discover', - 'visualize', - 'dashboard', + 'discover_v2', + 'visualize_v2', + 'dashboard_v2', 'dataQuality', 'dev_tools', 'actions', @@ -182,7 +182,7 @@ export default function ({ getService }: FtrProviderContext) { 'inventory', 'logs', 'maintenanceWindow', - 'maps', + 'maps_v2', 'osquery', 'rulesSettings', 'uptime', diff --git a/x-pack/test/api_integration/apis/security/privileges.ts b/x-pack/test/api_integration/apis/security/privileges.ts index 39c1ebac51f11..25b044055449d 100644 --- a/x-pack/test/api_integration/apis/security/privileges.ts +++ b/x-pack/test/api_integration/apis/security/privileges.ts @@ -22,6 +22,7 @@ export default function ({ getService }: FtrProviderContext) { savedObjectsTagging: ['all', 'read', 'minimal_all', 'minimal_read'], canvas: ['all', 'read', 'minimal_all', 'minimal_read', 'generate_report'], maps: ['all', 'read', 'minimal_all', 'minimal_read'], + maps_v2: ['all', 'read', 'minimal_all', 'minimal_read'], generalCases: [ 'all', 'read', @@ -180,7 +181,17 @@ export default function ({ getService }: FtrProviderContext) { 'store_search_session', 'generate_report', ], + discover_v2: [ + 'all', + 'read', + 'minimal_all', + 'minimal_read', + 'url_create', + 'store_search_session', + 'generate_report', + ], visualize: ['all', 'read', 'minimal_all', 'minimal_read', 'url_create', 'generate_report'], + visualize_v2: ['all', 'read', 'minimal_all', 'minimal_read', 'url_create', 'generate_report'], dashboard: [ 'all', 'read', @@ -191,6 +202,16 @@ export default function ({ getService }: FtrProviderContext) { 'generate_report', 'download_csv_report', ], + dashboard_v2: [ + 'all', + 'read', + 'minimal_all', + 'minimal_read', + 'url_create', + 'store_search_session', + 'generate_report', + 'download_csv_report', + ], dev_tools: ['all', 'read', 'minimal_all', 'minimal_read'], advancedSettings: ['all', 'read', 'minimal_all', 'minimal_read'], indexPatterns: ['all', 'read', 'minimal_all', 'minimal_read'], diff --git a/x-pack/test/api_integration/apis/security/privileges_basic.ts b/x-pack/test/api_integration/apis/security/privileges_basic.ts index 7e4b4e7348627..95f4dfe35a5a5 100644 --- a/x-pack/test/api_integration/apis/security/privileges_basic.ts +++ b/x-pack/test/api_integration/apis/security/privileges_basic.ts @@ -21,8 +21,11 @@ export default function ({ getService }: FtrProviderContext) { const expected = { features: { discover: ['all', 'read', 'minimal_all', 'minimal_read'], + discover_v2: ['all', 'read', 'minimal_all', 'minimal_read'], visualize: ['all', 'read', 'minimal_all', 'minimal_read'], + visualize_v2: ['all', 'read', 'minimal_all', 'minimal_read'], dashboard: ['all', 'read', 'minimal_all', 'minimal_read'], + dashboard_v2: ['all', 'read', 'minimal_all', 'minimal_read'], dev_tools: ['all', 'read', 'minimal_all', 'minimal_read'], advancedSettings: ['all', 'read', 'minimal_all', 'minimal_read'], indexPatterns: ['all', 'read', 'minimal_all', 'minimal_read'], @@ -31,6 +34,7 @@ export default function ({ getService }: FtrProviderContext) { savedObjectsTagging: ['all', 'read', 'minimal_all', 'minimal_read'], graph: ['all', 'read', 'minimal_all', 'minimal_read'], maps: ['all', 'read', 'minimal_all', 'minimal_read'], + maps_v2: ['all', 'read', 'minimal_all', 'minimal_read'], generalCases: ['all', 'read', 'minimal_all', 'minimal_read'], generalCasesV2: ['all', 'read', 'minimal_all', 'minimal_read'], observabilityCases: ['all', 'read', 'minimal_all', 'minimal_read'], @@ -114,6 +118,7 @@ export default function ({ getService }: FtrProviderContext) { savedObjectsTagging: ['all', 'read', 'minimal_all', 'minimal_read'], canvas: ['all', 'read', 'minimal_all', 'minimal_read'], maps: ['all', 'read', 'minimal_all', 'minimal_read'], + maps_v2: ['all', 'read', 'minimal_all', 'minimal_read'], generalCases: [ 'all', 'read', @@ -272,7 +277,17 @@ export default function ({ getService }: FtrProviderContext) { 'store_search_session', 'generate_report', ], + discover_v2: [ + 'all', + 'read', + 'minimal_all', + 'minimal_read', + 'url_create', + 'store_search_session', + 'generate_report', + ], visualize: ['all', 'read', 'minimal_all', 'minimal_read', 'url_create'], + visualize_v2: ['all', 'read', 'minimal_all', 'minimal_read', 'url_create'], dashboard: [ 'all', 'read', @@ -282,6 +297,15 @@ export default function ({ getService }: FtrProviderContext) { 'store_search_session', 'download_csv_report', ], + dashboard_v2: [ + 'all', + 'read', + 'minimal_all', + 'minimal_read', + 'url_create', + 'store_search_session', + 'download_csv_report', + ], dev_tools: ['all', 'read', 'minimal_all', 'minimal_read'], advancedSettings: ['all', 'read', 'minimal_all', 'minimal_read'], indexPatterns: ['all', 'read', 'minimal_all', 'minimal_read'], diff --git a/x-pack/test/api_integration/apis/security/roles.ts b/x-pack/test/api_integration/apis/security/roles.ts index e49d19f15afd3..80e07b69f98df 100644 --- a/x-pack/test/api_integration/apis/security/roles.ts +++ b/x-pack/test/api_integration/apis/security/roles.ts @@ -49,8 +49,8 @@ export default function ({ getService }: FtrProviderContext) { }, { feature: { - dashboard: ['read'], - discover: ['all'], + dashboard_v2: ['read'], + discover_v2: ['all'], ml: ['all'], }, spaces: ['marketing', 'sales'], @@ -78,7 +78,11 @@ export default function ({ getService }: FtrProviderContext) { }, { application: 'kibana-.kibana', - privileges: ['feature_dashboard.read', 'feature_discover.all', 'feature_ml.all'], + privileges: [ + 'feature_dashboard_v2.read', + 'feature_discover_v2.all', + 'feature_ml.all', + ], resources: ['space:marketing', 'space:sales'], }, ], @@ -206,7 +210,7 @@ export default function ({ getService }: FtrProviderContext) { kibana: [ { feature: { - dashboard: ['read'], + dashboard_v2: ['read'], dev_tools: ['all'], }, spaces: ['*'], @@ -233,7 +237,7 @@ export default function ({ getService }: FtrProviderContext) { applications: [ { application: 'kibana-.kibana', - privileges: ['feature_dashboard.read', 'feature_dev_tools.all'], + privileges: ['feature_dashboard_v2.read', 'feature_dev_tools.all'], resources: ['*'], }, { @@ -332,7 +336,11 @@ export default function ({ getService }: FtrProviderContext) { }, { application: 'kibana-.kibana', - privileges: ['feature_dashboard.read', 'feature_discover.all', 'feature_ml.all'], + privileges: [ + 'feature_dashboard_v2.read', + 'feature_discover_v2.all', + 'feature_ml.all', + ], resources: ['space:marketing', 'space:sales'], }, { @@ -380,8 +388,8 @@ export default function ({ getService }: FtrProviderContext) { { base: [], feature: { - dashboard: ['read'], - discover: ['all'], + dashboard_v2: ['read'], + discover_v2: ['all'], ml: ['all'], }, spaces: ['marketing', 'sales'], @@ -408,7 +416,11 @@ export default function ({ getService }: FtrProviderContext) { applications: [ { application: 'kibana-.kibana', - privileges: ['feature_dashboard.read', 'feature_discover.all', 'feature_ml.all'], + privileges: [ + 'feature_dashboard_v2.read', + 'feature_discover_v2.all', + 'feature_ml.all', + ], resources: ['space:marketing', 'space:sales'], }, ], @@ -436,7 +448,11 @@ export default function ({ getService }: FtrProviderContext) { applications: [ { application: 'kibana-.kibana', - privileges: ['feature_dashboard.read', 'feature_discover.all', 'feature_ml.all'], + privileges: [ + 'feature_dashboard_v2.read', + 'feature_discover_v2.all', + 'feature_ml.all', + ], resources: ['space:engineering', 'space:sales'], }, ], diff --git a/x-pack/test/api_integration/apis/security/roles_bulk.ts b/x-pack/test/api_integration/apis/security/roles_bulk.ts index 52c6f9f21ab29..0415bc66c98ca 100644 --- a/x-pack/test/api_integration/apis/security/roles_bulk.ts +++ b/x-pack/test/api_integration/apis/security/roles_bulk.ts @@ -97,8 +97,8 @@ export default function ({ getService }: FtrProviderContext) { }, { feature: { - dashboard: ['read'], - discover: ['all'], + dashboard_v2: ['read'], + discover_v2: ['all'], ml: ['all'], }, spaces: ['marketing', 'sales'], @@ -122,8 +122,8 @@ export default function ({ getService }: FtrProviderContext) { }, { feature: { - dashboard: ['read'], - discover: ['all'], + dashboard_v2: ['read'], + discover_v2: ['all'], ml: ['all'], }, spaces: ['marketing', 'sales'], @@ -154,7 +154,11 @@ export default function ({ getService }: FtrProviderContext) { }, { application: 'kibana-.kibana', - privileges: ['feature_dashboard.read', 'feature_discover.all', 'feature_ml.all'], + privileges: [ + 'feature_dashboard_v2.read', + 'feature_discover_v2.all', + 'feature_ml.all', + ], resources: ['space:marketing', 'space:sales'], }, ], @@ -322,7 +326,7 @@ export default function ({ getService }: FtrProviderContext) { kibana: [ { feature: { - dashboard: ['read'], + dashboard_v2: ['read'], dev_tools: ['all'], }, spaces: ['*'], @@ -337,7 +341,7 @@ export default function ({ getService }: FtrProviderContext) { kibana: [ { feature: { - dashboard: ['read'], + dashboard_v2: ['read'], dev_tools: ['all'], }, spaces: ['*'], @@ -378,7 +382,7 @@ export default function ({ getService }: FtrProviderContext) { applications: [ { application: 'kibana-.kibana', - privileges: ['feature_dashboard.read', 'feature_dev_tools.all'], + privileges: ['feature_dashboard_v2.read', 'feature_dev_tools.all'], resources: ['*'], }, { @@ -403,7 +407,7 @@ export default function ({ getService }: FtrProviderContext) { applications: [ { application: 'kibana-.kibana', - privileges: ['feature_dashboard.read', 'feature_dev_tools.all'], + privileges: ['feature_dashboard_v2.read', 'feature_dev_tools.all'], resources: ['*'], }, { diff --git a/x-pack/test/functional/apps/saved_query_management/feature_controls/security.ts b/x-pack/test/functional/apps/saved_query_management/feature_controls/security.ts index 9c3b989882469..eaab1313fc0df 100644 --- a/x-pack/test/functional/apps/saved_query_management/feature_controls/security.ts +++ b/x-pack/test/functional/apps/saved_query_management/feature_controls/security.ts @@ -5,12 +5,55 @@ * 2.0. */ +import expect from '@kbn/expect'; import { FtrProviderContext } from '../../../ftr_provider_context'; import { getSavedQuerySecurityUtils } from '../utils/saved_query_security'; -type AppName = 'discover' | 'dashboard' | 'maps' | 'visualize'; - -const apps: AppName[] = ['discover', 'dashboard', 'maps', 'visualize']; +const featureConfigs = [ + { + feature: 'discover', + app: 'discover', + hasImplicitSaveQueryManagement: true, + }, + { + feature: 'dashboard', + app: 'dashboard', + hasImplicitSaveQueryManagement: true, + }, + { + feature: 'maps', + app: 'maps', + hasImplicitSaveQueryManagement: true, + }, + { + feature: 'visualize', + app: 'visualize', + hasImplicitSaveQueryManagement: true, + }, + { + feature: 'discover_v2', + app: 'discover', + hasImplicitSaveQueryManagement: false, + }, + { + feature: 'dashboard_v2', + app: 'dashboard', + hasImplicitSaveQueryManagement: false, + }, + { + feature: 'maps_v2', + app: 'maps', + hasImplicitSaveQueryManagement: false, + }, + { + feature: 'visualize_v2', + app: 'visualize', + hasImplicitSaveQueryManagement: false, + }, +] as const; + +type FeatureName = (typeof featureConfigs)[number]['feature']; +type FeatureApp = (typeof featureConfigs)[number]['app']; export default function (ctx: FtrProviderContext) { const { getPageObjects, getService } = ctx; @@ -18,23 +61,25 @@ export default function (ctx: FtrProviderContext) { const esArchiver = getService('esArchiver'); const securityService = getService('security'); const globalNav = getService('globalNav'); - const { common, discover, security, dashboard, maps, visualize } = getPageObjects([ + const { common, discover, security, dashboard, maps, visualize, spaceSelector } = getPageObjects([ 'common', 'discover', 'security', 'dashboard', 'maps', 'visualize', + 'spaceSelector', ]); const kibanaServer = getService('kibanaServer'); async function login( - appName: AppName, - appPrivilege: 'read' | 'all', - globalPrivilege: 'none' | 'all' + featureName: FeatureName, + featurePrivilege: 'read' | 'all', + globalPrivilege: 'none' | 'read' | 'all', + expectSpaceSelector = false ) { - const name = `global_saved_query_${appName}`; - const password = `password_${name}_${appPrivilege}_${globalPrivilege}`; + const name = `global_saved_query_${featureName}`; + const password = `password_${name}_${featurePrivilege}_${globalPrivilege}`; await securityService.role.create(name, { elasticsearch: { @@ -43,7 +88,7 @@ export default function (ctx: FtrProviderContext) { kibana: [ { feature: { - [appName]: [appPrivilege], + [featureName]: [featurePrivilege], savedQueryManagement: [globalPrivilege], }, spaces: ['*'], @@ -57,19 +102,17 @@ export default function (ctx: FtrProviderContext) { full_name: 'test user', }); - await security.login(`${name}-user`, password, { - expectSpaceSelector: false, - }); + await security.login(`${name}-user`, password, { expectSpaceSelector }); } - async function logout(appName: AppName) { - const name = `global_saved_query_${appName}`; + async function logout(featureName: FeatureName) { + const name = `global_saved_query_${featureName}`; await security.forceLogout(); await securityService.role.delete(name); await securityService.user.delete(`${name}-user`); } - async function navigateToApp(appName: AppName) { + async function navigateToApp(appName: FeatureApp) { switch (appName) { case 'discover': await common.navigateToApp('discover'); @@ -91,100 +134,185 @@ export default function (ctx: FtrProviderContext) { } } - describe('Security: App vs Global privilege', () => { - apps.forEach((appName) => { - before(async () => { - await kibanaServer.savedObjects.cleanStandardList(); + describe('Security', () => { + describe('App vs Global privilege', () => { + featureConfigs.forEach(({ feature, app, hasImplicitSaveQueryManagement }) => { + before(async () => { + await kibanaServer.savedObjects.cleanStandardList(); - await kibanaServer.importExport.load( - 'x-pack/test/functional/fixtures/kbn_archiver/dashboard/feature_controls/security/security.json' - ); + await kibanaServer.importExport.load( + 'x-pack/test/functional/fixtures/kbn_archiver/dashboard/feature_controls/security/security.json' + ); - await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/logstash_functional'); + await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/logstash_functional'); - // ensure we're logged out, so we can log in as the appropriate users - await security.forceLogout(); - }); - - after(async () => { - // logout, so the other tests don't accidentally run as the custom users we're testing below - // NOTE: Logout needs to happen before anything else to avoid flaky behavior - await security.forceLogout(); + // ensure we're logged out, so we can log in as the appropriate users + await security.forceLogout(); + }); - await kibanaServer.importExport.unload( - 'x-pack/test/functional/fixtures/kbn_archiver/dashboard/feature_controls/security/security.json' - ); + after(async () => { + // logout, so the other tests don't accidentally run as the custom users we're testing below + // NOTE: Logout needs to happen before anything else to avoid flaky behavior + await security.forceLogout(); - await kibanaServer.savedObjects.cleanStandardList(); - }); + await kibanaServer.importExport.unload( + 'x-pack/test/functional/fixtures/kbn_archiver/dashboard/feature_controls/security/security.json' + ); - describe(`${appName} read-only privileges with enabled savedQueryManagement.saveQuery privilege`, () => { - before(async () => { - await login(appName, 'read', 'all'); - await navigateToApp(appName); - await common.waitForTopNavToBeVisible(); + await kibanaServer.savedObjects.cleanStandardList(); }); - after(async () => { - await logout(appName); - }); + describe(`${feature} read-only privileges with savedQueryManagement.saveQuery all privilege`, () => { + before(async () => { + await login(feature, 'read', 'all'); + await navigateToApp(app); + await common.waitForTopNavToBeVisible(); + }); - it('shows read-only badge', async () => { - await globalNav.badgeExistsOrFail('Read only'); - }); + after(async () => { + await logout(feature); + }); - savedQuerySecurityUtils.shouldAllowSavingQueries(); - }); + it('shows read-only badge', async () => { + await globalNav.badgeExistsOrFail('Read only'); + }); - describe(`${appName} read-only privileges with disabled savedQueryManagement.saveQuery privilege`, () => { - before(async () => { - await login(appName, 'read', 'none'); - await navigateToApp(appName); + savedQuerySecurityUtils.shouldAllowSavingQueries(); }); - after(async () => { - await logout(appName); - }); + describe(`${feature} read-only privileges with savedQueryManagement.saveQuery read privilege`, () => { + before(async () => { + await login(feature, 'read', 'read'); + await navigateToApp(app); + await common.waitForTopNavToBeVisible(); + }); - it('shows read-only badge', async () => { - await globalNav.badgeExistsOrFail('Read only'); - }); + after(async () => { + await logout(feature); + }); - savedQuerySecurityUtils.shouldDisallowSavingButAllowLoadingSavedQueries(); - }); + it('shows read-only badge', async () => { + await globalNav.badgeExistsOrFail('Read only'); + }); - describe(`${appName} all privileges with enabled savedQueryManagement.saveQuery privilege`, () => { - before(async () => { - await login(appName, 'all', 'all'); - await navigateToApp(appName); + savedQuerySecurityUtils.shouldDisallowSavingButAllowLoadingSavedQueries(); }); - after(async () => { - await logout(appName); + describe(`${feature} read-only privileges with disabled savedQueryManagement.saveQuery privilege`, () => { + before(async () => { + await login(feature, 'read', 'none'); + await navigateToApp(app); + }); + + after(async () => { + await logout(feature); + }); + + it('shows read-only badge', async () => { + await globalNav.badgeExistsOrFail('Read only'); + }); + + if (hasImplicitSaveQueryManagement) { + savedQuerySecurityUtils.shouldDisallowSavingButAllowLoadingSavedQueries(); + } else { + savedQuerySecurityUtils.shouldDisallowAccessToSavedQueries(); + } }); - it("doesn't show read-only badge", async () => { - await globalNav.badgeMissingOrFail(); - }); + describe(`${feature} all privileges with savedQueryManagement.saveQuery all privilege`, () => { + before(async () => { + await login(feature, 'all', 'all'); + await navigateToApp(app); + }); - savedQuerySecurityUtils.shouldAllowSavingQueries(); - }); + after(async () => { + await logout(feature); + }); - describe(`${appName} all privileges with disabled savedQueryManagement.saveQuery privilege`, () => { - before(async () => { - await login(appName, 'all', 'none'); - await navigateToApp(appName); + it("doesn't show read-only badge", async () => { + await globalNav.badgeMissingOrFail(); + }); + + savedQuerySecurityUtils.shouldAllowSavingQueries(); }); - after(async () => { - await logout(appName); + describe(`${feature} all privileges with savedQueryManagement.saveQuery read privilege`, () => { + before(async () => { + await login(feature, 'all', 'read'); + await navigateToApp(app); + }); + + after(async () => { + await logout(feature); + }); + + it("doesn't show read-only badge", async () => { + await globalNav.badgeMissingOrFail(); + }); + + if (hasImplicitSaveQueryManagement) { + savedQuerySecurityUtils.shouldAllowSavingQueries(); + } else { + savedQuerySecurityUtils.shouldDisallowSavingButAllowLoadingSavedQueries(); + } }); - it("doesn't show read-only badge", async () => { - await globalNav.badgeMissingOrFail(); + describe(`${feature} all privileges with disabled savedQueryManagement.saveQuery privilege`, () => { + before(async () => { + await login(feature, 'all', 'none'); + await navigateToApp(app); + }); + + after(async () => { + await logout(feature); + }); + + it("doesn't show read-only badge", async () => { + await globalNav.badgeMissingOrFail(); + }); + + if (hasImplicitSaveQueryManagement) { + savedQuerySecurityUtils.shouldAllowSavingQueries(); + } else { + savedQuerySecurityUtils.shouldDisallowAccessToSavedQueries(); + } }); + }); + }); - savedQuerySecurityUtils.shouldAllowSavingQueries(); + describe('Spaces feature visibility', () => { + featureConfigs.forEach(({ feature }) => { + describe(`space with ${feature} disabled`, () => { + const spaceId = `${feature}_space`; + let disabledFeatureId: string; + + before(async () => { + await kibanaServer.spaces.create({ + id: spaceId, + name: spaceId, + disabledFeatures: [feature], + }); + const disabledFeature = (await kibanaServer.spaces.get(spaceId)) as { + disabledFeatures: string[]; + }; + [disabledFeatureId] = disabledFeature.disabledFeatures; + await common.navigateToApp('home'); + }); + + after(async () => { + await kibanaServer.spaces.delete(spaceId); + }); + + it('should not disable saved query management feature visibility', async () => { + await spaceSelector.openSpacesNav(); + await spaceSelector.clickManageSpaces(); + await spaceSelector.clickSpaceEditButton(spaceId); + await spaceSelector.toggleFeatureCategoryVisibility('kibana'); + await spaceSelector.toggleFeatureCategoryVisibility('management'); + expect(await spaceSelector.getFeatureCheckboxState(disabledFeatureId)).to.be(false); + expect(await spaceSelector.getFeatureCheckboxState('savedQueryManagement')).to.be(true); + }); + }); }); }); }); diff --git a/x-pack/test/functional/apps/saved_query_management/utils/saved_query_security.ts b/x-pack/test/functional/apps/saved_query_management/utils/saved_query_security.ts index dd5dccec561f2..98bec0eeb8862 100644 --- a/x-pack/test/functional/apps/saved_query_management/utils/saved_query_security.ts +++ b/x-pack/test/functional/apps/saved_query_management/utils/saved_query_security.ts @@ -92,5 +92,14 @@ export function getSavedQuerySecurityUtils({ getPageObjects, getService }: FtrPr await savedQueryManagementComponent.clearCurrentlyLoadedQuery(); }); }, + shouldDisallowAccessToSavedQueries: () => { + it('does not allow loading a saved query via the saved query management component', async () => { + await savedQueryManagementComponent.savedQueryLoadButtonMissingOrFail(); + }); + + it('does not allow saving via the saved query management component', async () => { + await savedQueryManagementComponent.saveNewQueryMissingOrFail('hidden'); + }); + }, }; } diff --git a/x-pack/test/functional/page_objects/space_selector_page.ts b/x-pack/test/functional/page_objects/space_selector_page.ts index 987b03533b480..4d699ebc306b0 100644 --- a/x-pack/test/functional/page_objects/space_selector_page.ts +++ b/x-pack/test/functional/page_objects/space_selector_page.ts @@ -208,6 +208,10 @@ export class SpaceSelectorPageObject extends FtrService { await this.testSubjects.click(`featureCategoryCheckbox_${categoryName}`); } + async getFeatureCheckboxState(featureId: string) { + return await this.testSubjects.isChecked(`featureCheckbox_${featureId}`); + } + async clickOnDescriptionOfSpace() { await this.testSubjects.click('descriptionSpaceText'); } diff --git a/x-pack/test/security_api_integration/tests/anonymous/capabilities.ts b/x-pack/test/security_api_integration/tests/anonymous/capabilities.ts index 2327292f3ea44..c684e2518def4 100644 --- a/x-pack/test/security_api_integration/tests/anonymous/capabilities.ts +++ b/x-pack/test/security_api_integration/tests/anonymous/capabilities.ts @@ -25,7 +25,10 @@ export default function ({ getService }: FtrProviderContext) { return Object.fromEntries( Object.entries(apiResponse.body).filter( ([key]) => - key === 'discover' || key === 'dashboard' || key === 'visualize' || key === 'maps' + key === 'discover_v2' || + key === 'dashboard_v2' || + key === 'visualize_v2' || + key === 'maps_v2' ) ); } @@ -35,12 +38,12 @@ export default function ({ getService }: FtrProviderContext) { await spaces.create({ id: 'space-a', name: 'space-a', - disabledFeatures: ['discover', 'visualize'], + disabledFeatures: ['discover_v2', 'visualize_v2'], }); await spaces.create({ id: 'space-b', name: 'space-b', - disabledFeatures: ['dashboard', 'maps'], + disabledFeatures: ['dashboard_v2', 'maps_v2'], }); }); @@ -53,105 +56,93 @@ export default function ({ getService }: FtrProviderContext) { it('all capabilities should be disabled', async () => { expectSnapshot(await getAnonymousCapabilities()).toMatchInline(` Object { - "dashboard": Object { + "dashboard_v2": Object { "createNew": false, "createShortUrl": false, "downloadCsv": false, "generateScreenshot": false, - "saveQuery": false, "show": false, "showWriteControls": false, "storeSearchSession": false, }, - "discover": Object { + "discover_v2": Object { "createShortUrl": false, "generateCsv": false, "save": false, - "saveQuery": false, "show": false, "storeSearchSession": false, }, - "maps": Object { + "maps_v2": Object { "save": false, - "saveQuery": false, "show": false, }, - "visualize": Object { + "visualize_v2": Object { "createShortUrl": false, "delete": false, "generateScreenshot": false, "save": false, - "saveQuery": false, "show": false, }, } `); expectSnapshot(await getAnonymousCapabilities('space-a')).toMatchInline(` Object { - "dashboard": Object { + "dashboard_v2": Object { "createNew": false, "createShortUrl": false, "downloadCsv": false, "generateScreenshot": false, - "saveQuery": false, "show": false, "showWriteControls": false, "storeSearchSession": false, }, - "discover": Object { + "discover_v2": Object { "createShortUrl": false, "generateCsv": false, "save": false, - "saveQuery": false, "show": false, "storeSearchSession": false, }, - "maps": Object { + "maps_v2": Object { "save": false, - "saveQuery": false, "show": false, }, - "visualize": Object { + "visualize_v2": Object { "createShortUrl": false, "delete": false, "generateScreenshot": false, "save": false, - "saveQuery": false, "show": false, }, } `); expectSnapshot(await getAnonymousCapabilities('space-b')).toMatchInline(` Object { - "dashboard": Object { + "dashboard_v2": Object { "createNew": false, "createShortUrl": false, "downloadCsv": false, "generateScreenshot": false, - "saveQuery": false, "show": false, "showWriteControls": false, "storeSearchSession": false, }, - "discover": Object { + "discover_v2": Object { "createShortUrl": false, "generateCsv": false, "save": false, - "saveQuery": false, "show": false, "storeSearchSession": false, }, - "maps": Object { + "maps_v2": Object { "save": false, - "saveQuery": false, "show": false, }, - "visualize": Object { + "visualize_v2": Object { "createShortUrl": false, "delete": false, "generateScreenshot": false, "save": false, - "saveQuery": false, "show": false, }, } @@ -177,105 +168,93 @@ export default function ({ getService }: FtrProviderContext) { it('all capabilities should be disabled', async () => { expectSnapshot(await getAnonymousCapabilities()).toMatchInline(` Object { - "dashboard": Object { + "dashboard_v2": Object { "createNew": false, "createShortUrl": false, "downloadCsv": false, "generateScreenshot": false, - "saveQuery": false, "show": false, "showWriteControls": false, "storeSearchSession": false, }, - "discover": Object { + "discover_v2": Object { "createShortUrl": false, "generateCsv": false, "save": false, - "saveQuery": false, "show": false, "storeSearchSession": false, }, - "maps": Object { + "maps_v2": Object { "save": false, - "saveQuery": false, "show": false, }, - "visualize": Object { + "visualize_v2": Object { "createShortUrl": false, "delete": false, "generateScreenshot": false, "save": false, - "saveQuery": false, "show": false, }, } `); expectSnapshot(await getAnonymousCapabilities('space-a')).toMatchInline(` Object { - "dashboard": Object { + "dashboard_v2": Object { "createNew": false, "createShortUrl": false, "downloadCsv": false, "generateScreenshot": false, - "saveQuery": false, "show": false, "showWriteControls": false, "storeSearchSession": false, }, - "discover": Object { + "discover_v2": Object { "createShortUrl": false, "generateCsv": false, "save": false, - "saveQuery": false, "show": false, "storeSearchSession": false, }, - "maps": Object { + "maps_v2": Object { "save": false, - "saveQuery": false, "show": false, }, - "visualize": Object { + "visualize_v2": Object { "createShortUrl": false, "delete": false, "generateScreenshot": false, "save": false, - "saveQuery": false, "show": false, }, } `); expectSnapshot(await getAnonymousCapabilities('space-b')).toMatchInline(` Object { - "dashboard": Object { + "dashboard_v2": Object { "createNew": false, "createShortUrl": false, "downloadCsv": false, "generateScreenshot": false, - "saveQuery": false, "show": false, "showWriteControls": false, "storeSearchSession": false, }, - "discover": Object { + "discover_v2": Object { "createShortUrl": false, "generateCsv": false, "save": false, - "saveQuery": false, "show": false, "storeSearchSession": false, }, - "maps": Object { + "maps_v2": Object { "save": false, - "saveQuery": false, "show": false, }, - "visualize": Object { + "visualize_v2": Object { "createShortUrl": false, "delete": false, "generateScreenshot": false, "save": false, - "saveQuery": false, "show": false, }, } @@ -319,35 +298,31 @@ export default function ({ getService }: FtrProviderContext) { // Discover, dashboards, visualizations and maps should be available in read-only mode. expectSnapshot(await getAnonymousCapabilities()).toMatchInline(` Object { - "dashboard": Object { + "dashboard_v2": Object { "createNew": false, "createShortUrl": false, "downloadCsv": false, "generateScreenshot": false, - "saveQuery": false, "show": true, "showWriteControls": false, "storeSearchSession": false, }, - "discover": Object { + "discover_v2": Object { "createShortUrl": false, "generateCsv": false, "save": false, - "saveQuery": false, "show": true, "storeSearchSession": false, }, - "maps": Object { + "maps_v2": Object { "save": false, - "saveQuery": false, "show": true, }, - "visualize": Object { + "visualize_v2": Object { "createShortUrl": false, "delete": false, "generateScreenshot": false, "save": false, - "saveQuery": false, "show": true, }, } @@ -356,35 +331,31 @@ export default function ({ getService }: FtrProviderContext) { // Only maps should be available in read-only mode, the rest should be disabled. expectSnapshot(await getAnonymousCapabilities('space-a')).toMatchInline(` Object { - "dashboard": Object { + "dashboard_v2": Object { "createNew": false, "createShortUrl": false, "downloadCsv": false, "generateScreenshot": false, - "saveQuery": false, "show": false, "showWriteControls": false, "storeSearchSession": false, }, - "discover": Object { + "discover_v2": Object { "createShortUrl": false, "generateCsv": false, "save": false, - "saveQuery": false, "show": false, "storeSearchSession": false, }, - "maps": Object { + "maps_v2": Object { "save": false, - "saveQuery": false, "show": true, }, - "visualize": Object { + "visualize_v2": Object { "createShortUrl": false, "delete": false, "generateScreenshot": false, "save": false, - "saveQuery": false, "show": false, }, } @@ -393,35 +364,31 @@ export default function ({ getService }: FtrProviderContext) { // Only visualizations should be available in read-only mode, the rest should be disabled. expectSnapshot(await getAnonymousCapabilities('space-b')).toMatchInline(` Object { - "dashboard": Object { + "dashboard_v2": Object { "createNew": false, "createShortUrl": false, "downloadCsv": false, "generateScreenshot": false, - "saveQuery": false, "show": false, "showWriteControls": false, "storeSearchSession": false, }, - "discover": Object { + "discover_v2": Object { "createShortUrl": false, "generateCsv": false, "save": false, - "saveQuery": false, "show": false, "storeSearchSession": false, }, - "maps": Object { + "maps_v2": Object { "save": false, - "saveQuery": false, "show": false, }, - "visualize": Object { + "visualize_v2": Object { "createShortUrl": false, "delete": false, "generateScreenshot": false, "save": false, - "saveQuery": false, "show": true, }, } diff --git a/x-pack/test/security_api_integration/tests/features/deprecated_features.ts b/x-pack/test/security_api_integration/tests/features/deprecated_features.ts index acb50a8514a1a..9b2d485f19f49 100644 --- a/x-pack/test/security_api_integration/tests/features/deprecated_features.ts +++ b/x-pack/test/security_api_integration/tests/features/deprecated_features.ts @@ -180,10 +180,14 @@ export default function ({ getService }: FtrProviderContext) { "case_3_feature_a", "case_4_feature_a", "case_4_feature_b", + "dashboard", + "discover", "generalCases", + "maps", "observabilityCases", "securitySolutionCases", "siem", + "visualize", ] `); }); @@ -205,6 +209,10 @@ export default function ({ getService }: FtrProviderContext) { const featureIdsImplicitlyReplacedWithMultipleFeatures = new Set([ 'case_2_feature_a', 'case_4_feature_a', + 'discover', + 'dashboard', + 'visualize', + 'maps', 'siem', ]); for (const feature of features) { diff --git a/x-pack/test/spaces_api_integration/spaces_only/telemetry/telemetry.ts b/x-pack/test/spaces_api_integration/spaces_only/telemetry/telemetry.ts index 99f1985b8164f..720c7348d2ffb 100644 --- a/x-pack/test/spaces_api_integration/spaces_only/telemetry/telemetry.ts +++ b/x-pack/test/spaces_api_integration/spaces_only/telemetry/telemetry.ts @@ -21,7 +21,7 @@ export default function ({ getService }: FtrProviderContext) { name: 'space-1', description: 'This is your space-1!', color: '#00bfb3', - disabledFeatures: ['canvas', 'maps'], + disabledFeatures: ['canvas', 'maps', 'maps_v2'], }); await spacesService.create({ @@ -30,7 +30,7 @@ export default function ({ getService }: FtrProviderContext) { description: 'This is your space-2!', color: '#00bfb3', solution: 'security', - disabledFeatures: ['savedObjectsManagement', 'canvas', 'maps'], + disabledFeatures: ['savedObjectsManagement', 'canvas', 'maps', 'maps_v2'], }); await spacesService.create({ @@ -68,6 +68,7 @@ export default function ({ getService }: FtrProviderContext) { generalCases: 0, generalCasesV2: 0, maps: 2, + maps_v2: 2, canvas: 2, ml: 0, fleetv2: 0, @@ -96,8 +97,11 @@ export default function ({ getService }: FtrProviderContext) { securitySolutionTimeline: 0, securitySolutionNotes: 0, discover: 0, + discover_v2: 0, visualize: 0, + visualize_v2: 0, dashboard: 0, + dashboard_v2: 0, dev_tools: 0, advancedSettings: 0, indexPatterns: 0, diff --git a/x-pack/test_serverless/api_integration/test_suites/common/platform_security/authorization.ts b/x-pack/test_serverless/api_integration/test_suites/common/platform_security/authorization.ts index e56d82a4c776a..79c5ef82530d7 100644 --- a/x-pack/test_serverless/api_integration/test_suites/common/platform_security/authorization.ts +++ b/x-pack/test_serverless/api_integration/test_suites/common/platform_security/authorization.ts @@ -94,8 +94,8 @@ export default function ({ getService }: FtrProviderContext) { }, { feature: { - dashboard: ['read'], - discover: ['all'], + dashboard_v2: ['read'], + discover_v2: ['all'], ml: ['all'], }, spaces: ['marketing', 'sales'], @@ -123,7 +123,11 @@ export default function ({ getService }: FtrProviderContext) { }, { application: 'kibana-.kibana', - privileges: ['feature_dashboard.read', 'feature_discover.all', 'feature_ml.all'], + privileges: [ + 'feature_dashboard_v2.read', + 'feature_discover_v2.all', + 'feature_ml.all', + ], resources: ['space:marketing', 'space:sales'], }, ], @@ -187,8 +191,8 @@ export default function ({ getService }: FtrProviderContext) { }, { feature: { - dashboard: ['read'], - discover: ['all'], + dashboard_v2: ['read'], + discover_v2: ['all'], ml: ['all'], }, spaces: ['marketing', 'sales'], @@ -227,8 +231,8 @@ export default function ({ getService }: FtrProviderContext) { }, { feature: { - dashboard: ['read'], - discover: ['all'], + dashboard_v2: ['read'], + discover_v2: ['all'], ml: ['all'], }, spaces: ['marketing', 'sales'], @@ -268,8 +272,8 @@ export default function ({ getService }: FtrProviderContext) { }, { feature: { - dashboard: ['read'], - discover: ['all'], + dashboard_v2: ['read'], + discover_v2: ['all'], ml: ['all'], }, spaces: ['marketing', 'sales'], @@ -329,7 +333,11 @@ export default function ({ getService }: FtrProviderContext) { }, { application: 'kibana-.kibana', - privileges: ['feature_dashboard.read', 'feature_discover.all', 'feature_ml.all'], + privileges: [ + 'feature_dashboard_v2.read', + 'feature_discover_v2.all', + 'feature_ml.all', + ], resources: ['space:marketing', 'space:sales'], }, { @@ -373,8 +381,8 @@ export default function ({ getService }: FtrProviderContext) { { base: [], feature: { - dashboard: ['read'], - discover: ['all'], + dashboard_v2: ['read'], + discover_v2: ['all'], ml: ['all'], }, spaces: ['marketing', 'sales'], @@ -400,7 +408,11 @@ export default function ({ getService }: FtrProviderContext) { applications: [ { application: 'kibana-.kibana', - privileges: ['feature_dashboard.read', 'feature_discover.all', 'feature_ml.all'], + privileges: [ + 'feature_dashboard_v2.read', + 'feature_discover_v2.all', + 'feature_ml.all', + ], resources: ['space:marketing', 'space:sales'], }, ], @@ -426,7 +438,11 @@ export default function ({ getService }: FtrProviderContext) { applications: [ { application: 'kibana-.kibana', - privileges: ['feature_dashboard.read', 'feature_discover.all', 'feature_ml.all'], + privileges: [ + 'feature_dashboard_v2.read', + 'feature_discover_v2.all', + 'feature_ml.all', + ], resources: ['space:engineering', 'space:sales'], }, ], @@ -513,7 +529,7 @@ export default function ({ getService }: FtrProviderContext) { kibana: [ { feature: { - dashboard: ['read'], + dashboard_v2: ['read'], dev_tools: ['all'], }, spaces: ['*'], @@ -540,7 +556,7 @@ export default function ({ getService }: FtrProviderContext) { applications: [ { application: 'kibana-.kibana', - privileges: ['feature_dashboard.read', 'feature_dev_tools.all'], + privileges: ['feature_dashboard_v2.read', 'feature_dev_tools.all'], resources: ['*'], }, { @@ -657,7 +673,7 @@ export default function ({ getService }: FtrProviderContext) { kibana: [ { feature: { - dashboard: ['read'], + dashboard_v2: ['read'], dev_tools: ['all'], }, spaces: ['*'], @@ -758,7 +774,7 @@ export default function ({ getService }: FtrProviderContext) { kibana: [ { feature: { - dashboard: ['read'], + dashboard_v2: ['read'], dev_tools: ['all'], }, spaces: ['*'], @@ -860,7 +876,7 @@ export default function ({ getService }: FtrProviderContext) { kibana: [ { feature: { - dashboard: ['read'], + dashboard_v2: ['read'], dev_tools: ['all'], }, spaces: ['*'], @@ -1063,7 +1079,7 @@ export default function ({ getService }: FtrProviderContext) { // If any of these features adds a new sub-feature privilege we should make an explicit decision whether it // should be displayed in Serverless. const features = body as KibanaFeatureConfig[]; - for (const featureId of ['discover', 'dashboard']) { + for (const featureId of ['discover_v2', 'dashboard_v2']) { const feature = features.find((f) => f.id === featureId)!; const subFeaturesPrivileges = collectSubFeaturesPrivileges(feature); for (const privilege of subFeaturesPrivileges.values()) { diff --git a/x-pack/test_serverless/api_integration/test_suites/common/saved_objects_management/find.ts b/x-pack/test_serverless/api_integration/test_suites/common/saved_objects_management/find.ts index 8ac839ad1284c..3e333b554f0f1 100644 --- a/x-pack/test_serverless/api_integration/test_suites/common/saved_objects_management/find.ts +++ b/x-pack/test_serverless/api_integration/test_suites/common/saved_objects_management/find.ts @@ -230,7 +230,7 @@ export default function ({ getService }: FtrProviderContext) { hiddenType: false, inAppUrl: { path: '/app/discover#/view/960372e0-3224-11e8-a572-ffca06da1357', - uiCapabilitiesPath: 'discover.show', + uiCapabilitiesPath: 'discover_v2.show', }, namespaceType: 'multiple-isolated', }); @@ -249,7 +249,7 @@ export default function ({ getService }: FtrProviderContext) { hiddenType: false, inAppUrl: { path: '/app/dashboards#/view/b70c7ae0-3224-11e8-a572-ffca06da1357', - uiCapabilitiesPath: 'dashboard.show', + uiCapabilitiesPath: 'dashboard_v2.show', }, namespaceType: 'multiple-isolated', }); diff --git a/x-pack/test_serverless/api_integration/test_suites/common/saved_objects_management/relationships.ts b/x-pack/test_serverless/api_integration/test_suites/common/saved_objects_management/relationships.ts index b8277b8ff3ee0..2598c06eff99d 100644 --- a/x-pack/test_serverless/api_integration/test_suites/common/saved_objects_management/relationships.ts +++ b/x-pack/test_serverless/api_integration/test_suites/common/saved_objects_management/relationships.ts @@ -216,7 +216,7 @@ export default function ({ getService }: FtrProviderContext) { title: 'OneRecord', inAppUrl: { path: '/app/discover#/view/960372e0-3224-11e8-a572-ffca06da1357', - uiCapabilitiesPath: 'discover.show', + uiCapabilitiesPath: 'discover_v2.show', }, namespaceType: 'multiple-isolated', hiddenType: false, @@ -231,7 +231,7 @@ export default function ({ getService }: FtrProviderContext) { title: 'Dashboard', inAppUrl: { path: '/app/dashboards#/view/b70c7ae0-3224-11e8-a572-ffca06da1357', - uiCapabilitiesPath: 'dashboard.show', + uiCapabilitiesPath: 'dashboard_v2.show', }, namespaceType: 'multiple-isolated', hiddenType: false, @@ -256,7 +256,7 @@ export default function ({ getService }: FtrProviderContext) { title: 'OneRecord', inAppUrl: { path: '/app/discover#/view/960372e0-3224-11e8-a572-ffca06da1357', - uiCapabilitiesPath: 'discover.show', + uiCapabilitiesPath: 'discover_v2.show', }, namespaceType: 'multiple-isolated', hiddenType: false, @@ -367,7 +367,7 @@ export default function ({ getService }: FtrProviderContext) { title: 'OneRecord', inAppUrl: { path: '/app/discover#/view/960372e0-3224-11e8-a572-ffca06da1357', - uiCapabilitiesPath: 'discover.show', + uiCapabilitiesPath: 'discover_v2.show', }, namespaceType: 'multiple-isolated', hiddenType: false, @@ -394,7 +394,7 @@ export default function ({ getService }: FtrProviderContext) { title: 'OneRecord', inAppUrl: { path: '/app/discover#/view/960372e0-3224-11e8-a572-ffca06da1357', - uiCapabilitiesPath: 'discover.show', + uiCapabilitiesPath: 'discover_v2.show', }, namespaceType: 'multiple-isolated', hiddenType: false, diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/platform_security/authorization.ts b/x-pack/test_serverless/api_integration/test_suites/observability/platform_security/authorization.ts index fda499c95da56..9f5d15bf3ba3b 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/platform_security/authorization.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/platform_security/authorization.ts @@ -33,7 +33,9 @@ export default function ({ getService }: FtrProviderContext) { const compositeFeatureIds = [ 'apm', 'dashboard', + 'dashboard_v2', 'discover', + 'discover_v2', 'fleetv2', 'infrastructure', 'reporting', @@ -4675,6 +4677,10 @@ export default function ({ getService }: FtrProviderContext) { "ui:maps/save", "ui:maps/show", "ui:maps/saveQuery", + "ui:maps_v2/save", + "ui:maps_v2/show", + "ui:savedQueryManagement/showQueries", + "ui:savedQueryManagement/saveQuery", "app:visualize", "app:lens", "ui:catalogue/visualize", @@ -4700,18 +4706,32 @@ export default function ({ getService }: FtrProviderContext) { "ui:visualize/saveQuery", "ui:visualize/createShortUrl", "ui:visualize/generateScreenshot", + "ui:visualize_v2/show", + "ui:visualize_v2/delete", + "ui:visualize_v2/save", + "ui:visualize_v2/createShortUrl", + "ui:visualize_v2/generateScreenshot", + "ui:dashboard_v2/createNew", + "ui:dashboard_v2/show", + "ui:dashboard_v2/showWriteControls", + "ui:dashboard_v2/createShortUrl", + "ui:dashboard_v2/storeSearchSession", + "ui:dashboard_v2/generateScreenshot", + "ui:dashboard_v2/downloadCsv", ], "download_csv_report": Array [ "login:", "api:downloadCsv", "ui:management/insightsAndAlerting/reporting", "ui:dashboard/downloadCsv", + "ui:dashboard_v2/downloadCsv", ], "generate_report": Array [ "login:", "api:generateReport", "ui:management/insightsAndAlerting/reporting", "ui:dashboard/generateScreenshot", + "ui:dashboard_v2/generateScreenshot", ], "minimal_all": Array [ "login:", @@ -4837,6 +4857,10 @@ export default function ({ getService }: FtrProviderContext) { "ui:maps/save", "ui:maps/show", "ui:maps/saveQuery", + "ui:maps_v2/save", + "ui:maps_v2/show", + "ui:savedQueryManagement/showQueries", + "ui:savedQueryManagement/saveQuery", "api:generateReport", "app:visualize", "app:lens", @@ -4871,6 +4895,14 @@ export default function ({ getService }: FtrProviderContext) { "ui:visualize/saveQuery", "ui:visualize/createShortUrl", "ui:visualize/generateScreenshot", + "ui:visualize_v2/show", + "ui:visualize_v2/delete", + "ui:visualize_v2/save", + "ui:visualize_v2/createShortUrl", + "ui:visualize_v2/generateScreenshot", + "ui:dashboard_v2/createNew", + "ui:dashboard_v2/show", + "ui:dashboard_v2/showWriteControls", ], "minimal_read": Array [ "login:", @@ -4922,16 +4954,16 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:dashboard/find", "saved_object:dashboard/open_point_in_time", "saved_object:dashboard/close_point_in_time", - "saved_object:query/bulk_get", - "saved_object:query/get", - "saved_object:query/find", - "saved_object:query/open_point_in_time", - "saved_object:query/close_point_in_time", "saved_object:tag/bulk_get", "saved_object:tag/get", "saved_object:tag/find", "saved_object:tag/open_point_in_time", "saved_object:tag/close_point_in_time", + "saved_object:query/bulk_get", + "saved_object:query/get", + "saved_object:query/find", + "saved_object:query/open_point_in_time", + "saved_object:query/close_point_in_time", "saved_object:config/bulk_get", "saved_object:config/get", "saved_object:config/find", @@ -4962,6 +4994,8 @@ export default function ({ getService }: FtrProviderContext) { "ui:catalogue/maps", "ui:navLinks/maps", "ui:maps/show", + "ui:maps_v2/show", + "ui:savedQueryManagement/showQueries", "app:visualize", "app:lens", "ui:catalogue/visualize", @@ -4976,6 +5010,9 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/share_to_space", "ui:visualize/show", "ui:visualize/createShortUrl", + "ui:visualize_v2/show", + "ui:visualize_v2/createShortUrl", + "ui:dashboard_v2/show", ], "read": Array [ "login:", @@ -5039,16 +5076,16 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:dashboard/find", "saved_object:dashboard/open_point_in_time", "saved_object:dashboard/close_point_in_time", - "saved_object:query/bulk_get", - "saved_object:query/get", - "saved_object:query/find", - "saved_object:query/open_point_in_time", - "saved_object:query/close_point_in_time", "saved_object:tag/bulk_get", "saved_object:tag/get", "saved_object:tag/find", "saved_object:tag/open_point_in_time", "saved_object:tag/close_point_in_time", + "saved_object:query/bulk_get", + "saved_object:query/get", + "saved_object:query/find", + "saved_object:query/open_point_in_time", + "saved_object:query/close_point_in_time", "saved_object:config/bulk_get", "saved_object:config/get", "saved_object:config/find", @@ -5075,6 +5112,8 @@ export default function ({ getService }: FtrProviderContext) { "ui:catalogue/maps", "ui:navLinks/maps", "ui:maps/show", + "ui:maps_v2/show", + "ui:savedQueryManagement/showQueries", "app:visualize", "app:lens", "ui:catalogue/visualize", @@ -5082,6 +5121,4279 @@ export default function ({ getService }: FtrProviderContext) { "ui:navLinks/lens", "ui:visualize/show", "ui:visualize/createShortUrl", + "ui:visualize_v2/show", + "ui:visualize_v2/createShortUrl", + "ui:dashboard_v2/show", + "ui:dashboard_v2/createShortUrl", + ], + "store_search_session": Array [ + "login:", + "api:store_search_session", + "ui:management/kibana/search_sessions", + "saved_object:search-session/bulk_get", + "saved_object:search-session/get", + "saved_object:search-session/find", + "saved_object:search-session/open_point_in_time", + "saved_object:search-session/close_point_in_time", + "saved_object:search-session/create", + "saved_object:search-session/bulk_create", + "saved_object:search-session/update", + "saved_object:search-session/bulk_update", + "saved_object:search-session/delete", + "saved_object:search-session/bulk_delete", + "saved_object:search-session/share_to_space", + "ui:dashboard/storeSearchSession", + "ui:dashboard_v2/storeSearchSession", + ], + "url_create": Array [ + "login:", + "saved_object:url/bulk_get", + "saved_object:url/get", + "saved_object:url/find", + "saved_object:url/open_point_in_time", + "saved_object:url/close_point_in_time", + "saved_object:url/create", + "saved_object:url/bulk_create", + "saved_object:url/update", + "saved_object:url/bulk_update", + "saved_object:url/delete", + "saved_object:url/bulk_delete", + "saved_object:url/share_to_space", + "ui:dashboard/createShortUrl", + "ui:dashboard_v2/createShortUrl", + ], + }, + "dashboard_v2": Object { + "all": Array [ + "login:", + "api:bulkGetUserProfiles", + "api:dashboardUsageStats", + "api:store_search_session", + "api:generateReport", + "api:downloadCsv", + "app:dashboards", + "app:kibana", + "ui:catalogue/dashboard", + "ui:management/kibana/search_sessions", + "ui:management/insightsAndAlerting/reporting", + "ui:navLinks/dashboards", + "ui:navLinks/kibana", + "saved_object:dashboard/bulk_get", + "saved_object:dashboard/get", + "saved_object:dashboard/find", + "saved_object:dashboard/open_point_in_time", + "saved_object:dashboard/close_point_in_time", + "saved_object:dashboard/create", + "saved_object:dashboard/bulk_create", + "saved_object:dashboard/update", + "saved_object:dashboard/bulk_update", + "saved_object:dashboard/delete", + "saved_object:dashboard/bulk_delete", + "saved_object:dashboard/share_to_space", + "saved_object:telemetry/bulk_get", + "saved_object:telemetry/get", + "saved_object:telemetry/find", + "saved_object:telemetry/open_point_in_time", + "saved_object:telemetry/close_point_in_time", + "saved_object:telemetry/create", + "saved_object:telemetry/bulk_create", + "saved_object:telemetry/update", + "saved_object:telemetry/bulk_update", + "saved_object:telemetry/delete", + "saved_object:telemetry/bulk_delete", + "saved_object:telemetry/share_to_space", + "saved_object:url/bulk_get", + "saved_object:url/get", + "saved_object:url/find", + "saved_object:url/open_point_in_time", + "saved_object:url/close_point_in_time", + "saved_object:url/create", + "saved_object:url/bulk_create", + "saved_object:url/update", + "saved_object:url/bulk_update", + "saved_object:url/delete", + "saved_object:url/bulk_delete", + "saved_object:url/share_to_space", + "saved_object:search-session/bulk_get", + "saved_object:search-session/get", + "saved_object:search-session/find", + "saved_object:search-session/open_point_in_time", + "saved_object:search-session/close_point_in_time", + "saved_object:search-session/create", + "saved_object:search-session/bulk_create", + "saved_object:search-session/update", + "saved_object:search-session/bulk_update", + "saved_object:search-session/delete", + "saved_object:search-session/bulk_delete", + "saved_object:search-session/share_to_space", + "saved_object:index-pattern/bulk_get", + "saved_object:index-pattern/get", + "saved_object:index-pattern/find", + "saved_object:index-pattern/open_point_in_time", + "saved_object:index-pattern/close_point_in_time", + "saved_object:search/bulk_get", + "saved_object:search/get", + "saved_object:search/find", + "saved_object:search/open_point_in_time", + "saved_object:search/close_point_in_time", + "saved_object:visualization/bulk_get", + "saved_object:visualization/get", + "saved_object:visualization/find", + "saved_object:visualization/open_point_in_time", + "saved_object:visualization/close_point_in_time", + "saved_object:canvas-workpad/bulk_get", + "saved_object:canvas-workpad/get", + "saved_object:canvas-workpad/find", + "saved_object:canvas-workpad/open_point_in_time", + "saved_object:canvas-workpad/close_point_in_time", + "saved_object:lens/bulk_get", + "saved_object:lens/get", + "saved_object:lens/find", + "saved_object:lens/open_point_in_time", + "saved_object:lens/close_point_in_time", + "saved_object:links/bulk_get", + "saved_object:links/get", + "saved_object:links/find", + "saved_object:links/open_point_in_time", + "saved_object:links/close_point_in_time", + "saved_object:map/bulk_get", + "saved_object:map/get", + "saved_object:map/find", + "saved_object:map/open_point_in_time", + "saved_object:map/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", + "saved_object:config/bulk_get", + "saved_object:config/get", + "saved_object:config/find", + "saved_object:config/open_point_in_time", + "saved_object:config/close_point_in_time", + "saved_object:config-global/bulk_get", + "saved_object:config-global/get", + "saved_object:config-global/find", + "saved_object:config-global/open_point_in_time", + "saved_object:config-global/close_point_in_time", + "saved_object:cloud/bulk_get", + "saved_object:cloud/get", + "saved_object:cloud/find", + "saved_object:cloud/open_point_in_time", + "saved_object:cloud/close_point_in_time", + "ui:dashboard_v2/createNew", + "ui:dashboard_v2/show", + "ui:dashboard_v2/showWriteControls", + "ui:dashboard_v2/createShortUrl", + "ui:dashboard_v2/storeSearchSession", + "ui:dashboard_v2/generateScreenshot", + "ui:dashboard_v2/downloadCsv", + "app:maps", + "ui:catalogue/maps", + "ui:navLinks/maps", + "saved_object:map/create", + "saved_object:map/bulk_create", + "saved_object:map/update", + "saved_object:map/bulk_update", + "saved_object:map/delete", + "saved_object:map/bulk_delete", + "saved_object:map/share_to_space", + "ui:maps_v2/save", + "ui:maps_v2/show", + "app:visualize", + "app:lens", + "ui:catalogue/visualize", + "ui:navLinks/visualize", + "ui:navLinks/lens", + "saved_object:visualization/create", + "saved_object:visualization/bulk_create", + "saved_object:visualization/update", + "saved_object:visualization/bulk_update", + "saved_object:visualization/delete", + "saved_object:visualization/bulk_delete", + "saved_object:visualization/share_to_space", + "saved_object:lens/create", + "saved_object:lens/bulk_create", + "saved_object:lens/update", + "saved_object:lens/bulk_update", + "saved_object:lens/delete", + "saved_object:lens/bulk_delete", + "saved_object:lens/share_to_space", + "ui:visualize_v2/show", + "ui:visualize_v2/delete", + "ui:visualize_v2/save", + "ui:visualize_v2/createShortUrl", + "ui:visualize_v2/generateScreenshot", + ], + "download_csv_report": Array [ + "login:", + "api:downloadCsv", + "ui:management/insightsAndAlerting/reporting", + "ui:dashboard_v2/downloadCsv", + ], + "generate_report": Array [ + "login:", + "api:generateReport", + "ui:management/insightsAndAlerting/reporting", + "ui:dashboard_v2/generateScreenshot", + ], + "minimal_all": Array [ + "login:", + "api:bulkGetUserProfiles", + "api:dashboardUsageStats", + "app:dashboards", + "app:kibana", + "ui:catalogue/dashboard", + "ui:navLinks/dashboards", + "ui:navLinks/kibana", + "saved_object:dashboard/bulk_get", + "saved_object:dashboard/get", + "saved_object:dashboard/find", + "saved_object:dashboard/open_point_in_time", + "saved_object:dashboard/close_point_in_time", + "saved_object:dashboard/create", + "saved_object:dashboard/bulk_create", + "saved_object:dashboard/update", + "saved_object:dashboard/bulk_update", + "saved_object:dashboard/delete", + "saved_object:dashboard/bulk_delete", + "saved_object:dashboard/share_to_space", + "saved_object:telemetry/bulk_get", + "saved_object:telemetry/get", + "saved_object:telemetry/find", + "saved_object:telemetry/open_point_in_time", + "saved_object:telemetry/close_point_in_time", + "saved_object:telemetry/create", + "saved_object:telemetry/bulk_create", + "saved_object:telemetry/update", + "saved_object:telemetry/bulk_update", + "saved_object:telemetry/delete", + "saved_object:telemetry/bulk_delete", + "saved_object:telemetry/share_to_space", + "saved_object:index-pattern/bulk_get", + "saved_object:index-pattern/get", + "saved_object:index-pattern/find", + "saved_object:index-pattern/open_point_in_time", + "saved_object:index-pattern/close_point_in_time", + "saved_object:search/bulk_get", + "saved_object:search/get", + "saved_object:search/find", + "saved_object:search/open_point_in_time", + "saved_object:search/close_point_in_time", + "saved_object:visualization/bulk_get", + "saved_object:visualization/get", + "saved_object:visualization/find", + "saved_object:visualization/open_point_in_time", + "saved_object:visualization/close_point_in_time", + "saved_object:canvas-workpad/bulk_get", + "saved_object:canvas-workpad/get", + "saved_object:canvas-workpad/find", + "saved_object:canvas-workpad/open_point_in_time", + "saved_object:canvas-workpad/close_point_in_time", + "saved_object:lens/bulk_get", + "saved_object:lens/get", + "saved_object:lens/find", + "saved_object:lens/open_point_in_time", + "saved_object:lens/close_point_in_time", + "saved_object:links/bulk_get", + "saved_object:links/get", + "saved_object:links/find", + "saved_object:links/open_point_in_time", + "saved_object:links/close_point_in_time", + "saved_object:map/bulk_get", + "saved_object:map/get", + "saved_object:map/find", + "saved_object:map/open_point_in_time", + "saved_object:map/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", + "saved_object:config/bulk_get", + "saved_object:config/get", + "saved_object:config/find", + "saved_object:config/open_point_in_time", + "saved_object:config/close_point_in_time", + "saved_object:config-global/bulk_get", + "saved_object:config-global/get", + "saved_object:config-global/find", + "saved_object:config-global/open_point_in_time", + "saved_object:config-global/close_point_in_time", + "saved_object:url/bulk_get", + "saved_object:url/get", + "saved_object:url/find", + "saved_object:url/open_point_in_time", + "saved_object:url/close_point_in_time", + "saved_object:cloud/bulk_get", + "saved_object:cloud/get", + "saved_object:cloud/find", + "saved_object:cloud/open_point_in_time", + "saved_object:cloud/close_point_in_time", + "ui:dashboard_v2/createNew", + "ui:dashboard_v2/show", + "ui:dashboard_v2/showWriteControls", + "app:maps", + "ui:catalogue/maps", + "ui:navLinks/maps", + "saved_object:map/create", + "saved_object:map/bulk_create", + "saved_object:map/update", + "saved_object:map/bulk_update", + "saved_object:map/delete", + "saved_object:map/bulk_delete", + "saved_object:map/share_to_space", + "ui:maps_v2/save", + "ui:maps_v2/show", + "api:generateReport", + "app:visualize", + "app:lens", + "ui:catalogue/visualize", + "ui:management/insightsAndAlerting/reporting", + "ui:navLinks/visualize", + "ui:navLinks/lens", + "saved_object:visualization/create", + "saved_object:visualization/bulk_create", + "saved_object:visualization/update", + "saved_object:visualization/bulk_update", + "saved_object:visualization/delete", + "saved_object:visualization/bulk_delete", + "saved_object:visualization/share_to_space", + "saved_object:lens/create", + "saved_object:lens/bulk_create", + "saved_object:lens/update", + "saved_object:lens/bulk_update", + "saved_object:lens/delete", + "saved_object:lens/bulk_delete", + "saved_object:lens/share_to_space", + "saved_object:url/create", + "saved_object:url/bulk_create", + "saved_object:url/update", + "saved_object:url/bulk_update", + "saved_object:url/delete", + "saved_object:url/bulk_delete", + "saved_object:url/share_to_space", + "ui:visualize_v2/show", + "ui:visualize_v2/delete", + "ui:visualize_v2/save", + "ui:visualize_v2/createShortUrl", + "ui:visualize_v2/generateScreenshot", + ], + "minimal_read": Array [ + "login:", + "api:bulkGetUserProfiles", + "api:dashboardUsageStats", + "app:dashboards", + "app:kibana", + "ui:catalogue/dashboard", + "ui:navLinks/dashboards", + "ui:navLinks/kibana", + "saved_object:index-pattern/bulk_get", + "saved_object:index-pattern/get", + "saved_object:index-pattern/find", + "saved_object:index-pattern/open_point_in_time", + "saved_object:index-pattern/close_point_in_time", + "saved_object:search/bulk_get", + "saved_object:search/get", + "saved_object:search/find", + "saved_object:search/open_point_in_time", + "saved_object:search/close_point_in_time", + "saved_object:visualization/bulk_get", + "saved_object:visualization/get", + "saved_object:visualization/find", + "saved_object:visualization/open_point_in_time", + "saved_object:visualization/close_point_in_time", + "saved_object:canvas-workpad/bulk_get", + "saved_object:canvas-workpad/get", + "saved_object:canvas-workpad/find", + "saved_object:canvas-workpad/open_point_in_time", + "saved_object:canvas-workpad/close_point_in_time", + "saved_object:lens/bulk_get", + "saved_object:lens/get", + "saved_object:lens/find", + "saved_object:lens/open_point_in_time", + "saved_object:lens/close_point_in_time", + "saved_object:links/bulk_get", + "saved_object:links/get", + "saved_object:links/find", + "saved_object:links/open_point_in_time", + "saved_object:links/close_point_in_time", + "saved_object:map/bulk_get", + "saved_object:map/get", + "saved_object:map/find", + "saved_object:map/open_point_in_time", + "saved_object:map/close_point_in_time", + "saved_object:dashboard/bulk_get", + "saved_object:dashboard/get", + "saved_object:dashboard/find", + "saved_object:dashboard/open_point_in_time", + "saved_object:dashboard/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", + "saved_object:config/bulk_get", + "saved_object:config/get", + "saved_object:config/find", + "saved_object:config/open_point_in_time", + "saved_object:config/close_point_in_time", + "saved_object:config-global/bulk_get", + "saved_object:config-global/get", + "saved_object:config-global/find", + "saved_object:config-global/open_point_in_time", + "saved_object:config-global/close_point_in_time", + "saved_object:telemetry/bulk_get", + "saved_object:telemetry/get", + "saved_object:telemetry/find", + "saved_object:telemetry/open_point_in_time", + "saved_object:telemetry/close_point_in_time", + "saved_object:url/bulk_get", + "saved_object:url/get", + "saved_object:url/find", + "saved_object:url/open_point_in_time", + "saved_object:url/close_point_in_time", + "saved_object:cloud/bulk_get", + "saved_object:cloud/get", + "saved_object:cloud/find", + "saved_object:cloud/open_point_in_time", + "saved_object:cloud/close_point_in_time", + "ui:dashboard_v2/show", + "app:maps", + "ui:catalogue/maps", + "ui:navLinks/maps", + "ui:maps_v2/show", + "app:visualize", + "app:lens", + "ui:catalogue/visualize", + "ui:navLinks/visualize", + "ui:navLinks/lens", + "saved_object:url/create", + "saved_object:url/bulk_create", + "saved_object:url/update", + "saved_object:url/bulk_update", + "saved_object:url/delete", + "saved_object:url/bulk_delete", + "saved_object:url/share_to_space", + "ui:visualize_v2/show", + "ui:visualize_v2/createShortUrl", + ], + "read": Array [ + "login:", + "api:bulkGetUserProfiles", + "api:dashboardUsageStats", + "app:dashboards", + "app:kibana", + "ui:catalogue/dashboard", + "ui:navLinks/dashboards", + "ui:navLinks/kibana", + "saved_object:url/bulk_get", + "saved_object:url/get", + "saved_object:url/find", + "saved_object:url/open_point_in_time", + "saved_object:url/close_point_in_time", + "saved_object:url/create", + "saved_object:url/bulk_create", + "saved_object:url/update", + "saved_object:url/bulk_update", + "saved_object:url/delete", + "saved_object:url/bulk_delete", + "saved_object:url/share_to_space", + "saved_object:index-pattern/bulk_get", + "saved_object:index-pattern/get", + "saved_object:index-pattern/find", + "saved_object:index-pattern/open_point_in_time", + "saved_object:index-pattern/close_point_in_time", + "saved_object:search/bulk_get", + "saved_object:search/get", + "saved_object:search/find", + "saved_object:search/open_point_in_time", + "saved_object:search/close_point_in_time", + "saved_object:visualization/bulk_get", + "saved_object:visualization/get", + "saved_object:visualization/find", + "saved_object:visualization/open_point_in_time", + "saved_object:visualization/close_point_in_time", + "saved_object:canvas-workpad/bulk_get", + "saved_object:canvas-workpad/get", + "saved_object:canvas-workpad/find", + "saved_object:canvas-workpad/open_point_in_time", + "saved_object:canvas-workpad/close_point_in_time", + "saved_object:lens/bulk_get", + "saved_object:lens/get", + "saved_object:lens/find", + "saved_object:lens/open_point_in_time", + "saved_object:lens/close_point_in_time", + "saved_object:links/bulk_get", + "saved_object:links/get", + "saved_object:links/find", + "saved_object:links/open_point_in_time", + "saved_object:links/close_point_in_time", + "saved_object:map/bulk_get", + "saved_object:map/get", + "saved_object:map/find", + "saved_object:map/open_point_in_time", + "saved_object:map/close_point_in_time", + "saved_object:dashboard/bulk_get", + "saved_object:dashboard/get", + "saved_object:dashboard/find", + "saved_object:dashboard/open_point_in_time", + "saved_object:dashboard/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", + "saved_object:config/bulk_get", + "saved_object:config/get", + "saved_object:config/find", + "saved_object:config/open_point_in_time", + "saved_object:config/close_point_in_time", + "saved_object:config-global/bulk_get", + "saved_object:config-global/get", + "saved_object:config-global/find", + "saved_object:config-global/open_point_in_time", + "saved_object:config-global/close_point_in_time", + "saved_object:telemetry/bulk_get", + "saved_object:telemetry/get", + "saved_object:telemetry/find", + "saved_object:telemetry/open_point_in_time", + "saved_object:telemetry/close_point_in_time", + "saved_object:cloud/bulk_get", + "saved_object:cloud/get", + "saved_object:cloud/find", + "saved_object:cloud/open_point_in_time", + "saved_object:cloud/close_point_in_time", + "ui:dashboard_v2/show", + "ui:dashboard_v2/createShortUrl", + "app:maps", + "ui:catalogue/maps", + "ui:navLinks/maps", + "ui:maps_v2/show", + "app:visualize", + "app:lens", + "ui:catalogue/visualize", + "ui:navLinks/visualize", + "ui:navLinks/lens", + "ui:visualize_v2/show", + "ui:visualize_v2/createShortUrl", + ], + "store_search_session": Array [ + "login:", + "api:store_search_session", + "ui:management/kibana/search_sessions", + "saved_object:search-session/bulk_get", + "saved_object:search-session/get", + "saved_object:search-session/find", + "saved_object:search-session/open_point_in_time", + "saved_object:search-session/close_point_in_time", + "saved_object:search-session/create", + "saved_object:search-session/bulk_create", + "saved_object:search-session/update", + "saved_object:search-session/bulk_update", + "saved_object:search-session/delete", + "saved_object:search-session/bulk_delete", + "saved_object:search-session/share_to_space", + "ui:dashboard_v2/storeSearchSession", + ], + "url_create": Array [ + "login:", + "saved_object:url/bulk_get", + "saved_object:url/get", + "saved_object:url/find", + "saved_object:url/open_point_in_time", + "saved_object:url/close_point_in_time", + "saved_object:url/create", + "saved_object:url/bulk_create", + "saved_object:url/update", + "saved_object:url/bulk_update", + "saved_object:url/delete", + "saved_object:url/bulk_delete", + "saved_object:url/share_to_space", + "ui:dashboard_v2/createShortUrl", + ], + }, + "discover": Object { + "all": Array [ + "login:", + "api:fileUpload:analyzeFile", + "api:savedQuery:manage", + "api:savedQuery:read", + "api:store_search_session", + "api:generateReport", + "app:discover", + "app:kibana", + "ui:catalogue/discover", + "ui:management/kibana/search_sessions", + "ui:management/insightsAndAlerting/reporting", + "ui:navLinks/discover", + "ui:navLinks/kibana", + "saved_object:search/bulk_get", + "saved_object:search/get", + "saved_object:search/find", + "saved_object:search/open_point_in_time", + "saved_object:search/close_point_in_time", + "saved_object:search/create", + "saved_object:search/bulk_create", + "saved_object:search/update", + "saved_object:search/bulk_update", + "saved_object:search/delete", + "saved_object:search/bulk_delete", + "saved_object:search/share_to_space", + "saved_object:query/bulk_get", + "saved_object:query/get", + "saved_object:query/find", + "saved_object:query/open_point_in_time", + "saved_object:query/close_point_in_time", + "saved_object:query/create", + "saved_object:query/bulk_create", + "saved_object:query/update", + "saved_object:query/bulk_update", + "saved_object:query/delete", + "saved_object:query/bulk_delete", + "saved_object:query/share_to_space", + "saved_object:telemetry/bulk_get", + "saved_object:telemetry/get", + "saved_object:telemetry/find", + "saved_object:telemetry/open_point_in_time", + "saved_object:telemetry/close_point_in_time", + "saved_object:telemetry/create", + "saved_object:telemetry/bulk_create", + "saved_object:telemetry/update", + "saved_object:telemetry/bulk_update", + "saved_object:telemetry/delete", + "saved_object:telemetry/bulk_delete", + "saved_object:telemetry/share_to_space", + "saved_object:url/bulk_get", + "saved_object:url/get", + "saved_object:url/find", + "saved_object:url/open_point_in_time", + "saved_object:url/close_point_in_time", + "saved_object:url/create", + "saved_object:url/bulk_create", + "saved_object:url/update", + "saved_object:url/bulk_update", + "saved_object:url/delete", + "saved_object:url/bulk_delete", + "saved_object:url/share_to_space", + "saved_object:search-session/bulk_get", + "saved_object:search-session/get", + "saved_object:search-session/find", + "saved_object:search-session/open_point_in_time", + "saved_object:search-session/close_point_in_time", + "saved_object:search-session/create", + "saved_object:search-session/bulk_create", + "saved_object:search-session/update", + "saved_object:search-session/bulk_update", + "saved_object:search-session/delete", + "saved_object:search-session/bulk_delete", + "saved_object:search-session/share_to_space", + "saved_object:index-pattern/bulk_get", + "saved_object:index-pattern/get", + "saved_object:index-pattern/find", + "saved_object:index-pattern/open_point_in_time", + "saved_object:index-pattern/close_point_in_time", + "saved_object:config/bulk_get", + "saved_object:config/get", + "saved_object:config/find", + "saved_object:config/open_point_in_time", + "saved_object:config/close_point_in_time", + "saved_object:config-global/bulk_get", + "saved_object:config-global/get", + "saved_object:config-global/find", + "saved_object:config-global/open_point_in_time", + "saved_object:config-global/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", + "saved_object:cloud/bulk_get", + "saved_object:cloud/get", + "saved_object:cloud/find", + "saved_object:cloud/open_point_in_time", + "saved_object:cloud/close_point_in_time", + "ui:discover/show", + "ui:discover/save", + "ui:discover/saveQuery", + "ui:discover/createShortUrl", + "ui:discover/storeSearchSession", + "ui:discover/generateCsv", + "api:rac", + "app:observability", + "ui:catalogue/observability", + "ui:navLinks/observability", + "ui:observability/read", + "ui:observability/write", + "alerting:apm.error_rate/observability/rule/get", + "alerting:apm.error_rate/observability/rule/getRuleState", + "alerting:apm.error_rate/observability/rule/getAlertSummary", + "alerting:apm.error_rate/observability/rule/getExecutionLog", + "alerting:apm.error_rate/observability/rule/getActionErrorLog", + "alerting:apm.error_rate/observability/rule/find", + "alerting:apm.error_rate/observability/rule/getRuleExecutionKPI", + "alerting:apm.error_rate/observability/rule/getBackfill", + "alerting:apm.error_rate/observability/rule/findBackfill", + "alerting:apm.error_rate/observability/rule/findGaps", + "alerting:apm.error_rate/observability/rule/create", + "alerting:apm.error_rate/observability/rule/delete", + "alerting:apm.error_rate/observability/rule/update", + "alerting:apm.error_rate/observability/rule/updateApiKey", + "alerting:apm.error_rate/observability/rule/enable", + "alerting:apm.error_rate/observability/rule/disable", + "alerting:apm.error_rate/observability/rule/muteAll", + "alerting:apm.error_rate/observability/rule/unmuteAll", + "alerting:apm.error_rate/observability/rule/muteAlert", + "alerting:apm.error_rate/observability/rule/unmuteAlert", + "alerting:apm.error_rate/observability/rule/snooze", + "alerting:apm.error_rate/observability/rule/bulkEdit", + "alerting:apm.error_rate/observability/rule/bulkDelete", + "alerting:apm.error_rate/observability/rule/bulkEnable", + "alerting:apm.error_rate/observability/rule/bulkDisable", + "alerting:apm.error_rate/observability/rule/unsnooze", + "alerting:apm.error_rate/observability/rule/runSoon", + "alerting:apm.error_rate/observability/rule/scheduleBackfill", + "alerting:apm.error_rate/observability/rule/deleteBackfill", + "alerting:apm.error_rate/observability/rule/fillGaps", + "alerting:apm.error_rate/alerts/rule/get", + "alerting:apm.error_rate/alerts/rule/getRuleState", + "alerting:apm.error_rate/alerts/rule/getAlertSummary", + "alerting:apm.error_rate/alerts/rule/getExecutionLog", + "alerting:apm.error_rate/alerts/rule/getActionErrorLog", + "alerting:apm.error_rate/alerts/rule/find", + "alerting:apm.error_rate/alerts/rule/getRuleExecutionKPI", + "alerting:apm.error_rate/alerts/rule/getBackfill", + "alerting:apm.error_rate/alerts/rule/findBackfill", + "alerting:apm.error_rate/alerts/rule/findGaps", + "alerting:apm.error_rate/alerts/rule/create", + "alerting:apm.error_rate/alerts/rule/delete", + "alerting:apm.error_rate/alerts/rule/update", + "alerting:apm.error_rate/alerts/rule/updateApiKey", + "alerting:apm.error_rate/alerts/rule/enable", + "alerting:apm.error_rate/alerts/rule/disable", + "alerting:apm.error_rate/alerts/rule/muteAll", + "alerting:apm.error_rate/alerts/rule/unmuteAll", + "alerting:apm.error_rate/alerts/rule/muteAlert", + "alerting:apm.error_rate/alerts/rule/unmuteAlert", + "alerting:apm.error_rate/alerts/rule/snooze", + "alerting:apm.error_rate/alerts/rule/bulkEdit", + "alerting:apm.error_rate/alerts/rule/bulkDelete", + "alerting:apm.error_rate/alerts/rule/bulkEnable", + "alerting:apm.error_rate/alerts/rule/bulkDisable", + "alerting:apm.error_rate/alerts/rule/unsnooze", + "alerting:apm.error_rate/alerts/rule/runSoon", + "alerting:apm.error_rate/alerts/rule/scheduleBackfill", + "alerting:apm.error_rate/alerts/rule/deleteBackfill", + "alerting:apm.error_rate/alerts/rule/fillGaps", + "alerting:apm.transaction_error_rate/observability/rule/get", + "alerting:apm.transaction_error_rate/observability/rule/getRuleState", + "alerting:apm.transaction_error_rate/observability/rule/getAlertSummary", + "alerting:apm.transaction_error_rate/observability/rule/getExecutionLog", + "alerting:apm.transaction_error_rate/observability/rule/getActionErrorLog", + "alerting:apm.transaction_error_rate/observability/rule/find", + "alerting:apm.transaction_error_rate/observability/rule/getRuleExecutionKPI", + "alerting:apm.transaction_error_rate/observability/rule/getBackfill", + "alerting:apm.transaction_error_rate/observability/rule/findBackfill", + "alerting:apm.transaction_error_rate/observability/rule/findGaps", + "alerting:apm.transaction_error_rate/observability/rule/create", + "alerting:apm.transaction_error_rate/observability/rule/delete", + "alerting:apm.transaction_error_rate/observability/rule/update", + "alerting:apm.transaction_error_rate/observability/rule/updateApiKey", + "alerting:apm.transaction_error_rate/observability/rule/enable", + "alerting:apm.transaction_error_rate/observability/rule/disable", + "alerting:apm.transaction_error_rate/observability/rule/muteAll", + "alerting:apm.transaction_error_rate/observability/rule/unmuteAll", + "alerting:apm.transaction_error_rate/observability/rule/muteAlert", + "alerting:apm.transaction_error_rate/observability/rule/unmuteAlert", + "alerting:apm.transaction_error_rate/observability/rule/snooze", + "alerting:apm.transaction_error_rate/observability/rule/bulkEdit", + "alerting:apm.transaction_error_rate/observability/rule/bulkDelete", + "alerting:apm.transaction_error_rate/observability/rule/bulkEnable", + "alerting:apm.transaction_error_rate/observability/rule/bulkDisable", + "alerting:apm.transaction_error_rate/observability/rule/unsnooze", + "alerting:apm.transaction_error_rate/observability/rule/runSoon", + "alerting:apm.transaction_error_rate/observability/rule/scheduleBackfill", + "alerting:apm.transaction_error_rate/observability/rule/deleteBackfill", + "alerting:apm.transaction_error_rate/observability/rule/fillGaps", + "alerting:apm.transaction_error_rate/alerts/rule/get", + "alerting:apm.transaction_error_rate/alerts/rule/getRuleState", + "alerting:apm.transaction_error_rate/alerts/rule/getAlertSummary", + "alerting:apm.transaction_error_rate/alerts/rule/getExecutionLog", + "alerting:apm.transaction_error_rate/alerts/rule/getActionErrorLog", + "alerting:apm.transaction_error_rate/alerts/rule/find", + "alerting:apm.transaction_error_rate/alerts/rule/getRuleExecutionKPI", + "alerting:apm.transaction_error_rate/alerts/rule/getBackfill", + "alerting:apm.transaction_error_rate/alerts/rule/findBackfill", + "alerting:apm.transaction_error_rate/alerts/rule/findGaps", + "alerting:apm.transaction_error_rate/alerts/rule/create", + "alerting:apm.transaction_error_rate/alerts/rule/delete", + "alerting:apm.transaction_error_rate/alerts/rule/update", + "alerting:apm.transaction_error_rate/alerts/rule/updateApiKey", + "alerting:apm.transaction_error_rate/alerts/rule/enable", + "alerting:apm.transaction_error_rate/alerts/rule/disable", + "alerting:apm.transaction_error_rate/alerts/rule/muteAll", + "alerting:apm.transaction_error_rate/alerts/rule/unmuteAll", + "alerting:apm.transaction_error_rate/alerts/rule/muteAlert", + "alerting:apm.transaction_error_rate/alerts/rule/unmuteAlert", + "alerting:apm.transaction_error_rate/alerts/rule/snooze", + "alerting:apm.transaction_error_rate/alerts/rule/bulkEdit", + "alerting:apm.transaction_error_rate/alerts/rule/bulkDelete", + "alerting:apm.transaction_error_rate/alerts/rule/bulkEnable", + "alerting:apm.transaction_error_rate/alerts/rule/bulkDisable", + "alerting:apm.transaction_error_rate/alerts/rule/unsnooze", + "alerting:apm.transaction_error_rate/alerts/rule/runSoon", + "alerting:apm.transaction_error_rate/alerts/rule/scheduleBackfill", + "alerting:apm.transaction_error_rate/alerts/rule/deleteBackfill", + "alerting:apm.transaction_error_rate/alerts/rule/fillGaps", + "alerting:apm.transaction_duration/observability/rule/get", + "alerting:apm.transaction_duration/observability/rule/getRuleState", + "alerting:apm.transaction_duration/observability/rule/getAlertSummary", + "alerting:apm.transaction_duration/observability/rule/getExecutionLog", + "alerting:apm.transaction_duration/observability/rule/getActionErrorLog", + "alerting:apm.transaction_duration/observability/rule/find", + "alerting:apm.transaction_duration/observability/rule/getRuleExecutionKPI", + "alerting:apm.transaction_duration/observability/rule/getBackfill", + "alerting:apm.transaction_duration/observability/rule/findBackfill", + "alerting:apm.transaction_duration/observability/rule/findGaps", + "alerting:apm.transaction_duration/observability/rule/create", + "alerting:apm.transaction_duration/observability/rule/delete", + "alerting:apm.transaction_duration/observability/rule/update", + "alerting:apm.transaction_duration/observability/rule/updateApiKey", + "alerting:apm.transaction_duration/observability/rule/enable", + "alerting:apm.transaction_duration/observability/rule/disable", + "alerting:apm.transaction_duration/observability/rule/muteAll", + "alerting:apm.transaction_duration/observability/rule/unmuteAll", + "alerting:apm.transaction_duration/observability/rule/muteAlert", + "alerting:apm.transaction_duration/observability/rule/unmuteAlert", + "alerting:apm.transaction_duration/observability/rule/snooze", + "alerting:apm.transaction_duration/observability/rule/bulkEdit", + "alerting:apm.transaction_duration/observability/rule/bulkDelete", + "alerting:apm.transaction_duration/observability/rule/bulkEnable", + "alerting:apm.transaction_duration/observability/rule/bulkDisable", + "alerting:apm.transaction_duration/observability/rule/unsnooze", + "alerting:apm.transaction_duration/observability/rule/runSoon", + "alerting:apm.transaction_duration/observability/rule/scheduleBackfill", + "alerting:apm.transaction_duration/observability/rule/deleteBackfill", + "alerting:apm.transaction_duration/observability/rule/fillGaps", + "alerting:apm.transaction_duration/alerts/rule/get", + "alerting:apm.transaction_duration/alerts/rule/getRuleState", + "alerting:apm.transaction_duration/alerts/rule/getAlertSummary", + "alerting:apm.transaction_duration/alerts/rule/getExecutionLog", + "alerting:apm.transaction_duration/alerts/rule/getActionErrorLog", + "alerting:apm.transaction_duration/alerts/rule/find", + "alerting:apm.transaction_duration/alerts/rule/getRuleExecutionKPI", + "alerting:apm.transaction_duration/alerts/rule/getBackfill", + "alerting:apm.transaction_duration/alerts/rule/findBackfill", + "alerting:apm.transaction_duration/alerts/rule/findGaps", + "alerting:apm.transaction_duration/alerts/rule/create", + "alerting:apm.transaction_duration/alerts/rule/delete", + "alerting:apm.transaction_duration/alerts/rule/update", + "alerting:apm.transaction_duration/alerts/rule/updateApiKey", + "alerting:apm.transaction_duration/alerts/rule/enable", + "alerting:apm.transaction_duration/alerts/rule/disable", + "alerting:apm.transaction_duration/alerts/rule/muteAll", + "alerting:apm.transaction_duration/alerts/rule/unmuteAll", + "alerting:apm.transaction_duration/alerts/rule/muteAlert", + "alerting:apm.transaction_duration/alerts/rule/unmuteAlert", + "alerting:apm.transaction_duration/alerts/rule/snooze", + "alerting:apm.transaction_duration/alerts/rule/bulkEdit", + "alerting:apm.transaction_duration/alerts/rule/bulkDelete", + "alerting:apm.transaction_duration/alerts/rule/bulkEnable", + "alerting:apm.transaction_duration/alerts/rule/bulkDisable", + "alerting:apm.transaction_duration/alerts/rule/unsnooze", + "alerting:apm.transaction_duration/alerts/rule/runSoon", + "alerting:apm.transaction_duration/alerts/rule/scheduleBackfill", + "alerting:apm.transaction_duration/alerts/rule/deleteBackfill", + "alerting:apm.transaction_duration/alerts/rule/fillGaps", + "alerting:apm.anomaly/observability/rule/get", + "alerting:apm.anomaly/observability/rule/getRuleState", + "alerting:apm.anomaly/observability/rule/getAlertSummary", + "alerting:apm.anomaly/observability/rule/getExecutionLog", + "alerting:apm.anomaly/observability/rule/getActionErrorLog", + "alerting:apm.anomaly/observability/rule/find", + "alerting:apm.anomaly/observability/rule/getRuleExecutionKPI", + "alerting:apm.anomaly/observability/rule/getBackfill", + "alerting:apm.anomaly/observability/rule/findBackfill", + "alerting:apm.anomaly/observability/rule/findGaps", + "alerting:apm.anomaly/observability/rule/create", + "alerting:apm.anomaly/observability/rule/delete", + "alerting:apm.anomaly/observability/rule/update", + "alerting:apm.anomaly/observability/rule/updateApiKey", + "alerting:apm.anomaly/observability/rule/enable", + "alerting:apm.anomaly/observability/rule/disable", + "alerting:apm.anomaly/observability/rule/muteAll", + "alerting:apm.anomaly/observability/rule/unmuteAll", + "alerting:apm.anomaly/observability/rule/muteAlert", + "alerting:apm.anomaly/observability/rule/unmuteAlert", + "alerting:apm.anomaly/observability/rule/snooze", + "alerting:apm.anomaly/observability/rule/bulkEdit", + "alerting:apm.anomaly/observability/rule/bulkDelete", + "alerting:apm.anomaly/observability/rule/bulkEnable", + "alerting:apm.anomaly/observability/rule/bulkDisable", + "alerting:apm.anomaly/observability/rule/unsnooze", + "alerting:apm.anomaly/observability/rule/runSoon", + "alerting:apm.anomaly/observability/rule/scheduleBackfill", + "alerting:apm.anomaly/observability/rule/deleteBackfill", + "alerting:apm.anomaly/observability/rule/fillGaps", + "alerting:apm.anomaly/alerts/rule/get", + "alerting:apm.anomaly/alerts/rule/getRuleState", + "alerting:apm.anomaly/alerts/rule/getAlertSummary", + "alerting:apm.anomaly/alerts/rule/getExecutionLog", + "alerting:apm.anomaly/alerts/rule/getActionErrorLog", + "alerting:apm.anomaly/alerts/rule/find", + "alerting:apm.anomaly/alerts/rule/getRuleExecutionKPI", + "alerting:apm.anomaly/alerts/rule/getBackfill", + "alerting:apm.anomaly/alerts/rule/findBackfill", + "alerting:apm.anomaly/alerts/rule/findGaps", + "alerting:apm.anomaly/alerts/rule/create", + "alerting:apm.anomaly/alerts/rule/delete", + "alerting:apm.anomaly/alerts/rule/update", + "alerting:apm.anomaly/alerts/rule/updateApiKey", + "alerting:apm.anomaly/alerts/rule/enable", + "alerting:apm.anomaly/alerts/rule/disable", + "alerting:apm.anomaly/alerts/rule/muteAll", + "alerting:apm.anomaly/alerts/rule/unmuteAll", + "alerting:apm.anomaly/alerts/rule/muteAlert", + "alerting:apm.anomaly/alerts/rule/unmuteAlert", + "alerting:apm.anomaly/alerts/rule/snooze", + "alerting:apm.anomaly/alerts/rule/bulkEdit", + "alerting:apm.anomaly/alerts/rule/bulkDelete", + "alerting:apm.anomaly/alerts/rule/bulkEnable", + "alerting:apm.anomaly/alerts/rule/bulkDisable", + "alerting:apm.anomaly/alerts/rule/unsnooze", + "alerting:apm.anomaly/alerts/rule/runSoon", + "alerting:apm.anomaly/alerts/rule/scheduleBackfill", + "alerting:apm.anomaly/alerts/rule/deleteBackfill", + "alerting:apm.anomaly/alerts/rule/fillGaps", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/get", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/getRuleState", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/getAlertSummary", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/getExecutionLog", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/getActionErrorLog", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/find", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/getRuleExecutionKPI", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/getBackfill", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/findBackfill", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/findGaps", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/create", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/delete", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/update", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/updateApiKey", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/enable", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/disable", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/muteAll", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/unmuteAll", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/muteAlert", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/unmuteAlert", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/snooze", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/bulkEdit", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/bulkDelete", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/bulkEnable", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/bulkDisable", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/unsnooze", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/runSoon", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/scheduleBackfill", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/deleteBackfill", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/fillGaps", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/get", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/getRuleState", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/getAlertSummary", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/getExecutionLog", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/getActionErrorLog", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/find", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/getRuleExecutionKPI", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/getBackfill", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/findBackfill", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/findGaps", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/create", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/delete", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/update", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/updateApiKey", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/enable", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/disable", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/muteAll", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/unmuteAll", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/muteAlert", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/unmuteAlert", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/snooze", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/bulkEdit", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/bulkDelete", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/bulkEnable", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/bulkDisable", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/unsnooze", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/runSoon", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/scheduleBackfill", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/deleteBackfill", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/fillGaps", + "alerting:xpack.synthetics.alerts.tls/observability/rule/get", + "alerting:xpack.synthetics.alerts.tls/observability/rule/getRuleState", + "alerting:xpack.synthetics.alerts.tls/observability/rule/getAlertSummary", + "alerting:xpack.synthetics.alerts.tls/observability/rule/getExecutionLog", + "alerting:xpack.synthetics.alerts.tls/observability/rule/getActionErrorLog", + "alerting:xpack.synthetics.alerts.tls/observability/rule/find", + "alerting:xpack.synthetics.alerts.tls/observability/rule/getRuleExecutionKPI", + "alerting:xpack.synthetics.alerts.tls/observability/rule/getBackfill", + "alerting:xpack.synthetics.alerts.tls/observability/rule/findBackfill", + "alerting:xpack.synthetics.alerts.tls/observability/rule/findGaps", + "alerting:xpack.synthetics.alerts.tls/observability/rule/create", + "alerting:xpack.synthetics.alerts.tls/observability/rule/delete", + "alerting:xpack.synthetics.alerts.tls/observability/rule/update", + "alerting:xpack.synthetics.alerts.tls/observability/rule/updateApiKey", + "alerting:xpack.synthetics.alerts.tls/observability/rule/enable", + "alerting:xpack.synthetics.alerts.tls/observability/rule/disable", + "alerting:xpack.synthetics.alerts.tls/observability/rule/muteAll", + "alerting:xpack.synthetics.alerts.tls/observability/rule/unmuteAll", + "alerting:xpack.synthetics.alerts.tls/observability/rule/muteAlert", + "alerting:xpack.synthetics.alerts.tls/observability/rule/unmuteAlert", + "alerting:xpack.synthetics.alerts.tls/observability/rule/snooze", + "alerting:xpack.synthetics.alerts.tls/observability/rule/bulkEdit", + "alerting:xpack.synthetics.alerts.tls/observability/rule/bulkDelete", + "alerting:xpack.synthetics.alerts.tls/observability/rule/bulkEnable", + "alerting:xpack.synthetics.alerts.tls/observability/rule/bulkDisable", + "alerting:xpack.synthetics.alerts.tls/observability/rule/unsnooze", + "alerting:xpack.synthetics.alerts.tls/observability/rule/runSoon", + "alerting:xpack.synthetics.alerts.tls/observability/rule/scheduleBackfill", + "alerting:xpack.synthetics.alerts.tls/observability/rule/deleteBackfill", + "alerting:xpack.synthetics.alerts.tls/observability/rule/fillGaps", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/get", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/getRuleState", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/getAlertSummary", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/getExecutionLog", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/getActionErrorLog", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/find", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/getRuleExecutionKPI", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/getBackfill", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/findBackfill", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/findGaps", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/create", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/delete", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/update", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/updateApiKey", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/enable", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/disable", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/muteAll", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/unmuteAll", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/muteAlert", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/unmuteAlert", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/snooze", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/bulkEdit", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/bulkDelete", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/bulkEnable", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/bulkDisable", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/unsnooze", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/runSoon", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/scheduleBackfill", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/deleteBackfill", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/fillGaps", + "alerting:metrics.alert.threshold/observability/rule/get", + "alerting:metrics.alert.threshold/observability/rule/getRuleState", + "alerting:metrics.alert.threshold/observability/rule/getAlertSummary", + "alerting:metrics.alert.threshold/observability/rule/getExecutionLog", + "alerting:metrics.alert.threshold/observability/rule/getActionErrorLog", + "alerting:metrics.alert.threshold/observability/rule/find", + "alerting:metrics.alert.threshold/observability/rule/getRuleExecutionKPI", + "alerting:metrics.alert.threshold/observability/rule/getBackfill", + "alerting:metrics.alert.threshold/observability/rule/findBackfill", + "alerting:metrics.alert.threshold/observability/rule/findGaps", + "alerting:metrics.alert.threshold/observability/rule/create", + "alerting:metrics.alert.threshold/observability/rule/delete", + "alerting:metrics.alert.threshold/observability/rule/update", + "alerting:metrics.alert.threshold/observability/rule/updateApiKey", + "alerting:metrics.alert.threshold/observability/rule/enable", + "alerting:metrics.alert.threshold/observability/rule/disable", + "alerting:metrics.alert.threshold/observability/rule/muteAll", + "alerting:metrics.alert.threshold/observability/rule/unmuteAll", + "alerting:metrics.alert.threshold/observability/rule/muteAlert", + "alerting:metrics.alert.threshold/observability/rule/unmuteAlert", + "alerting:metrics.alert.threshold/observability/rule/snooze", + "alerting:metrics.alert.threshold/observability/rule/bulkEdit", + "alerting:metrics.alert.threshold/observability/rule/bulkDelete", + "alerting:metrics.alert.threshold/observability/rule/bulkEnable", + "alerting:metrics.alert.threshold/observability/rule/bulkDisable", + "alerting:metrics.alert.threshold/observability/rule/unsnooze", + "alerting:metrics.alert.threshold/observability/rule/runSoon", + "alerting:metrics.alert.threshold/observability/rule/scheduleBackfill", + "alerting:metrics.alert.threshold/observability/rule/deleteBackfill", + "alerting:metrics.alert.threshold/observability/rule/fillGaps", + "alerting:metrics.alert.threshold/alerts/rule/get", + "alerting:metrics.alert.threshold/alerts/rule/getRuleState", + "alerting:metrics.alert.threshold/alerts/rule/getAlertSummary", + "alerting:metrics.alert.threshold/alerts/rule/getExecutionLog", + "alerting:metrics.alert.threshold/alerts/rule/getActionErrorLog", + "alerting:metrics.alert.threshold/alerts/rule/find", + "alerting:metrics.alert.threshold/alerts/rule/getRuleExecutionKPI", + "alerting:metrics.alert.threshold/alerts/rule/getBackfill", + "alerting:metrics.alert.threshold/alerts/rule/findBackfill", + "alerting:metrics.alert.threshold/alerts/rule/findGaps", + "alerting:metrics.alert.threshold/alerts/rule/create", + "alerting:metrics.alert.threshold/alerts/rule/delete", + "alerting:metrics.alert.threshold/alerts/rule/update", + "alerting:metrics.alert.threshold/alerts/rule/updateApiKey", + "alerting:metrics.alert.threshold/alerts/rule/enable", + "alerting:metrics.alert.threshold/alerts/rule/disable", + "alerting:metrics.alert.threshold/alerts/rule/muteAll", + "alerting:metrics.alert.threshold/alerts/rule/unmuteAll", + "alerting:metrics.alert.threshold/alerts/rule/muteAlert", + "alerting:metrics.alert.threshold/alerts/rule/unmuteAlert", + "alerting:metrics.alert.threshold/alerts/rule/snooze", + "alerting:metrics.alert.threshold/alerts/rule/bulkEdit", + "alerting:metrics.alert.threshold/alerts/rule/bulkDelete", + "alerting:metrics.alert.threshold/alerts/rule/bulkEnable", + "alerting:metrics.alert.threshold/alerts/rule/bulkDisable", + "alerting:metrics.alert.threshold/alerts/rule/unsnooze", + "alerting:metrics.alert.threshold/alerts/rule/runSoon", + "alerting:metrics.alert.threshold/alerts/rule/scheduleBackfill", + "alerting:metrics.alert.threshold/alerts/rule/deleteBackfill", + "alerting:metrics.alert.threshold/alerts/rule/fillGaps", + "alerting:metrics.alert.inventory.threshold/observability/rule/get", + "alerting:metrics.alert.inventory.threshold/observability/rule/getRuleState", + "alerting:metrics.alert.inventory.threshold/observability/rule/getAlertSummary", + "alerting:metrics.alert.inventory.threshold/observability/rule/getExecutionLog", + "alerting:metrics.alert.inventory.threshold/observability/rule/getActionErrorLog", + "alerting:metrics.alert.inventory.threshold/observability/rule/find", + "alerting:metrics.alert.inventory.threshold/observability/rule/getRuleExecutionKPI", + "alerting:metrics.alert.inventory.threshold/observability/rule/getBackfill", + "alerting:metrics.alert.inventory.threshold/observability/rule/findBackfill", + "alerting:metrics.alert.inventory.threshold/observability/rule/findGaps", + "alerting:metrics.alert.inventory.threshold/observability/rule/create", + "alerting:metrics.alert.inventory.threshold/observability/rule/delete", + "alerting:metrics.alert.inventory.threshold/observability/rule/update", + "alerting:metrics.alert.inventory.threshold/observability/rule/updateApiKey", + "alerting:metrics.alert.inventory.threshold/observability/rule/enable", + "alerting:metrics.alert.inventory.threshold/observability/rule/disable", + "alerting:metrics.alert.inventory.threshold/observability/rule/muteAll", + "alerting:metrics.alert.inventory.threshold/observability/rule/unmuteAll", + "alerting:metrics.alert.inventory.threshold/observability/rule/muteAlert", + "alerting:metrics.alert.inventory.threshold/observability/rule/unmuteAlert", + "alerting:metrics.alert.inventory.threshold/observability/rule/snooze", + "alerting:metrics.alert.inventory.threshold/observability/rule/bulkEdit", + "alerting:metrics.alert.inventory.threshold/observability/rule/bulkDelete", + "alerting:metrics.alert.inventory.threshold/observability/rule/bulkEnable", + "alerting:metrics.alert.inventory.threshold/observability/rule/bulkDisable", + "alerting:metrics.alert.inventory.threshold/observability/rule/unsnooze", + "alerting:metrics.alert.inventory.threshold/observability/rule/runSoon", + "alerting:metrics.alert.inventory.threshold/observability/rule/scheduleBackfill", + "alerting:metrics.alert.inventory.threshold/observability/rule/deleteBackfill", + "alerting:metrics.alert.inventory.threshold/observability/rule/fillGaps", + "alerting:metrics.alert.inventory.threshold/alerts/rule/get", + "alerting:metrics.alert.inventory.threshold/alerts/rule/getRuleState", + "alerting:metrics.alert.inventory.threshold/alerts/rule/getAlertSummary", + "alerting:metrics.alert.inventory.threshold/alerts/rule/getExecutionLog", + "alerting:metrics.alert.inventory.threshold/alerts/rule/getActionErrorLog", + "alerting:metrics.alert.inventory.threshold/alerts/rule/find", + "alerting:metrics.alert.inventory.threshold/alerts/rule/getRuleExecutionKPI", + "alerting:metrics.alert.inventory.threshold/alerts/rule/getBackfill", + "alerting:metrics.alert.inventory.threshold/alerts/rule/findBackfill", + "alerting:metrics.alert.inventory.threshold/alerts/rule/findGaps", + "alerting:metrics.alert.inventory.threshold/alerts/rule/create", + "alerting:metrics.alert.inventory.threshold/alerts/rule/delete", + "alerting:metrics.alert.inventory.threshold/alerts/rule/update", + "alerting:metrics.alert.inventory.threshold/alerts/rule/updateApiKey", + "alerting:metrics.alert.inventory.threshold/alerts/rule/enable", + "alerting:metrics.alert.inventory.threshold/alerts/rule/disable", + "alerting:metrics.alert.inventory.threshold/alerts/rule/muteAll", + "alerting:metrics.alert.inventory.threshold/alerts/rule/unmuteAll", + "alerting:metrics.alert.inventory.threshold/alerts/rule/muteAlert", + "alerting:metrics.alert.inventory.threshold/alerts/rule/unmuteAlert", + "alerting:metrics.alert.inventory.threshold/alerts/rule/snooze", + "alerting:metrics.alert.inventory.threshold/alerts/rule/bulkEdit", + "alerting:metrics.alert.inventory.threshold/alerts/rule/bulkDelete", + "alerting:metrics.alert.inventory.threshold/alerts/rule/bulkEnable", + "alerting:metrics.alert.inventory.threshold/alerts/rule/bulkDisable", + "alerting:metrics.alert.inventory.threshold/alerts/rule/unsnooze", + "alerting:metrics.alert.inventory.threshold/alerts/rule/runSoon", + "alerting:metrics.alert.inventory.threshold/alerts/rule/scheduleBackfill", + "alerting:metrics.alert.inventory.threshold/alerts/rule/deleteBackfill", + "alerting:metrics.alert.inventory.threshold/alerts/rule/fillGaps", + "alerting:xpack.uptime.alerts.tls/observability/rule/get", + "alerting:xpack.uptime.alerts.tls/observability/rule/getRuleState", + "alerting:xpack.uptime.alerts.tls/observability/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.tls/observability/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.tls/observability/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.tls/observability/rule/find", + "alerting:xpack.uptime.alerts.tls/observability/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.tls/observability/rule/getBackfill", + "alerting:xpack.uptime.alerts.tls/observability/rule/findBackfill", + "alerting:xpack.uptime.alerts.tls/observability/rule/findGaps", + "alerting:xpack.uptime.alerts.tls/observability/rule/create", + "alerting:xpack.uptime.alerts.tls/observability/rule/delete", + "alerting:xpack.uptime.alerts.tls/observability/rule/update", + "alerting:xpack.uptime.alerts.tls/observability/rule/updateApiKey", + "alerting:xpack.uptime.alerts.tls/observability/rule/enable", + "alerting:xpack.uptime.alerts.tls/observability/rule/disable", + "alerting:xpack.uptime.alerts.tls/observability/rule/muteAll", + "alerting:xpack.uptime.alerts.tls/observability/rule/unmuteAll", + "alerting:xpack.uptime.alerts.tls/observability/rule/muteAlert", + "alerting:xpack.uptime.alerts.tls/observability/rule/unmuteAlert", + "alerting:xpack.uptime.alerts.tls/observability/rule/snooze", + "alerting:xpack.uptime.alerts.tls/observability/rule/bulkEdit", + "alerting:xpack.uptime.alerts.tls/observability/rule/bulkDelete", + "alerting:xpack.uptime.alerts.tls/observability/rule/bulkEnable", + "alerting:xpack.uptime.alerts.tls/observability/rule/bulkDisable", + "alerting:xpack.uptime.alerts.tls/observability/rule/unsnooze", + "alerting:xpack.uptime.alerts.tls/observability/rule/runSoon", + "alerting:xpack.uptime.alerts.tls/observability/rule/scheduleBackfill", + "alerting:xpack.uptime.alerts.tls/observability/rule/deleteBackfill", + "alerting:xpack.uptime.alerts.tls/observability/rule/fillGaps", + "alerting:xpack.uptime.alerts.tls/alerts/rule/get", + "alerting:xpack.uptime.alerts.tls/alerts/rule/getRuleState", + "alerting:xpack.uptime.alerts.tls/alerts/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.tls/alerts/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.tls/alerts/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.tls/alerts/rule/find", + "alerting:xpack.uptime.alerts.tls/alerts/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.tls/alerts/rule/getBackfill", + "alerting:xpack.uptime.alerts.tls/alerts/rule/findBackfill", + "alerting:xpack.uptime.alerts.tls/alerts/rule/findGaps", + "alerting:xpack.uptime.alerts.tls/alerts/rule/create", + "alerting:xpack.uptime.alerts.tls/alerts/rule/delete", + "alerting:xpack.uptime.alerts.tls/alerts/rule/update", + "alerting:xpack.uptime.alerts.tls/alerts/rule/updateApiKey", + "alerting:xpack.uptime.alerts.tls/alerts/rule/enable", + "alerting:xpack.uptime.alerts.tls/alerts/rule/disable", + "alerting:xpack.uptime.alerts.tls/alerts/rule/muteAll", + "alerting:xpack.uptime.alerts.tls/alerts/rule/unmuteAll", + "alerting:xpack.uptime.alerts.tls/alerts/rule/muteAlert", + "alerting:xpack.uptime.alerts.tls/alerts/rule/unmuteAlert", + "alerting:xpack.uptime.alerts.tls/alerts/rule/snooze", + "alerting:xpack.uptime.alerts.tls/alerts/rule/bulkEdit", + "alerting:xpack.uptime.alerts.tls/alerts/rule/bulkDelete", + "alerting:xpack.uptime.alerts.tls/alerts/rule/bulkEnable", + "alerting:xpack.uptime.alerts.tls/alerts/rule/bulkDisable", + "alerting:xpack.uptime.alerts.tls/alerts/rule/unsnooze", + "alerting:xpack.uptime.alerts.tls/alerts/rule/runSoon", + "alerting:xpack.uptime.alerts.tls/alerts/rule/scheduleBackfill", + "alerting:xpack.uptime.alerts.tls/alerts/rule/deleteBackfill", + "alerting:xpack.uptime.alerts.tls/alerts/rule/fillGaps", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/get", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/getRuleState", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/find", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/getBackfill", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/findBackfill", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/findGaps", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/create", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/delete", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/update", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/updateApiKey", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/enable", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/disable", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/muteAll", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/unmuteAll", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/muteAlert", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/unmuteAlert", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/snooze", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/bulkEdit", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/bulkDelete", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/bulkEnable", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/bulkDisable", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/unsnooze", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/runSoon", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/scheduleBackfill", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/deleteBackfill", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/fillGaps", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/get", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/getRuleState", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/find", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/getBackfill", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/findBackfill", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/findGaps", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/create", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/delete", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/update", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/updateApiKey", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/enable", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/disable", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/muteAll", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/unmuteAll", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/muteAlert", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/unmuteAlert", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/snooze", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/bulkEdit", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/bulkDelete", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/bulkEnable", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/bulkDisable", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/unsnooze", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/runSoon", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/scheduleBackfill", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/deleteBackfill", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/fillGaps", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/get", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/getRuleState", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/find", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/getBackfill", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/findBackfill", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/findGaps", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/create", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/delete", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/update", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/updateApiKey", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/enable", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/disable", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/muteAll", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/unmuteAll", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/muteAlert", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/unmuteAlert", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/snooze", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/bulkEdit", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/bulkDelete", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/bulkEnable", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/bulkDisable", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/unsnooze", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/runSoon", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/scheduleBackfill", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/deleteBackfill", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/fillGaps", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/get", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/getRuleState", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/find", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/getBackfill", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/findBackfill", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/findGaps", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/create", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/delete", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/update", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/updateApiKey", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/enable", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/disable", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/muteAll", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/unmuteAll", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/muteAlert", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/unmuteAlert", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/snooze", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/bulkEdit", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/bulkDelete", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/bulkEnable", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/bulkDisable", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/unsnooze", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/runSoon", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/scheduleBackfill", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/deleteBackfill", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/fillGaps", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/get", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/getRuleState", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/find", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/getBackfill", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/findBackfill", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/findGaps", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/create", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/delete", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/update", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/updateApiKey", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/enable", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/disable", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/muteAll", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/unmuteAll", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/muteAlert", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/unmuteAlert", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/snooze", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/bulkEdit", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/bulkDelete", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/bulkEnable", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/bulkDisable", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/unsnooze", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/runSoon", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/scheduleBackfill", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/deleteBackfill", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/fillGaps", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/get", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/getRuleState", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/find", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/getBackfill", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/findBackfill", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/findGaps", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/create", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/delete", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/update", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/updateApiKey", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/enable", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/disable", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/muteAll", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/unmuteAll", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/muteAlert", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/unmuteAlert", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/snooze", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/bulkEdit", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/bulkDelete", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/bulkEnable", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/bulkDisable", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/unsnooze", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/runSoon", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/scheduleBackfill", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/deleteBackfill", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/fillGaps", + "alerting:logs.alert.document.count/observability/rule/get", + "alerting:logs.alert.document.count/observability/rule/getRuleState", + "alerting:logs.alert.document.count/observability/rule/getAlertSummary", + "alerting:logs.alert.document.count/observability/rule/getExecutionLog", + "alerting:logs.alert.document.count/observability/rule/getActionErrorLog", + "alerting:logs.alert.document.count/observability/rule/find", + "alerting:logs.alert.document.count/observability/rule/getRuleExecutionKPI", + "alerting:logs.alert.document.count/observability/rule/getBackfill", + "alerting:logs.alert.document.count/observability/rule/findBackfill", + "alerting:logs.alert.document.count/observability/rule/findGaps", + "alerting:logs.alert.document.count/observability/rule/create", + "alerting:logs.alert.document.count/observability/rule/delete", + "alerting:logs.alert.document.count/observability/rule/update", + "alerting:logs.alert.document.count/observability/rule/updateApiKey", + "alerting:logs.alert.document.count/observability/rule/enable", + "alerting:logs.alert.document.count/observability/rule/disable", + "alerting:logs.alert.document.count/observability/rule/muteAll", + "alerting:logs.alert.document.count/observability/rule/unmuteAll", + "alerting:logs.alert.document.count/observability/rule/muteAlert", + "alerting:logs.alert.document.count/observability/rule/unmuteAlert", + "alerting:logs.alert.document.count/observability/rule/snooze", + "alerting:logs.alert.document.count/observability/rule/bulkEdit", + "alerting:logs.alert.document.count/observability/rule/bulkDelete", + "alerting:logs.alert.document.count/observability/rule/bulkEnable", + "alerting:logs.alert.document.count/observability/rule/bulkDisable", + "alerting:logs.alert.document.count/observability/rule/unsnooze", + "alerting:logs.alert.document.count/observability/rule/runSoon", + "alerting:logs.alert.document.count/observability/rule/scheduleBackfill", + "alerting:logs.alert.document.count/observability/rule/deleteBackfill", + "alerting:logs.alert.document.count/observability/rule/fillGaps", + "alerting:logs.alert.document.count/alerts/rule/get", + "alerting:logs.alert.document.count/alerts/rule/getRuleState", + "alerting:logs.alert.document.count/alerts/rule/getAlertSummary", + "alerting:logs.alert.document.count/alerts/rule/getExecutionLog", + "alerting:logs.alert.document.count/alerts/rule/getActionErrorLog", + "alerting:logs.alert.document.count/alerts/rule/find", + "alerting:logs.alert.document.count/alerts/rule/getRuleExecutionKPI", + "alerting:logs.alert.document.count/alerts/rule/getBackfill", + "alerting:logs.alert.document.count/alerts/rule/findBackfill", + "alerting:logs.alert.document.count/alerts/rule/findGaps", + "alerting:logs.alert.document.count/alerts/rule/create", + "alerting:logs.alert.document.count/alerts/rule/delete", + "alerting:logs.alert.document.count/alerts/rule/update", + "alerting:logs.alert.document.count/alerts/rule/updateApiKey", + "alerting:logs.alert.document.count/alerts/rule/enable", + "alerting:logs.alert.document.count/alerts/rule/disable", + "alerting:logs.alert.document.count/alerts/rule/muteAll", + "alerting:logs.alert.document.count/alerts/rule/unmuteAll", + "alerting:logs.alert.document.count/alerts/rule/muteAlert", + "alerting:logs.alert.document.count/alerts/rule/unmuteAlert", + "alerting:logs.alert.document.count/alerts/rule/snooze", + "alerting:logs.alert.document.count/alerts/rule/bulkEdit", + "alerting:logs.alert.document.count/alerts/rule/bulkDelete", + "alerting:logs.alert.document.count/alerts/rule/bulkEnable", + "alerting:logs.alert.document.count/alerts/rule/bulkDisable", + "alerting:logs.alert.document.count/alerts/rule/unsnooze", + "alerting:logs.alert.document.count/alerts/rule/runSoon", + "alerting:logs.alert.document.count/alerts/rule/scheduleBackfill", + "alerting:logs.alert.document.count/alerts/rule/deleteBackfill", + "alerting:logs.alert.document.count/alerts/rule/fillGaps", + "alerting:slo.rules.burnRate/observability/rule/get", + "alerting:slo.rules.burnRate/observability/rule/getRuleState", + "alerting:slo.rules.burnRate/observability/rule/getAlertSummary", + "alerting:slo.rules.burnRate/observability/rule/getExecutionLog", + "alerting:slo.rules.burnRate/observability/rule/getActionErrorLog", + "alerting:slo.rules.burnRate/observability/rule/find", + "alerting:slo.rules.burnRate/observability/rule/getRuleExecutionKPI", + "alerting:slo.rules.burnRate/observability/rule/getBackfill", + "alerting:slo.rules.burnRate/observability/rule/findBackfill", + "alerting:slo.rules.burnRate/observability/rule/findGaps", + "alerting:slo.rules.burnRate/observability/rule/create", + "alerting:slo.rules.burnRate/observability/rule/delete", + "alerting:slo.rules.burnRate/observability/rule/update", + "alerting:slo.rules.burnRate/observability/rule/updateApiKey", + "alerting:slo.rules.burnRate/observability/rule/enable", + "alerting:slo.rules.burnRate/observability/rule/disable", + "alerting:slo.rules.burnRate/observability/rule/muteAll", + "alerting:slo.rules.burnRate/observability/rule/unmuteAll", + "alerting:slo.rules.burnRate/observability/rule/muteAlert", + "alerting:slo.rules.burnRate/observability/rule/unmuteAlert", + "alerting:slo.rules.burnRate/observability/rule/snooze", + "alerting:slo.rules.burnRate/observability/rule/bulkEdit", + "alerting:slo.rules.burnRate/observability/rule/bulkDelete", + "alerting:slo.rules.burnRate/observability/rule/bulkEnable", + "alerting:slo.rules.burnRate/observability/rule/bulkDisable", + "alerting:slo.rules.burnRate/observability/rule/unsnooze", + "alerting:slo.rules.burnRate/observability/rule/runSoon", + "alerting:slo.rules.burnRate/observability/rule/scheduleBackfill", + "alerting:slo.rules.burnRate/observability/rule/deleteBackfill", + "alerting:slo.rules.burnRate/observability/rule/fillGaps", + "alerting:slo.rules.burnRate/alerts/rule/get", + "alerting:slo.rules.burnRate/alerts/rule/getRuleState", + "alerting:slo.rules.burnRate/alerts/rule/getAlertSummary", + "alerting:slo.rules.burnRate/alerts/rule/getExecutionLog", + "alerting:slo.rules.burnRate/alerts/rule/getActionErrorLog", + "alerting:slo.rules.burnRate/alerts/rule/find", + "alerting:slo.rules.burnRate/alerts/rule/getRuleExecutionKPI", + "alerting:slo.rules.burnRate/alerts/rule/getBackfill", + "alerting:slo.rules.burnRate/alerts/rule/findBackfill", + "alerting:slo.rules.burnRate/alerts/rule/findGaps", + "alerting:slo.rules.burnRate/alerts/rule/create", + "alerting:slo.rules.burnRate/alerts/rule/delete", + "alerting:slo.rules.burnRate/alerts/rule/update", + "alerting:slo.rules.burnRate/alerts/rule/updateApiKey", + "alerting:slo.rules.burnRate/alerts/rule/enable", + "alerting:slo.rules.burnRate/alerts/rule/disable", + "alerting:slo.rules.burnRate/alerts/rule/muteAll", + "alerting:slo.rules.burnRate/alerts/rule/unmuteAll", + "alerting:slo.rules.burnRate/alerts/rule/muteAlert", + "alerting:slo.rules.burnRate/alerts/rule/unmuteAlert", + "alerting:slo.rules.burnRate/alerts/rule/snooze", + "alerting:slo.rules.burnRate/alerts/rule/bulkEdit", + "alerting:slo.rules.burnRate/alerts/rule/bulkDelete", + "alerting:slo.rules.burnRate/alerts/rule/bulkEnable", + "alerting:slo.rules.burnRate/alerts/rule/bulkDisable", + "alerting:slo.rules.burnRate/alerts/rule/unsnooze", + "alerting:slo.rules.burnRate/alerts/rule/runSoon", + "alerting:slo.rules.burnRate/alerts/rule/scheduleBackfill", + "alerting:slo.rules.burnRate/alerts/rule/deleteBackfill", + "alerting:slo.rules.burnRate/alerts/rule/fillGaps", + "alerting:observability.rules.custom_threshold/observability/rule/get", + "alerting:observability.rules.custom_threshold/observability/rule/getRuleState", + "alerting:observability.rules.custom_threshold/observability/rule/getAlertSummary", + "alerting:observability.rules.custom_threshold/observability/rule/getExecutionLog", + "alerting:observability.rules.custom_threshold/observability/rule/getActionErrorLog", + "alerting:observability.rules.custom_threshold/observability/rule/find", + "alerting:observability.rules.custom_threshold/observability/rule/getRuleExecutionKPI", + "alerting:observability.rules.custom_threshold/observability/rule/getBackfill", + "alerting:observability.rules.custom_threshold/observability/rule/findBackfill", + "alerting:observability.rules.custom_threshold/observability/rule/findGaps", + "alerting:observability.rules.custom_threshold/observability/rule/create", + "alerting:observability.rules.custom_threshold/observability/rule/delete", + "alerting:observability.rules.custom_threshold/observability/rule/update", + "alerting:observability.rules.custom_threshold/observability/rule/updateApiKey", + "alerting:observability.rules.custom_threshold/observability/rule/enable", + "alerting:observability.rules.custom_threshold/observability/rule/disable", + "alerting:observability.rules.custom_threshold/observability/rule/muteAll", + "alerting:observability.rules.custom_threshold/observability/rule/unmuteAll", + "alerting:observability.rules.custom_threshold/observability/rule/muteAlert", + "alerting:observability.rules.custom_threshold/observability/rule/unmuteAlert", + "alerting:observability.rules.custom_threshold/observability/rule/snooze", + "alerting:observability.rules.custom_threshold/observability/rule/bulkEdit", + "alerting:observability.rules.custom_threshold/observability/rule/bulkDelete", + "alerting:observability.rules.custom_threshold/observability/rule/bulkEnable", + "alerting:observability.rules.custom_threshold/observability/rule/bulkDisable", + "alerting:observability.rules.custom_threshold/observability/rule/unsnooze", + "alerting:observability.rules.custom_threshold/observability/rule/runSoon", + "alerting:observability.rules.custom_threshold/observability/rule/scheduleBackfill", + "alerting:observability.rules.custom_threshold/observability/rule/deleteBackfill", + "alerting:observability.rules.custom_threshold/observability/rule/fillGaps", + "alerting:observability.rules.custom_threshold/alerts/rule/get", + "alerting:observability.rules.custom_threshold/alerts/rule/getRuleState", + "alerting:observability.rules.custom_threshold/alerts/rule/getAlertSummary", + "alerting:observability.rules.custom_threshold/alerts/rule/getExecutionLog", + "alerting:observability.rules.custom_threshold/alerts/rule/getActionErrorLog", + "alerting:observability.rules.custom_threshold/alerts/rule/find", + "alerting:observability.rules.custom_threshold/alerts/rule/getRuleExecutionKPI", + "alerting:observability.rules.custom_threshold/alerts/rule/getBackfill", + "alerting:observability.rules.custom_threshold/alerts/rule/findBackfill", + "alerting:observability.rules.custom_threshold/alerts/rule/findGaps", + "alerting:observability.rules.custom_threshold/alerts/rule/create", + "alerting:observability.rules.custom_threshold/alerts/rule/delete", + "alerting:observability.rules.custom_threshold/alerts/rule/update", + "alerting:observability.rules.custom_threshold/alerts/rule/updateApiKey", + "alerting:observability.rules.custom_threshold/alerts/rule/enable", + "alerting:observability.rules.custom_threshold/alerts/rule/disable", + "alerting:observability.rules.custom_threshold/alerts/rule/muteAll", + "alerting:observability.rules.custom_threshold/alerts/rule/unmuteAll", + "alerting:observability.rules.custom_threshold/alerts/rule/muteAlert", + "alerting:observability.rules.custom_threshold/alerts/rule/unmuteAlert", + "alerting:observability.rules.custom_threshold/alerts/rule/snooze", + "alerting:observability.rules.custom_threshold/alerts/rule/bulkEdit", + "alerting:observability.rules.custom_threshold/alerts/rule/bulkDelete", + "alerting:observability.rules.custom_threshold/alerts/rule/bulkEnable", + "alerting:observability.rules.custom_threshold/alerts/rule/bulkDisable", + "alerting:observability.rules.custom_threshold/alerts/rule/unsnooze", + "alerting:observability.rules.custom_threshold/alerts/rule/runSoon", + "alerting:observability.rules.custom_threshold/alerts/rule/scheduleBackfill", + "alerting:observability.rules.custom_threshold/alerts/rule/deleteBackfill", + "alerting:observability.rules.custom_threshold/alerts/rule/fillGaps", + "alerting:.es-query/observability/rule/get", + "alerting:.es-query/observability/rule/getRuleState", + "alerting:.es-query/observability/rule/getAlertSummary", + "alerting:.es-query/observability/rule/getExecutionLog", + "alerting:.es-query/observability/rule/getActionErrorLog", + "alerting:.es-query/observability/rule/find", + "alerting:.es-query/observability/rule/getRuleExecutionKPI", + "alerting:.es-query/observability/rule/getBackfill", + "alerting:.es-query/observability/rule/findBackfill", + "alerting:.es-query/observability/rule/findGaps", + "alerting:.es-query/observability/rule/create", + "alerting:.es-query/observability/rule/delete", + "alerting:.es-query/observability/rule/update", + "alerting:.es-query/observability/rule/updateApiKey", + "alerting:.es-query/observability/rule/enable", + "alerting:.es-query/observability/rule/disable", + "alerting:.es-query/observability/rule/muteAll", + "alerting:.es-query/observability/rule/unmuteAll", + "alerting:.es-query/observability/rule/muteAlert", + "alerting:.es-query/observability/rule/unmuteAlert", + "alerting:.es-query/observability/rule/snooze", + "alerting:.es-query/observability/rule/bulkEdit", + "alerting:.es-query/observability/rule/bulkDelete", + "alerting:.es-query/observability/rule/bulkEnable", + "alerting:.es-query/observability/rule/bulkDisable", + "alerting:.es-query/observability/rule/unsnooze", + "alerting:.es-query/observability/rule/runSoon", + "alerting:.es-query/observability/rule/scheduleBackfill", + "alerting:.es-query/observability/rule/deleteBackfill", + "alerting:.es-query/observability/rule/fillGaps", + "alerting:.es-query/alerts/rule/get", + "alerting:.es-query/alerts/rule/getRuleState", + "alerting:.es-query/alerts/rule/getAlertSummary", + "alerting:.es-query/alerts/rule/getExecutionLog", + "alerting:.es-query/alerts/rule/getActionErrorLog", + "alerting:.es-query/alerts/rule/find", + "alerting:.es-query/alerts/rule/getRuleExecutionKPI", + "alerting:.es-query/alerts/rule/getBackfill", + "alerting:.es-query/alerts/rule/findBackfill", + "alerting:.es-query/alerts/rule/findGaps", + "alerting:.es-query/alerts/rule/create", + "alerting:.es-query/alerts/rule/delete", + "alerting:.es-query/alerts/rule/update", + "alerting:.es-query/alerts/rule/updateApiKey", + "alerting:.es-query/alerts/rule/enable", + "alerting:.es-query/alerts/rule/disable", + "alerting:.es-query/alerts/rule/muteAll", + "alerting:.es-query/alerts/rule/unmuteAll", + "alerting:.es-query/alerts/rule/muteAlert", + "alerting:.es-query/alerts/rule/unmuteAlert", + "alerting:.es-query/alerts/rule/snooze", + "alerting:.es-query/alerts/rule/bulkEdit", + "alerting:.es-query/alerts/rule/bulkDelete", + "alerting:.es-query/alerts/rule/bulkEnable", + "alerting:.es-query/alerts/rule/bulkDisable", + "alerting:.es-query/alerts/rule/unsnooze", + "alerting:.es-query/alerts/rule/runSoon", + "alerting:.es-query/alerts/rule/scheduleBackfill", + "alerting:.es-query/alerts/rule/deleteBackfill", + "alerting:.es-query/alerts/rule/fillGaps", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/get", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/getRuleState", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/getAlertSummary", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/getExecutionLog", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/getActionErrorLog", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/find", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/getRuleExecutionKPI", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/getBackfill", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/findBackfill", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/findGaps", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/create", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/delete", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/update", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/updateApiKey", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/enable", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/disable", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/muteAll", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/unmuteAll", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/muteAlert", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/unmuteAlert", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/snooze", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/bulkEdit", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/bulkDelete", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/bulkEnable", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/bulkDisable", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/unsnooze", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/runSoon", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/scheduleBackfill", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/deleteBackfill", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/fillGaps", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/get", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/getRuleState", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/getAlertSummary", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/getExecutionLog", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/getActionErrorLog", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/find", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/getRuleExecutionKPI", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/getBackfill", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/findBackfill", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/findGaps", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/create", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/delete", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/update", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/updateApiKey", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/enable", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/disable", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/muteAll", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/unmuteAll", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/muteAlert", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/unmuteAlert", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/snooze", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/bulkEdit", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/bulkDelete", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/bulkEnable", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/bulkDisable", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/unsnooze", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/runSoon", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/scheduleBackfill", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/deleteBackfill", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/fillGaps", + "alerting:apm.error_rate/observability/alert/get", + "alerting:apm.error_rate/observability/alert/find", + "alerting:apm.error_rate/observability/alert/getAuthorizedAlertsIndices", + "alerting:apm.error_rate/observability/alert/getAlertSummary", + "alerting:apm.error_rate/observability/alert/update", + "alerting:apm.error_rate/alerts/alert/get", + "alerting:apm.error_rate/alerts/alert/find", + "alerting:apm.error_rate/alerts/alert/getAuthorizedAlertsIndices", + "alerting:apm.error_rate/alerts/alert/getAlertSummary", + "alerting:apm.error_rate/alerts/alert/update", + "alerting:apm.transaction_error_rate/observability/alert/get", + "alerting:apm.transaction_error_rate/observability/alert/find", + "alerting:apm.transaction_error_rate/observability/alert/getAuthorizedAlertsIndices", + "alerting:apm.transaction_error_rate/observability/alert/getAlertSummary", + "alerting:apm.transaction_error_rate/observability/alert/update", + "alerting:apm.transaction_error_rate/alerts/alert/get", + "alerting:apm.transaction_error_rate/alerts/alert/find", + "alerting:apm.transaction_error_rate/alerts/alert/getAuthorizedAlertsIndices", + "alerting:apm.transaction_error_rate/alerts/alert/getAlertSummary", + "alerting:apm.transaction_error_rate/alerts/alert/update", + "alerting:apm.transaction_duration/observability/alert/get", + "alerting:apm.transaction_duration/observability/alert/find", + "alerting:apm.transaction_duration/observability/alert/getAuthorizedAlertsIndices", + "alerting:apm.transaction_duration/observability/alert/getAlertSummary", + "alerting:apm.transaction_duration/observability/alert/update", + "alerting:apm.transaction_duration/alerts/alert/get", + "alerting:apm.transaction_duration/alerts/alert/find", + "alerting:apm.transaction_duration/alerts/alert/getAuthorizedAlertsIndices", + "alerting:apm.transaction_duration/alerts/alert/getAlertSummary", + "alerting:apm.transaction_duration/alerts/alert/update", + "alerting:apm.anomaly/observability/alert/get", + "alerting:apm.anomaly/observability/alert/find", + "alerting:apm.anomaly/observability/alert/getAuthorizedAlertsIndices", + "alerting:apm.anomaly/observability/alert/getAlertSummary", + "alerting:apm.anomaly/observability/alert/update", + "alerting:apm.anomaly/alerts/alert/get", + "alerting:apm.anomaly/alerts/alert/find", + "alerting:apm.anomaly/alerts/alert/getAuthorizedAlertsIndices", + "alerting:apm.anomaly/alerts/alert/getAlertSummary", + "alerting:apm.anomaly/alerts/alert/update", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/alert/get", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/alert/find", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/alert/getAuthorizedAlertsIndices", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/alert/getAlertSummary", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/alert/update", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/alert/get", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/alert/find", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/alert/getAuthorizedAlertsIndices", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/alert/getAlertSummary", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/alert/update", + "alerting:xpack.synthetics.alerts.tls/observability/alert/get", + "alerting:xpack.synthetics.alerts.tls/observability/alert/find", + "alerting:xpack.synthetics.alerts.tls/observability/alert/getAuthorizedAlertsIndices", + "alerting:xpack.synthetics.alerts.tls/observability/alert/getAlertSummary", + "alerting:xpack.synthetics.alerts.tls/observability/alert/update", + "alerting:xpack.synthetics.alerts.tls/alerts/alert/get", + "alerting:xpack.synthetics.alerts.tls/alerts/alert/find", + "alerting:xpack.synthetics.alerts.tls/alerts/alert/getAuthorizedAlertsIndices", + "alerting:xpack.synthetics.alerts.tls/alerts/alert/getAlertSummary", + "alerting:xpack.synthetics.alerts.tls/alerts/alert/update", + "alerting:metrics.alert.threshold/observability/alert/get", + "alerting:metrics.alert.threshold/observability/alert/find", + "alerting:metrics.alert.threshold/observability/alert/getAuthorizedAlertsIndices", + "alerting:metrics.alert.threshold/observability/alert/getAlertSummary", + "alerting:metrics.alert.threshold/observability/alert/update", + "alerting:metrics.alert.threshold/alerts/alert/get", + "alerting:metrics.alert.threshold/alerts/alert/find", + "alerting:metrics.alert.threshold/alerts/alert/getAuthorizedAlertsIndices", + "alerting:metrics.alert.threshold/alerts/alert/getAlertSummary", + "alerting:metrics.alert.threshold/alerts/alert/update", + "alerting:metrics.alert.inventory.threshold/observability/alert/get", + "alerting:metrics.alert.inventory.threshold/observability/alert/find", + "alerting:metrics.alert.inventory.threshold/observability/alert/getAuthorizedAlertsIndices", + "alerting:metrics.alert.inventory.threshold/observability/alert/getAlertSummary", + "alerting:metrics.alert.inventory.threshold/observability/alert/update", + "alerting:metrics.alert.inventory.threshold/alerts/alert/get", + "alerting:metrics.alert.inventory.threshold/alerts/alert/find", + "alerting:metrics.alert.inventory.threshold/alerts/alert/getAuthorizedAlertsIndices", + "alerting:metrics.alert.inventory.threshold/alerts/alert/getAlertSummary", + "alerting:metrics.alert.inventory.threshold/alerts/alert/update", + "alerting:xpack.uptime.alerts.tls/observability/alert/get", + "alerting:xpack.uptime.alerts.tls/observability/alert/find", + "alerting:xpack.uptime.alerts.tls/observability/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.tls/observability/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.tls/observability/alert/update", + "alerting:xpack.uptime.alerts.tls/alerts/alert/get", + "alerting:xpack.uptime.alerts.tls/alerts/alert/find", + "alerting:xpack.uptime.alerts.tls/alerts/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.tls/alerts/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.tls/alerts/alert/update", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/alert/get", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/alert/find", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/alert/update", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/alert/get", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/alert/find", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/alert/update", + "alerting:xpack.uptime.alerts.monitorStatus/observability/alert/get", + "alerting:xpack.uptime.alerts.monitorStatus/observability/alert/find", + "alerting:xpack.uptime.alerts.monitorStatus/observability/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.monitorStatus/observability/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.monitorStatus/observability/alert/update", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/alert/get", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/alert/find", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/alert/update", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/alert/get", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/alert/find", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/alert/update", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/alert/get", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/alert/find", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/alert/update", + "alerting:logs.alert.document.count/observability/alert/get", + "alerting:logs.alert.document.count/observability/alert/find", + "alerting:logs.alert.document.count/observability/alert/getAuthorizedAlertsIndices", + "alerting:logs.alert.document.count/observability/alert/getAlertSummary", + "alerting:logs.alert.document.count/observability/alert/update", + "alerting:logs.alert.document.count/alerts/alert/get", + "alerting:logs.alert.document.count/alerts/alert/find", + "alerting:logs.alert.document.count/alerts/alert/getAuthorizedAlertsIndices", + "alerting:logs.alert.document.count/alerts/alert/getAlertSummary", + "alerting:logs.alert.document.count/alerts/alert/update", + "alerting:slo.rules.burnRate/observability/alert/get", + "alerting:slo.rules.burnRate/observability/alert/find", + "alerting:slo.rules.burnRate/observability/alert/getAuthorizedAlertsIndices", + "alerting:slo.rules.burnRate/observability/alert/getAlertSummary", + "alerting:slo.rules.burnRate/observability/alert/update", + "alerting:slo.rules.burnRate/alerts/alert/get", + "alerting:slo.rules.burnRate/alerts/alert/find", + "alerting:slo.rules.burnRate/alerts/alert/getAuthorizedAlertsIndices", + "alerting:slo.rules.burnRate/alerts/alert/getAlertSummary", + "alerting:slo.rules.burnRate/alerts/alert/update", + "alerting:observability.rules.custom_threshold/observability/alert/get", + "alerting:observability.rules.custom_threshold/observability/alert/find", + "alerting:observability.rules.custom_threshold/observability/alert/getAuthorizedAlertsIndices", + "alerting:observability.rules.custom_threshold/observability/alert/getAlertSummary", + "alerting:observability.rules.custom_threshold/observability/alert/update", + "alerting:observability.rules.custom_threshold/alerts/alert/get", + "alerting:observability.rules.custom_threshold/alerts/alert/find", + "alerting:observability.rules.custom_threshold/alerts/alert/getAuthorizedAlertsIndices", + "alerting:observability.rules.custom_threshold/alerts/alert/getAlertSummary", + "alerting:observability.rules.custom_threshold/alerts/alert/update", + "alerting:.es-query/observability/alert/get", + "alerting:.es-query/observability/alert/find", + "alerting:.es-query/observability/alert/getAuthorizedAlertsIndices", + "alerting:.es-query/observability/alert/getAlertSummary", + "alerting:.es-query/observability/alert/update", + "alerting:.es-query/alerts/alert/get", + "alerting:.es-query/alerts/alert/find", + "alerting:.es-query/alerts/alert/getAuthorizedAlertsIndices", + "alerting:.es-query/alerts/alert/getAlertSummary", + "alerting:.es-query/alerts/alert/update", + "alerting:xpack.ml.anomaly_detection_alert/observability/alert/get", + "alerting:xpack.ml.anomaly_detection_alert/observability/alert/find", + "alerting:xpack.ml.anomaly_detection_alert/observability/alert/getAuthorizedAlertsIndices", + "alerting:xpack.ml.anomaly_detection_alert/observability/alert/getAlertSummary", + "alerting:xpack.ml.anomaly_detection_alert/observability/alert/update", + "alerting:xpack.ml.anomaly_detection_alert/alerts/alert/get", + "alerting:xpack.ml.anomaly_detection_alert/alerts/alert/find", + "alerting:xpack.ml.anomaly_detection_alert/alerts/alert/getAuthorizedAlertsIndices", + "alerting:xpack.ml.anomaly_detection_alert/alerts/alert/getAlertSummary", + "alerting:xpack.ml.anomaly_detection_alert/alerts/alert/update", + "ui:discover_v2/show", + "ui:discover_v2/save", + "ui:discover_v2/createShortUrl", + "ui:discover_v2/storeSearchSession", + "ui:discover_v2/generateCsv", + "ui:savedQueryManagement/showQueries", + "ui:savedQueryManagement/saveQuery", + ], + "generate_report": Array [ + "login:", + "api:generateReport", + "ui:management/insightsAndAlerting/reporting", + "ui:discover/generateCsv", + "ui:discover_v2/generateCsv", + ], + "minimal_all": Array [ + "login:", + "api:fileUpload:analyzeFile", + "api:savedQuery:manage", + "api:savedQuery:read", + "app:discover", + "app:kibana", + "ui:catalogue/discover", + "ui:navLinks/discover", + "ui:navLinks/kibana", + "saved_object:search/bulk_get", + "saved_object:search/get", + "saved_object:search/find", + "saved_object:search/open_point_in_time", + "saved_object:search/close_point_in_time", + "saved_object:search/create", + "saved_object:search/bulk_create", + "saved_object:search/update", + "saved_object:search/bulk_update", + "saved_object:search/delete", + "saved_object:search/bulk_delete", + "saved_object:search/share_to_space", + "saved_object:query/bulk_get", + "saved_object:query/get", + "saved_object:query/find", + "saved_object:query/open_point_in_time", + "saved_object:query/close_point_in_time", + "saved_object:query/create", + "saved_object:query/bulk_create", + "saved_object:query/update", + "saved_object:query/bulk_update", + "saved_object:query/delete", + "saved_object:query/bulk_delete", + "saved_object:query/share_to_space", + "saved_object:telemetry/bulk_get", + "saved_object:telemetry/get", + "saved_object:telemetry/find", + "saved_object:telemetry/open_point_in_time", + "saved_object:telemetry/close_point_in_time", + "saved_object:telemetry/create", + "saved_object:telemetry/bulk_create", + "saved_object:telemetry/update", + "saved_object:telemetry/bulk_update", + "saved_object:telemetry/delete", + "saved_object:telemetry/bulk_delete", + "saved_object:telemetry/share_to_space", + "saved_object:index-pattern/bulk_get", + "saved_object:index-pattern/get", + "saved_object:index-pattern/find", + "saved_object:index-pattern/open_point_in_time", + "saved_object:index-pattern/close_point_in_time", + "saved_object:config/bulk_get", + "saved_object:config/get", + "saved_object:config/find", + "saved_object:config/open_point_in_time", + "saved_object:config/close_point_in_time", + "saved_object:config-global/bulk_get", + "saved_object:config-global/get", + "saved_object:config-global/find", + "saved_object:config-global/open_point_in_time", + "saved_object:config-global/close_point_in_time", + "saved_object:url/bulk_get", + "saved_object:url/get", + "saved_object:url/find", + "saved_object:url/open_point_in_time", + "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", + "saved_object:cloud/bulk_get", + "saved_object:cloud/get", + "saved_object:cloud/find", + "saved_object:cloud/open_point_in_time", + "saved_object:cloud/close_point_in_time", + "ui:discover/show", + "ui:discover/save", + "ui:discover/saveQuery", + "api:rac", + "app:observability", + "ui:catalogue/observability", + "ui:navLinks/observability", + "ui:observability/read", + "ui:observability/write", + "alerting:apm.error_rate/observability/rule/get", + "alerting:apm.error_rate/observability/rule/getRuleState", + "alerting:apm.error_rate/observability/rule/getAlertSummary", + "alerting:apm.error_rate/observability/rule/getExecutionLog", + "alerting:apm.error_rate/observability/rule/getActionErrorLog", + "alerting:apm.error_rate/observability/rule/find", + "alerting:apm.error_rate/observability/rule/getRuleExecutionKPI", + "alerting:apm.error_rate/observability/rule/getBackfill", + "alerting:apm.error_rate/observability/rule/findBackfill", + "alerting:apm.error_rate/observability/rule/findGaps", + "alerting:apm.error_rate/observability/rule/create", + "alerting:apm.error_rate/observability/rule/delete", + "alerting:apm.error_rate/observability/rule/update", + "alerting:apm.error_rate/observability/rule/updateApiKey", + "alerting:apm.error_rate/observability/rule/enable", + "alerting:apm.error_rate/observability/rule/disable", + "alerting:apm.error_rate/observability/rule/muteAll", + "alerting:apm.error_rate/observability/rule/unmuteAll", + "alerting:apm.error_rate/observability/rule/muteAlert", + "alerting:apm.error_rate/observability/rule/unmuteAlert", + "alerting:apm.error_rate/observability/rule/snooze", + "alerting:apm.error_rate/observability/rule/bulkEdit", + "alerting:apm.error_rate/observability/rule/bulkDelete", + "alerting:apm.error_rate/observability/rule/bulkEnable", + "alerting:apm.error_rate/observability/rule/bulkDisable", + "alerting:apm.error_rate/observability/rule/unsnooze", + "alerting:apm.error_rate/observability/rule/runSoon", + "alerting:apm.error_rate/observability/rule/scheduleBackfill", + "alerting:apm.error_rate/observability/rule/deleteBackfill", + "alerting:apm.error_rate/observability/rule/fillGaps", + "alerting:apm.error_rate/alerts/rule/get", + "alerting:apm.error_rate/alerts/rule/getRuleState", + "alerting:apm.error_rate/alerts/rule/getAlertSummary", + "alerting:apm.error_rate/alerts/rule/getExecutionLog", + "alerting:apm.error_rate/alerts/rule/getActionErrorLog", + "alerting:apm.error_rate/alerts/rule/find", + "alerting:apm.error_rate/alerts/rule/getRuleExecutionKPI", + "alerting:apm.error_rate/alerts/rule/getBackfill", + "alerting:apm.error_rate/alerts/rule/findBackfill", + "alerting:apm.error_rate/alerts/rule/findGaps", + "alerting:apm.error_rate/alerts/rule/create", + "alerting:apm.error_rate/alerts/rule/delete", + "alerting:apm.error_rate/alerts/rule/update", + "alerting:apm.error_rate/alerts/rule/updateApiKey", + "alerting:apm.error_rate/alerts/rule/enable", + "alerting:apm.error_rate/alerts/rule/disable", + "alerting:apm.error_rate/alerts/rule/muteAll", + "alerting:apm.error_rate/alerts/rule/unmuteAll", + "alerting:apm.error_rate/alerts/rule/muteAlert", + "alerting:apm.error_rate/alerts/rule/unmuteAlert", + "alerting:apm.error_rate/alerts/rule/snooze", + "alerting:apm.error_rate/alerts/rule/bulkEdit", + "alerting:apm.error_rate/alerts/rule/bulkDelete", + "alerting:apm.error_rate/alerts/rule/bulkEnable", + "alerting:apm.error_rate/alerts/rule/bulkDisable", + "alerting:apm.error_rate/alerts/rule/unsnooze", + "alerting:apm.error_rate/alerts/rule/runSoon", + "alerting:apm.error_rate/alerts/rule/scheduleBackfill", + "alerting:apm.error_rate/alerts/rule/deleteBackfill", + "alerting:apm.error_rate/alerts/rule/fillGaps", + "alerting:apm.transaction_error_rate/observability/rule/get", + "alerting:apm.transaction_error_rate/observability/rule/getRuleState", + "alerting:apm.transaction_error_rate/observability/rule/getAlertSummary", + "alerting:apm.transaction_error_rate/observability/rule/getExecutionLog", + "alerting:apm.transaction_error_rate/observability/rule/getActionErrorLog", + "alerting:apm.transaction_error_rate/observability/rule/find", + "alerting:apm.transaction_error_rate/observability/rule/getRuleExecutionKPI", + "alerting:apm.transaction_error_rate/observability/rule/getBackfill", + "alerting:apm.transaction_error_rate/observability/rule/findBackfill", + "alerting:apm.transaction_error_rate/observability/rule/findGaps", + "alerting:apm.transaction_error_rate/observability/rule/create", + "alerting:apm.transaction_error_rate/observability/rule/delete", + "alerting:apm.transaction_error_rate/observability/rule/update", + "alerting:apm.transaction_error_rate/observability/rule/updateApiKey", + "alerting:apm.transaction_error_rate/observability/rule/enable", + "alerting:apm.transaction_error_rate/observability/rule/disable", + "alerting:apm.transaction_error_rate/observability/rule/muteAll", + "alerting:apm.transaction_error_rate/observability/rule/unmuteAll", + "alerting:apm.transaction_error_rate/observability/rule/muteAlert", + "alerting:apm.transaction_error_rate/observability/rule/unmuteAlert", + "alerting:apm.transaction_error_rate/observability/rule/snooze", + "alerting:apm.transaction_error_rate/observability/rule/bulkEdit", + "alerting:apm.transaction_error_rate/observability/rule/bulkDelete", + "alerting:apm.transaction_error_rate/observability/rule/bulkEnable", + "alerting:apm.transaction_error_rate/observability/rule/bulkDisable", + "alerting:apm.transaction_error_rate/observability/rule/unsnooze", + "alerting:apm.transaction_error_rate/observability/rule/runSoon", + "alerting:apm.transaction_error_rate/observability/rule/scheduleBackfill", + "alerting:apm.transaction_error_rate/observability/rule/deleteBackfill", + "alerting:apm.transaction_error_rate/observability/rule/fillGaps", + "alerting:apm.transaction_error_rate/alerts/rule/get", + "alerting:apm.transaction_error_rate/alerts/rule/getRuleState", + "alerting:apm.transaction_error_rate/alerts/rule/getAlertSummary", + "alerting:apm.transaction_error_rate/alerts/rule/getExecutionLog", + "alerting:apm.transaction_error_rate/alerts/rule/getActionErrorLog", + "alerting:apm.transaction_error_rate/alerts/rule/find", + "alerting:apm.transaction_error_rate/alerts/rule/getRuleExecutionKPI", + "alerting:apm.transaction_error_rate/alerts/rule/getBackfill", + "alerting:apm.transaction_error_rate/alerts/rule/findBackfill", + "alerting:apm.transaction_error_rate/alerts/rule/findGaps", + "alerting:apm.transaction_error_rate/alerts/rule/create", + "alerting:apm.transaction_error_rate/alerts/rule/delete", + "alerting:apm.transaction_error_rate/alerts/rule/update", + "alerting:apm.transaction_error_rate/alerts/rule/updateApiKey", + "alerting:apm.transaction_error_rate/alerts/rule/enable", + "alerting:apm.transaction_error_rate/alerts/rule/disable", + "alerting:apm.transaction_error_rate/alerts/rule/muteAll", + "alerting:apm.transaction_error_rate/alerts/rule/unmuteAll", + "alerting:apm.transaction_error_rate/alerts/rule/muteAlert", + "alerting:apm.transaction_error_rate/alerts/rule/unmuteAlert", + "alerting:apm.transaction_error_rate/alerts/rule/snooze", + "alerting:apm.transaction_error_rate/alerts/rule/bulkEdit", + "alerting:apm.transaction_error_rate/alerts/rule/bulkDelete", + "alerting:apm.transaction_error_rate/alerts/rule/bulkEnable", + "alerting:apm.transaction_error_rate/alerts/rule/bulkDisable", + "alerting:apm.transaction_error_rate/alerts/rule/unsnooze", + "alerting:apm.transaction_error_rate/alerts/rule/runSoon", + "alerting:apm.transaction_error_rate/alerts/rule/scheduleBackfill", + "alerting:apm.transaction_error_rate/alerts/rule/deleteBackfill", + "alerting:apm.transaction_error_rate/alerts/rule/fillGaps", + "alerting:apm.transaction_duration/observability/rule/get", + "alerting:apm.transaction_duration/observability/rule/getRuleState", + "alerting:apm.transaction_duration/observability/rule/getAlertSummary", + "alerting:apm.transaction_duration/observability/rule/getExecutionLog", + "alerting:apm.transaction_duration/observability/rule/getActionErrorLog", + "alerting:apm.transaction_duration/observability/rule/find", + "alerting:apm.transaction_duration/observability/rule/getRuleExecutionKPI", + "alerting:apm.transaction_duration/observability/rule/getBackfill", + "alerting:apm.transaction_duration/observability/rule/findBackfill", + "alerting:apm.transaction_duration/observability/rule/findGaps", + "alerting:apm.transaction_duration/observability/rule/create", + "alerting:apm.transaction_duration/observability/rule/delete", + "alerting:apm.transaction_duration/observability/rule/update", + "alerting:apm.transaction_duration/observability/rule/updateApiKey", + "alerting:apm.transaction_duration/observability/rule/enable", + "alerting:apm.transaction_duration/observability/rule/disable", + "alerting:apm.transaction_duration/observability/rule/muteAll", + "alerting:apm.transaction_duration/observability/rule/unmuteAll", + "alerting:apm.transaction_duration/observability/rule/muteAlert", + "alerting:apm.transaction_duration/observability/rule/unmuteAlert", + "alerting:apm.transaction_duration/observability/rule/snooze", + "alerting:apm.transaction_duration/observability/rule/bulkEdit", + "alerting:apm.transaction_duration/observability/rule/bulkDelete", + "alerting:apm.transaction_duration/observability/rule/bulkEnable", + "alerting:apm.transaction_duration/observability/rule/bulkDisable", + "alerting:apm.transaction_duration/observability/rule/unsnooze", + "alerting:apm.transaction_duration/observability/rule/runSoon", + "alerting:apm.transaction_duration/observability/rule/scheduleBackfill", + "alerting:apm.transaction_duration/observability/rule/deleteBackfill", + "alerting:apm.transaction_duration/observability/rule/fillGaps", + "alerting:apm.transaction_duration/alerts/rule/get", + "alerting:apm.transaction_duration/alerts/rule/getRuleState", + "alerting:apm.transaction_duration/alerts/rule/getAlertSummary", + "alerting:apm.transaction_duration/alerts/rule/getExecutionLog", + "alerting:apm.transaction_duration/alerts/rule/getActionErrorLog", + "alerting:apm.transaction_duration/alerts/rule/find", + "alerting:apm.transaction_duration/alerts/rule/getRuleExecutionKPI", + "alerting:apm.transaction_duration/alerts/rule/getBackfill", + "alerting:apm.transaction_duration/alerts/rule/findBackfill", + "alerting:apm.transaction_duration/alerts/rule/findGaps", + "alerting:apm.transaction_duration/alerts/rule/create", + "alerting:apm.transaction_duration/alerts/rule/delete", + "alerting:apm.transaction_duration/alerts/rule/update", + "alerting:apm.transaction_duration/alerts/rule/updateApiKey", + "alerting:apm.transaction_duration/alerts/rule/enable", + "alerting:apm.transaction_duration/alerts/rule/disable", + "alerting:apm.transaction_duration/alerts/rule/muteAll", + "alerting:apm.transaction_duration/alerts/rule/unmuteAll", + "alerting:apm.transaction_duration/alerts/rule/muteAlert", + "alerting:apm.transaction_duration/alerts/rule/unmuteAlert", + "alerting:apm.transaction_duration/alerts/rule/snooze", + "alerting:apm.transaction_duration/alerts/rule/bulkEdit", + "alerting:apm.transaction_duration/alerts/rule/bulkDelete", + "alerting:apm.transaction_duration/alerts/rule/bulkEnable", + "alerting:apm.transaction_duration/alerts/rule/bulkDisable", + "alerting:apm.transaction_duration/alerts/rule/unsnooze", + "alerting:apm.transaction_duration/alerts/rule/runSoon", + "alerting:apm.transaction_duration/alerts/rule/scheduleBackfill", + "alerting:apm.transaction_duration/alerts/rule/deleteBackfill", + "alerting:apm.transaction_duration/alerts/rule/fillGaps", + "alerting:apm.anomaly/observability/rule/get", + "alerting:apm.anomaly/observability/rule/getRuleState", + "alerting:apm.anomaly/observability/rule/getAlertSummary", + "alerting:apm.anomaly/observability/rule/getExecutionLog", + "alerting:apm.anomaly/observability/rule/getActionErrorLog", + "alerting:apm.anomaly/observability/rule/find", + "alerting:apm.anomaly/observability/rule/getRuleExecutionKPI", + "alerting:apm.anomaly/observability/rule/getBackfill", + "alerting:apm.anomaly/observability/rule/findBackfill", + "alerting:apm.anomaly/observability/rule/findGaps", + "alerting:apm.anomaly/observability/rule/create", + "alerting:apm.anomaly/observability/rule/delete", + "alerting:apm.anomaly/observability/rule/update", + "alerting:apm.anomaly/observability/rule/updateApiKey", + "alerting:apm.anomaly/observability/rule/enable", + "alerting:apm.anomaly/observability/rule/disable", + "alerting:apm.anomaly/observability/rule/muteAll", + "alerting:apm.anomaly/observability/rule/unmuteAll", + "alerting:apm.anomaly/observability/rule/muteAlert", + "alerting:apm.anomaly/observability/rule/unmuteAlert", + "alerting:apm.anomaly/observability/rule/snooze", + "alerting:apm.anomaly/observability/rule/bulkEdit", + "alerting:apm.anomaly/observability/rule/bulkDelete", + "alerting:apm.anomaly/observability/rule/bulkEnable", + "alerting:apm.anomaly/observability/rule/bulkDisable", + "alerting:apm.anomaly/observability/rule/unsnooze", + "alerting:apm.anomaly/observability/rule/runSoon", + "alerting:apm.anomaly/observability/rule/scheduleBackfill", + "alerting:apm.anomaly/observability/rule/deleteBackfill", + "alerting:apm.anomaly/observability/rule/fillGaps", + "alerting:apm.anomaly/alerts/rule/get", + "alerting:apm.anomaly/alerts/rule/getRuleState", + "alerting:apm.anomaly/alerts/rule/getAlertSummary", + "alerting:apm.anomaly/alerts/rule/getExecutionLog", + "alerting:apm.anomaly/alerts/rule/getActionErrorLog", + "alerting:apm.anomaly/alerts/rule/find", + "alerting:apm.anomaly/alerts/rule/getRuleExecutionKPI", + "alerting:apm.anomaly/alerts/rule/getBackfill", + "alerting:apm.anomaly/alerts/rule/findBackfill", + "alerting:apm.anomaly/alerts/rule/findGaps", + "alerting:apm.anomaly/alerts/rule/create", + "alerting:apm.anomaly/alerts/rule/delete", + "alerting:apm.anomaly/alerts/rule/update", + "alerting:apm.anomaly/alerts/rule/updateApiKey", + "alerting:apm.anomaly/alerts/rule/enable", + "alerting:apm.anomaly/alerts/rule/disable", + "alerting:apm.anomaly/alerts/rule/muteAll", + "alerting:apm.anomaly/alerts/rule/unmuteAll", + "alerting:apm.anomaly/alerts/rule/muteAlert", + "alerting:apm.anomaly/alerts/rule/unmuteAlert", + "alerting:apm.anomaly/alerts/rule/snooze", + "alerting:apm.anomaly/alerts/rule/bulkEdit", + "alerting:apm.anomaly/alerts/rule/bulkDelete", + "alerting:apm.anomaly/alerts/rule/bulkEnable", + "alerting:apm.anomaly/alerts/rule/bulkDisable", + "alerting:apm.anomaly/alerts/rule/unsnooze", + "alerting:apm.anomaly/alerts/rule/runSoon", + "alerting:apm.anomaly/alerts/rule/scheduleBackfill", + "alerting:apm.anomaly/alerts/rule/deleteBackfill", + "alerting:apm.anomaly/alerts/rule/fillGaps", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/get", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/getRuleState", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/getAlertSummary", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/getExecutionLog", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/getActionErrorLog", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/find", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/getRuleExecutionKPI", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/getBackfill", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/findBackfill", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/findGaps", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/create", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/delete", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/update", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/updateApiKey", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/enable", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/disable", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/muteAll", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/unmuteAll", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/muteAlert", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/unmuteAlert", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/snooze", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/bulkEdit", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/bulkDelete", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/bulkEnable", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/bulkDisable", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/unsnooze", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/runSoon", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/scheduleBackfill", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/deleteBackfill", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/fillGaps", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/get", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/getRuleState", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/getAlertSummary", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/getExecutionLog", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/getActionErrorLog", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/find", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/getRuleExecutionKPI", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/getBackfill", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/findBackfill", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/findGaps", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/create", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/delete", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/update", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/updateApiKey", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/enable", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/disable", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/muteAll", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/unmuteAll", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/muteAlert", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/unmuteAlert", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/snooze", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/bulkEdit", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/bulkDelete", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/bulkEnable", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/bulkDisable", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/unsnooze", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/runSoon", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/scheduleBackfill", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/deleteBackfill", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/fillGaps", + "alerting:xpack.synthetics.alerts.tls/observability/rule/get", + "alerting:xpack.synthetics.alerts.tls/observability/rule/getRuleState", + "alerting:xpack.synthetics.alerts.tls/observability/rule/getAlertSummary", + "alerting:xpack.synthetics.alerts.tls/observability/rule/getExecutionLog", + "alerting:xpack.synthetics.alerts.tls/observability/rule/getActionErrorLog", + "alerting:xpack.synthetics.alerts.tls/observability/rule/find", + "alerting:xpack.synthetics.alerts.tls/observability/rule/getRuleExecutionKPI", + "alerting:xpack.synthetics.alerts.tls/observability/rule/getBackfill", + "alerting:xpack.synthetics.alerts.tls/observability/rule/findBackfill", + "alerting:xpack.synthetics.alerts.tls/observability/rule/findGaps", + "alerting:xpack.synthetics.alerts.tls/observability/rule/create", + "alerting:xpack.synthetics.alerts.tls/observability/rule/delete", + "alerting:xpack.synthetics.alerts.tls/observability/rule/update", + "alerting:xpack.synthetics.alerts.tls/observability/rule/updateApiKey", + "alerting:xpack.synthetics.alerts.tls/observability/rule/enable", + "alerting:xpack.synthetics.alerts.tls/observability/rule/disable", + "alerting:xpack.synthetics.alerts.tls/observability/rule/muteAll", + "alerting:xpack.synthetics.alerts.tls/observability/rule/unmuteAll", + "alerting:xpack.synthetics.alerts.tls/observability/rule/muteAlert", + "alerting:xpack.synthetics.alerts.tls/observability/rule/unmuteAlert", + "alerting:xpack.synthetics.alerts.tls/observability/rule/snooze", + "alerting:xpack.synthetics.alerts.tls/observability/rule/bulkEdit", + "alerting:xpack.synthetics.alerts.tls/observability/rule/bulkDelete", + "alerting:xpack.synthetics.alerts.tls/observability/rule/bulkEnable", + "alerting:xpack.synthetics.alerts.tls/observability/rule/bulkDisable", + "alerting:xpack.synthetics.alerts.tls/observability/rule/unsnooze", + "alerting:xpack.synthetics.alerts.tls/observability/rule/runSoon", + "alerting:xpack.synthetics.alerts.tls/observability/rule/scheduleBackfill", + "alerting:xpack.synthetics.alerts.tls/observability/rule/deleteBackfill", + "alerting:xpack.synthetics.alerts.tls/observability/rule/fillGaps", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/get", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/getRuleState", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/getAlertSummary", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/getExecutionLog", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/getActionErrorLog", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/find", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/getRuleExecutionKPI", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/getBackfill", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/findBackfill", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/findGaps", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/create", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/delete", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/update", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/updateApiKey", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/enable", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/disable", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/muteAll", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/unmuteAll", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/muteAlert", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/unmuteAlert", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/snooze", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/bulkEdit", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/bulkDelete", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/bulkEnable", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/bulkDisable", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/unsnooze", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/runSoon", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/scheduleBackfill", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/deleteBackfill", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/fillGaps", + "alerting:metrics.alert.threshold/observability/rule/get", + "alerting:metrics.alert.threshold/observability/rule/getRuleState", + "alerting:metrics.alert.threshold/observability/rule/getAlertSummary", + "alerting:metrics.alert.threshold/observability/rule/getExecutionLog", + "alerting:metrics.alert.threshold/observability/rule/getActionErrorLog", + "alerting:metrics.alert.threshold/observability/rule/find", + "alerting:metrics.alert.threshold/observability/rule/getRuleExecutionKPI", + "alerting:metrics.alert.threshold/observability/rule/getBackfill", + "alerting:metrics.alert.threshold/observability/rule/findBackfill", + "alerting:metrics.alert.threshold/observability/rule/findGaps", + "alerting:metrics.alert.threshold/observability/rule/create", + "alerting:metrics.alert.threshold/observability/rule/delete", + "alerting:metrics.alert.threshold/observability/rule/update", + "alerting:metrics.alert.threshold/observability/rule/updateApiKey", + "alerting:metrics.alert.threshold/observability/rule/enable", + "alerting:metrics.alert.threshold/observability/rule/disable", + "alerting:metrics.alert.threshold/observability/rule/muteAll", + "alerting:metrics.alert.threshold/observability/rule/unmuteAll", + "alerting:metrics.alert.threshold/observability/rule/muteAlert", + "alerting:metrics.alert.threshold/observability/rule/unmuteAlert", + "alerting:metrics.alert.threshold/observability/rule/snooze", + "alerting:metrics.alert.threshold/observability/rule/bulkEdit", + "alerting:metrics.alert.threshold/observability/rule/bulkDelete", + "alerting:metrics.alert.threshold/observability/rule/bulkEnable", + "alerting:metrics.alert.threshold/observability/rule/bulkDisable", + "alerting:metrics.alert.threshold/observability/rule/unsnooze", + "alerting:metrics.alert.threshold/observability/rule/runSoon", + "alerting:metrics.alert.threshold/observability/rule/scheduleBackfill", + "alerting:metrics.alert.threshold/observability/rule/deleteBackfill", + "alerting:metrics.alert.threshold/observability/rule/fillGaps", + "alerting:metrics.alert.threshold/alerts/rule/get", + "alerting:metrics.alert.threshold/alerts/rule/getRuleState", + "alerting:metrics.alert.threshold/alerts/rule/getAlertSummary", + "alerting:metrics.alert.threshold/alerts/rule/getExecutionLog", + "alerting:metrics.alert.threshold/alerts/rule/getActionErrorLog", + "alerting:metrics.alert.threshold/alerts/rule/find", + "alerting:metrics.alert.threshold/alerts/rule/getRuleExecutionKPI", + "alerting:metrics.alert.threshold/alerts/rule/getBackfill", + "alerting:metrics.alert.threshold/alerts/rule/findBackfill", + "alerting:metrics.alert.threshold/alerts/rule/findGaps", + "alerting:metrics.alert.threshold/alerts/rule/create", + "alerting:metrics.alert.threshold/alerts/rule/delete", + "alerting:metrics.alert.threshold/alerts/rule/update", + "alerting:metrics.alert.threshold/alerts/rule/updateApiKey", + "alerting:metrics.alert.threshold/alerts/rule/enable", + "alerting:metrics.alert.threshold/alerts/rule/disable", + "alerting:metrics.alert.threshold/alerts/rule/muteAll", + "alerting:metrics.alert.threshold/alerts/rule/unmuteAll", + "alerting:metrics.alert.threshold/alerts/rule/muteAlert", + "alerting:metrics.alert.threshold/alerts/rule/unmuteAlert", + "alerting:metrics.alert.threshold/alerts/rule/snooze", + "alerting:metrics.alert.threshold/alerts/rule/bulkEdit", + "alerting:metrics.alert.threshold/alerts/rule/bulkDelete", + "alerting:metrics.alert.threshold/alerts/rule/bulkEnable", + "alerting:metrics.alert.threshold/alerts/rule/bulkDisable", + "alerting:metrics.alert.threshold/alerts/rule/unsnooze", + "alerting:metrics.alert.threshold/alerts/rule/runSoon", + "alerting:metrics.alert.threshold/alerts/rule/scheduleBackfill", + "alerting:metrics.alert.threshold/alerts/rule/deleteBackfill", + "alerting:metrics.alert.threshold/alerts/rule/fillGaps", + "alerting:metrics.alert.inventory.threshold/observability/rule/get", + "alerting:metrics.alert.inventory.threshold/observability/rule/getRuleState", + "alerting:metrics.alert.inventory.threshold/observability/rule/getAlertSummary", + "alerting:metrics.alert.inventory.threshold/observability/rule/getExecutionLog", + "alerting:metrics.alert.inventory.threshold/observability/rule/getActionErrorLog", + "alerting:metrics.alert.inventory.threshold/observability/rule/find", + "alerting:metrics.alert.inventory.threshold/observability/rule/getRuleExecutionKPI", + "alerting:metrics.alert.inventory.threshold/observability/rule/getBackfill", + "alerting:metrics.alert.inventory.threshold/observability/rule/findBackfill", + "alerting:metrics.alert.inventory.threshold/observability/rule/findGaps", + "alerting:metrics.alert.inventory.threshold/observability/rule/create", + "alerting:metrics.alert.inventory.threshold/observability/rule/delete", + "alerting:metrics.alert.inventory.threshold/observability/rule/update", + "alerting:metrics.alert.inventory.threshold/observability/rule/updateApiKey", + "alerting:metrics.alert.inventory.threshold/observability/rule/enable", + "alerting:metrics.alert.inventory.threshold/observability/rule/disable", + "alerting:metrics.alert.inventory.threshold/observability/rule/muteAll", + "alerting:metrics.alert.inventory.threshold/observability/rule/unmuteAll", + "alerting:metrics.alert.inventory.threshold/observability/rule/muteAlert", + "alerting:metrics.alert.inventory.threshold/observability/rule/unmuteAlert", + "alerting:metrics.alert.inventory.threshold/observability/rule/snooze", + "alerting:metrics.alert.inventory.threshold/observability/rule/bulkEdit", + "alerting:metrics.alert.inventory.threshold/observability/rule/bulkDelete", + "alerting:metrics.alert.inventory.threshold/observability/rule/bulkEnable", + "alerting:metrics.alert.inventory.threshold/observability/rule/bulkDisable", + "alerting:metrics.alert.inventory.threshold/observability/rule/unsnooze", + "alerting:metrics.alert.inventory.threshold/observability/rule/runSoon", + "alerting:metrics.alert.inventory.threshold/observability/rule/scheduleBackfill", + "alerting:metrics.alert.inventory.threshold/observability/rule/deleteBackfill", + "alerting:metrics.alert.inventory.threshold/observability/rule/fillGaps", + "alerting:metrics.alert.inventory.threshold/alerts/rule/get", + "alerting:metrics.alert.inventory.threshold/alerts/rule/getRuleState", + "alerting:metrics.alert.inventory.threshold/alerts/rule/getAlertSummary", + "alerting:metrics.alert.inventory.threshold/alerts/rule/getExecutionLog", + "alerting:metrics.alert.inventory.threshold/alerts/rule/getActionErrorLog", + "alerting:metrics.alert.inventory.threshold/alerts/rule/find", + "alerting:metrics.alert.inventory.threshold/alerts/rule/getRuleExecutionKPI", + "alerting:metrics.alert.inventory.threshold/alerts/rule/getBackfill", + "alerting:metrics.alert.inventory.threshold/alerts/rule/findBackfill", + "alerting:metrics.alert.inventory.threshold/alerts/rule/findGaps", + "alerting:metrics.alert.inventory.threshold/alerts/rule/create", + "alerting:metrics.alert.inventory.threshold/alerts/rule/delete", + "alerting:metrics.alert.inventory.threshold/alerts/rule/update", + "alerting:metrics.alert.inventory.threshold/alerts/rule/updateApiKey", + "alerting:metrics.alert.inventory.threshold/alerts/rule/enable", + "alerting:metrics.alert.inventory.threshold/alerts/rule/disable", + "alerting:metrics.alert.inventory.threshold/alerts/rule/muteAll", + "alerting:metrics.alert.inventory.threshold/alerts/rule/unmuteAll", + "alerting:metrics.alert.inventory.threshold/alerts/rule/muteAlert", + "alerting:metrics.alert.inventory.threshold/alerts/rule/unmuteAlert", + "alerting:metrics.alert.inventory.threshold/alerts/rule/snooze", + "alerting:metrics.alert.inventory.threshold/alerts/rule/bulkEdit", + "alerting:metrics.alert.inventory.threshold/alerts/rule/bulkDelete", + "alerting:metrics.alert.inventory.threshold/alerts/rule/bulkEnable", + "alerting:metrics.alert.inventory.threshold/alerts/rule/bulkDisable", + "alerting:metrics.alert.inventory.threshold/alerts/rule/unsnooze", + "alerting:metrics.alert.inventory.threshold/alerts/rule/runSoon", + "alerting:metrics.alert.inventory.threshold/alerts/rule/scheduleBackfill", + "alerting:metrics.alert.inventory.threshold/alerts/rule/deleteBackfill", + "alerting:metrics.alert.inventory.threshold/alerts/rule/fillGaps", + "alerting:xpack.uptime.alerts.tls/observability/rule/get", + "alerting:xpack.uptime.alerts.tls/observability/rule/getRuleState", + "alerting:xpack.uptime.alerts.tls/observability/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.tls/observability/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.tls/observability/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.tls/observability/rule/find", + "alerting:xpack.uptime.alerts.tls/observability/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.tls/observability/rule/getBackfill", + "alerting:xpack.uptime.alerts.tls/observability/rule/findBackfill", + "alerting:xpack.uptime.alerts.tls/observability/rule/findGaps", + "alerting:xpack.uptime.alerts.tls/observability/rule/create", + "alerting:xpack.uptime.alerts.tls/observability/rule/delete", + "alerting:xpack.uptime.alerts.tls/observability/rule/update", + "alerting:xpack.uptime.alerts.tls/observability/rule/updateApiKey", + "alerting:xpack.uptime.alerts.tls/observability/rule/enable", + "alerting:xpack.uptime.alerts.tls/observability/rule/disable", + "alerting:xpack.uptime.alerts.tls/observability/rule/muteAll", + "alerting:xpack.uptime.alerts.tls/observability/rule/unmuteAll", + "alerting:xpack.uptime.alerts.tls/observability/rule/muteAlert", + "alerting:xpack.uptime.alerts.tls/observability/rule/unmuteAlert", + "alerting:xpack.uptime.alerts.tls/observability/rule/snooze", + "alerting:xpack.uptime.alerts.tls/observability/rule/bulkEdit", + "alerting:xpack.uptime.alerts.tls/observability/rule/bulkDelete", + "alerting:xpack.uptime.alerts.tls/observability/rule/bulkEnable", + "alerting:xpack.uptime.alerts.tls/observability/rule/bulkDisable", + "alerting:xpack.uptime.alerts.tls/observability/rule/unsnooze", + "alerting:xpack.uptime.alerts.tls/observability/rule/runSoon", + "alerting:xpack.uptime.alerts.tls/observability/rule/scheduleBackfill", + "alerting:xpack.uptime.alerts.tls/observability/rule/deleteBackfill", + "alerting:xpack.uptime.alerts.tls/observability/rule/fillGaps", + "alerting:xpack.uptime.alerts.tls/alerts/rule/get", + "alerting:xpack.uptime.alerts.tls/alerts/rule/getRuleState", + "alerting:xpack.uptime.alerts.tls/alerts/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.tls/alerts/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.tls/alerts/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.tls/alerts/rule/find", + "alerting:xpack.uptime.alerts.tls/alerts/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.tls/alerts/rule/getBackfill", + "alerting:xpack.uptime.alerts.tls/alerts/rule/findBackfill", + "alerting:xpack.uptime.alerts.tls/alerts/rule/findGaps", + "alerting:xpack.uptime.alerts.tls/alerts/rule/create", + "alerting:xpack.uptime.alerts.tls/alerts/rule/delete", + "alerting:xpack.uptime.alerts.tls/alerts/rule/update", + "alerting:xpack.uptime.alerts.tls/alerts/rule/updateApiKey", + "alerting:xpack.uptime.alerts.tls/alerts/rule/enable", + "alerting:xpack.uptime.alerts.tls/alerts/rule/disable", + "alerting:xpack.uptime.alerts.tls/alerts/rule/muteAll", + "alerting:xpack.uptime.alerts.tls/alerts/rule/unmuteAll", + "alerting:xpack.uptime.alerts.tls/alerts/rule/muteAlert", + "alerting:xpack.uptime.alerts.tls/alerts/rule/unmuteAlert", + "alerting:xpack.uptime.alerts.tls/alerts/rule/snooze", + "alerting:xpack.uptime.alerts.tls/alerts/rule/bulkEdit", + "alerting:xpack.uptime.alerts.tls/alerts/rule/bulkDelete", + "alerting:xpack.uptime.alerts.tls/alerts/rule/bulkEnable", + "alerting:xpack.uptime.alerts.tls/alerts/rule/bulkDisable", + "alerting:xpack.uptime.alerts.tls/alerts/rule/unsnooze", + "alerting:xpack.uptime.alerts.tls/alerts/rule/runSoon", + "alerting:xpack.uptime.alerts.tls/alerts/rule/scheduleBackfill", + "alerting:xpack.uptime.alerts.tls/alerts/rule/deleteBackfill", + "alerting:xpack.uptime.alerts.tls/alerts/rule/fillGaps", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/get", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/getRuleState", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/find", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/getBackfill", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/findBackfill", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/findGaps", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/create", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/delete", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/update", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/updateApiKey", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/enable", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/disable", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/muteAll", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/unmuteAll", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/muteAlert", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/unmuteAlert", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/snooze", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/bulkEdit", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/bulkDelete", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/bulkEnable", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/bulkDisable", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/unsnooze", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/runSoon", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/scheduleBackfill", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/deleteBackfill", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/fillGaps", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/get", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/getRuleState", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/find", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/getBackfill", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/findBackfill", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/findGaps", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/create", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/delete", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/update", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/updateApiKey", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/enable", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/disable", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/muteAll", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/unmuteAll", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/muteAlert", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/unmuteAlert", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/snooze", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/bulkEdit", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/bulkDelete", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/bulkEnable", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/bulkDisable", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/unsnooze", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/runSoon", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/scheduleBackfill", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/deleteBackfill", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/fillGaps", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/get", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/getRuleState", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/find", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/getBackfill", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/findBackfill", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/findGaps", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/create", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/delete", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/update", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/updateApiKey", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/enable", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/disable", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/muteAll", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/unmuteAll", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/muteAlert", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/unmuteAlert", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/snooze", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/bulkEdit", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/bulkDelete", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/bulkEnable", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/bulkDisable", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/unsnooze", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/runSoon", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/scheduleBackfill", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/deleteBackfill", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/fillGaps", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/get", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/getRuleState", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/find", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/getBackfill", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/findBackfill", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/findGaps", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/create", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/delete", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/update", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/updateApiKey", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/enable", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/disable", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/muteAll", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/unmuteAll", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/muteAlert", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/unmuteAlert", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/snooze", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/bulkEdit", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/bulkDelete", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/bulkEnable", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/bulkDisable", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/unsnooze", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/runSoon", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/scheduleBackfill", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/deleteBackfill", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/fillGaps", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/get", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/getRuleState", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/find", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/getBackfill", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/findBackfill", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/findGaps", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/create", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/delete", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/update", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/updateApiKey", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/enable", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/disable", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/muteAll", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/unmuteAll", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/muteAlert", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/unmuteAlert", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/snooze", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/bulkEdit", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/bulkDelete", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/bulkEnable", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/bulkDisable", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/unsnooze", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/runSoon", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/scheduleBackfill", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/deleteBackfill", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/fillGaps", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/get", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/getRuleState", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/find", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/getBackfill", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/findBackfill", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/findGaps", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/create", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/delete", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/update", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/updateApiKey", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/enable", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/disable", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/muteAll", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/unmuteAll", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/muteAlert", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/unmuteAlert", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/snooze", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/bulkEdit", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/bulkDelete", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/bulkEnable", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/bulkDisable", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/unsnooze", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/runSoon", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/scheduleBackfill", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/deleteBackfill", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/fillGaps", + "alerting:logs.alert.document.count/observability/rule/get", + "alerting:logs.alert.document.count/observability/rule/getRuleState", + "alerting:logs.alert.document.count/observability/rule/getAlertSummary", + "alerting:logs.alert.document.count/observability/rule/getExecutionLog", + "alerting:logs.alert.document.count/observability/rule/getActionErrorLog", + "alerting:logs.alert.document.count/observability/rule/find", + "alerting:logs.alert.document.count/observability/rule/getRuleExecutionKPI", + "alerting:logs.alert.document.count/observability/rule/getBackfill", + "alerting:logs.alert.document.count/observability/rule/findBackfill", + "alerting:logs.alert.document.count/observability/rule/findGaps", + "alerting:logs.alert.document.count/observability/rule/create", + "alerting:logs.alert.document.count/observability/rule/delete", + "alerting:logs.alert.document.count/observability/rule/update", + "alerting:logs.alert.document.count/observability/rule/updateApiKey", + "alerting:logs.alert.document.count/observability/rule/enable", + "alerting:logs.alert.document.count/observability/rule/disable", + "alerting:logs.alert.document.count/observability/rule/muteAll", + "alerting:logs.alert.document.count/observability/rule/unmuteAll", + "alerting:logs.alert.document.count/observability/rule/muteAlert", + "alerting:logs.alert.document.count/observability/rule/unmuteAlert", + "alerting:logs.alert.document.count/observability/rule/snooze", + "alerting:logs.alert.document.count/observability/rule/bulkEdit", + "alerting:logs.alert.document.count/observability/rule/bulkDelete", + "alerting:logs.alert.document.count/observability/rule/bulkEnable", + "alerting:logs.alert.document.count/observability/rule/bulkDisable", + "alerting:logs.alert.document.count/observability/rule/unsnooze", + "alerting:logs.alert.document.count/observability/rule/runSoon", + "alerting:logs.alert.document.count/observability/rule/scheduleBackfill", + "alerting:logs.alert.document.count/observability/rule/deleteBackfill", + "alerting:logs.alert.document.count/observability/rule/fillGaps", + "alerting:logs.alert.document.count/alerts/rule/get", + "alerting:logs.alert.document.count/alerts/rule/getRuleState", + "alerting:logs.alert.document.count/alerts/rule/getAlertSummary", + "alerting:logs.alert.document.count/alerts/rule/getExecutionLog", + "alerting:logs.alert.document.count/alerts/rule/getActionErrorLog", + "alerting:logs.alert.document.count/alerts/rule/find", + "alerting:logs.alert.document.count/alerts/rule/getRuleExecutionKPI", + "alerting:logs.alert.document.count/alerts/rule/getBackfill", + "alerting:logs.alert.document.count/alerts/rule/findBackfill", + "alerting:logs.alert.document.count/alerts/rule/findGaps", + "alerting:logs.alert.document.count/alerts/rule/create", + "alerting:logs.alert.document.count/alerts/rule/delete", + "alerting:logs.alert.document.count/alerts/rule/update", + "alerting:logs.alert.document.count/alerts/rule/updateApiKey", + "alerting:logs.alert.document.count/alerts/rule/enable", + "alerting:logs.alert.document.count/alerts/rule/disable", + "alerting:logs.alert.document.count/alerts/rule/muteAll", + "alerting:logs.alert.document.count/alerts/rule/unmuteAll", + "alerting:logs.alert.document.count/alerts/rule/muteAlert", + "alerting:logs.alert.document.count/alerts/rule/unmuteAlert", + "alerting:logs.alert.document.count/alerts/rule/snooze", + "alerting:logs.alert.document.count/alerts/rule/bulkEdit", + "alerting:logs.alert.document.count/alerts/rule/bulkDelete", + "alerting:logs.alert.document.count/alerts/rule/bulkEnable", + "alerting:logs.alert.document.count/alerts/rule/bulkDisable", + "alerting:logs.alert.document.count/alerts/rule/unsnooze", + "alerting:logs.alert.document.count/alerts/rule/runSoon", + "alerting:logs.alert.document.count/alerts/rule/scheduleBackfill", + "alerting:logs.alert.document.count/alerts/rule/deleteBackfill", + "alerting:logs.alert.document.count/alerts/rule/fillGaps", + "alerting:slo.rules.burnRate/observability/rule/get", + "alerting:slo.rules.burnRate/observability/rule/getRuleState", + "alerting:slo.rules.burnRate/observability/rule/getAlertSummary", + "alerting:slo.rules.burnRate/observability/rule/getExecutionLog", + "alerting:slo.rules.burnRate/observability/rule/getActionErrorLog", + "alerting:slo.rules.burnRate/observability/rule/find", + "alerting:slo.rules.burnRate/observability/rule/getRuleExecutionKPI", + "alerting:slo.rules.burnRate/observability/rule/getBackfill", + "alerting:slo.rules.burnRate/observability/rule/findBackfill", + "alerting:slo.rules.burnRate/observability/rule/findGaps", + "alerting:slo.rules.burnRate/observability/rule/create", + "alerting:slo.rules.burnRate/observability/rule/delete", + "alerting:slo.rules.burnRate/observability/rule/update", + "alerting:slo.rules.burnRate/observability/rule/updateApiKey", + "alerting:slo.rules.burnRate/observability/rule/enable", + "alerting:slo.rules.burnRate/observability/rule/disable", + "alerting:slo.rules.burnRate/observability/rule/muteAll", + "alerting:slo.rules.burnRate/observability/rule/unmuteAll", + "alerting:slo.rules.burnRate/observability/rule/muteAlert", + "alerting:slo.rules.burnRate/observability/rule/unmuteAlert", + "alerting:slo.rules.burnRate/observability/rule/snooze", + "alerting:slo.rules.burnRate/observability/rule/bulkEdit", + "alerting:slo.rules.burnRate/observability/rule/bulkDelete", + "alerting:slo.rules.burnRate/observability/rule/bulkEnable", + "alerting:slo.rules.burnRate/observability/rule/bulkDisable", + "alerting:slo.rules.burnRate/observability/rule/unsnooze", + "alerting:slo.rules.burnRate/observability/rule/runSoon", + "alerting:slo.rules.burnRate/observability/rule/scheduleBackfill", + "alerting:slo.rules.burnRate/observability/rule/deleteBackfill", + "alerting:slo.rules.burnRate/observability/rule/fillGaps", + "alerting:slo.rules.burnRate/alerts/rule/get", + "alerting:slo.rules.burnRate/alerts/rule/getRuleState", + "alerting:slo.rules.burnRate/alerts/rule/getAlertSummary", + "alerting:slo.rules.burnRate/alerts/rule/getExecutionLog", + "alerting:slo.rules.burnRate/alerts/rule/getActionErrorLog", + "alerting:slo.rules.burnRate/alerts/rule/find", + "alerting:slo.rules.burnRate/alerts/rule/getRuleExecutionKPI", + "alerting:slo.rules.burnRate/alerts/rule/getBackfill", + "alerting:slo.rules.burnRate/alerts/rule/findBackfill", + "alerting:slo.rules.burnRate/alerts/rule/findGaps", + "alerting:slo.rules.burnRate/alerts/rule/create", + "alerting:slo.rules.burnRate/alerts/rule/delete", + "alerting:slo.rules.burnRate/alerts/rule/update", + "alerting:slo.rules.burnRate/alerts/rule/updateApiKey", + "alerting:slo.rules.burnRate/alerts/rule/enable", + "alerting:slo.rules.burnRate/alerts/rule/disable", + "alerting:slo.rules.burnRate/alerts/rule/muteAll", + "alerting:slo.rules.burnRate/alerts/rule/unmuteAll", + "alerting:slo.rules.burnRate/alerts/rule/muteAlert", + "alerting:slo.rules.burnRate/alerts/rule/unmuteAlert", + "alerting:slo.rules.burnRate/alerts/rule/snooze", + "alerting:slo.rules.burnRate/alerts/rule/bulkEdit", + "alerting:slo.rules.burnRate/alerts/rule/bulkDelete", + "alerting:slo.rules.burnRate/alerts/rule/bulkEnable", + "alerting:slo.rules.burnRate/alerts/rule/bulkDisable", + "alerting:slo.rules.burnRate/alerts/rule/unsnooze", + "alerting:slo.rules.burnRate/alerts/rule/runSoon", + "alerting:slo.rules.burnRate/alerts/rule/scheduleBackfill", + "alerting:slo.rules.burnRate/alerts/rule/deleteBackfill", + "alerting:slo.rules.burnRate/alerts/rule/fillGaps", + "alerting:observability.rules.custom_threshold/observability/rule/get", + "alerting:observability.rules.custom_threshold/observability/rule/getRuleState", + "alerting:observability.rules.custom_threshold/observability/rule/getAlertSummary", + "alerting:observability.rules.custom_threshold/observability/rule/getExecutionLog", + "alerting:observability.rules.custom_threshold/observability/rule/getActionErrorLog", + "alerting:observability.rules.custom_threshold/observability/rule/find", + "alerting:observability.rules.custom_threshold/observability/rule/getRuleExecutionKPI", + "alerting:observability.rules.custom_threshold/observability/rule/getBackfill", + "alerting:observability.rules.custom_threshold/observability/rule/findBackfill", + "alerting:observability.rules.custom_threshold/observability/rule/findGaps", + "alerting:observability.rules.custom_threshold/observability/rule/create", + "alerting:observability.rules.custom_threshold/observability/rule/delete", + "alerting:observability.rules.custom_threshold/observability/rule/update", + "alerting:observability.rules.custom_threshold/observability/rule/updateApiKey", + "alerting:observability.rules.custom_threshold/observability/rule/enable", + "alerting:observability.rules.custom_threshold/observability/rule/disable", + "alerting:observability.rules.custom_threshold/observability/rule/muteAll", + "alerting:observability.rules.custom_threshold/observability/rule/unmuteAll", + "alerting:observability.rules.custom_threshold/observability/rule/muteAlert", + "alerting:observability.rules.custom_threshold/observability/rule/unmuteAlert", + "alerting:observability.rules.custom_threshold/observability/rule/snooze", + "alerting:observability.rules.custom_threshold/observability/rule/bulkEdit", + "alerting:observability.rules.custom_threshold/observability/rule/bulkDelete", + "alerting:observability.rules.custom_threshold/observability/rule/bulkEnable", + "alerting:observability.rules.custom_threshold/observability/rule/bulkDisable", + "alerting:observability.rules.custom_threshold/observability/rule/unsnooze", + "alerting:observability.rules.custom_threshold/observability/rule/runSoon", + "alerting:observability.rules.custom_threshold/observability/rule/scheduleBackfill", + "alerting:observability.rules.custom_threshold/observability/rule/deleteBackfill", + "alerting:observability.rules.custom_threshold/observability/rule/fillGaps", + "alerting:observability.rules.custom_threshold/alerts/rule/get", + "alerting:observability.rules.custom_threshold/alerts/rule/getRuleState", + "alerting:observability.rules.custom_threshold/alerts/rule/getAlertSummary", + "alerting:observability.rules.custom_threshold/alerts/rule/getExecutionLog", + "alerting:observability.rules.custom_threshold/alerts/rule/getActionErrorLog", + "alerting:observability.rules.custom_threshold/alerts/rule/find", + "alerting:observability.rules.custom_threshold/alerts/rule/getRuleExecutionKPI", + "alerting:observability.rules.custom_threshold/alerts/rule/getBackfill", + "alerting:observability.rules.custom_threshold/alerts/rule/findBackfill", + "alerting:observability.rules.custom_threshold/alerts/rule/findGaps", + "alerting:observability.rules.custom_threshold/alerts/rule/create", + "alerting:observability.rules.custom_threshold/alerts/rule/delete", + "alerting:observability.rules.custom_threshold/alerts/rule/update", + "alerting:observability.rules.custom_threshold/alerts/rule/updateApiKey", + "alerting:observability.rules.custom_threshold/alerts/rule/enable", + "alerting:observability.rules.custom_threshold/alerts/rule/disable", + "alerting:observability.rules.custom_threshold/alerts/rule/muteAll", + "alerting:observability.rules.custom_threshold/alerts/rule/unmuteAll", + "alerting:observability.rules.custom_threshold/alerts/rule/muteAlert", + "alerting:observability.rules.custom_threshold/alerts/rule/unmuteAlert", + "alerting:observability.rules.custom_threshold/alerts/rule/snooze", + "alerting:observability.rules.custom_threshold/alerts/rule/bulkEdit", + "alerting:observability.rules.custom_threshold/alerts/rule/bulkDelete", + "alerting:observability.rules.custom_threshold/alerts/rule/bulkEnable", + "alerting:observability.rules.custom_threshold/alerts/rule/bulkDisable", + "alerting:observability.rules.custom_threshold/alerts/rule/unsnooze", + "alerting:observability.rules.custom_threshold/alerts/rule/runSoon", + "alerting:observability.rules.custom_threshold/alerts/rule/scheduleBackfill", + "alerting:observability.rules.custom_threshold/alerts/rule/deleteBackfill", + "alerting:observability.rules.custom_threshold/alerts/rule/fillGaps", + "alerting:.es-query/observability/rule/get", + "alerting:.es-query/observability/rule/getRuleState", + "alerting:.es-query/observability/rule/getAlertSummary", + "alerting:.es-query/observability/rule/getExecutionLog", + "alerting:.es-query/observability/rule/getActionErrorLog", + "alerting:.es-query/observability/rule/find", + "alerting:.es-query/observability/rule/getRuleExecutionKPI", + "alerting:.es-query/observability/rule/getBackfill", + "alerting:.es-query/observability/rule/findBackfill", + "alerting:.es-query/observability/rule/findGaps", + "alerting:.es-query/observability/rule/create", + "alerting:.es-query/observability/rule/delete", + "alerting:.es-query/observability/rule/update", + "alerting:.es-query/observability/rule/updateApiKey", + "alerting:.es-query/observability/rule/enable", + "alerting:.es-query/observability/rule/disable", + "alerting:.es-query/observability/rule/muteAll", + "alerting:.es-query/observability/rule/unmuteAll", + "alerting:.es-query/observability/rule/muteAlert", + "alerting:.es-query/observability/rule/unmuteAlert", + "alerting:.es-query/observability/rule/snooze", + "alerting:.es-query/observability/rule/bulkEdit", + "alerting:.es-query/observability/rule/bulkDelete", + "alerting:.es-query/observability/rule/bulkEnable", + "alerting:.es-query/observability/rule/bulkDisable", + "alerting:.es-query/observability/rule/unsnooze", + "alerting:.es-query/observability/rule/runSoon", + "alerting:.es-query/observability/rule/scheduleBackfill", + "alerting:.es-query/observability/rule/deleteBackfill", + "alerting:.es-query/observability/rule/fillGaps", + "alerting:.es-query/alerts/rule/get", + "alerting:.es-query/alerts/rule/getRuleState", + "alerting:.es-query/alerts/rule/getAlertSummary", + "alerting:.es-query/alerts/rule/getExecutionLog", + "alerting:.es-query/alerts/rule/getActionErrorLog", + "alerting:.es-query/alerts/rule/find", + "alerting:.es-query/alerts/rule/getRuleExecutionKPI", + "alerting:.es-query/alerts/rule/getBackfill", + "alerting:.es-query/alerts/rule/findBackfill", + "alerting:.es-query/alerts/rule/findGaps", + "alerting:.es-query/alerts/rule/create", + "alerting:.es-query/alerts/rule/delete", + "alerting:.es-query/alerts/rule/update", + "alerting:.es-query/alerts/rule/updateApiKey", + "alerting:.es-query/alerts/rule/enable", + "alerting:.es-query/alerts/rule/disable", + "alerting:.es-query/alerts/rule/muteAll", + "alerting:.es-query/alerts/rule/unmuteAll", + "alerting:.es-query/alerts/rule/muteAlert", + "alerting:.es-query/alerts/rule/unmuteAlert", + "alerting:.es-query/alerts/rule/snooze", + "alerting:.es-query/alerts/rule/bulkEdit", + "alerting:.es-query/alerts/rule/bulkDelete", + "alerting:.es-query/alerts/rule/bulkEnable", + "alerting:.es-query/alerts/rule/bulkDisable", + "alerting:.es-query/alerts/rule/unsnooze", + "alerting:.es-query/alerts/rule/runSoon", + "alerting:.es-query/alerts/rule/scheduleBackfill", + "alerting:.es-query/alerts/rule/deleteBackfill", + "alerting:.es-query/alerts/rule/fillGaps", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/get", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/getRuleState", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/getAlertSummary", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/getExecutionLog", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/getActionErrorLog", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/find", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/getRuleExecutionKPI", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/getBackfill", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/findBackfill", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/findGaps", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/create", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/delete", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/update", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/updateApiKey", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/enable", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/disable", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/muteAll", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/unmuteAll", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/muteAlert", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/unmuteAlert", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/snooze", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/bulkEdit", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/bulkDelete", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/bulkEnable", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/bulkDisable", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/unsnooze", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/runSoon", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/scheduleBackfill", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/deleteBackfill", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/fillGaps", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/get", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/getRuleState", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/getAlertSummary", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/getExecutionLog", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/getActionErrorLog", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/find", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/getRuleExecutionKPI", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/getBackfill", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/findBackfill", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/findGaps", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/create", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/delete", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/update", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/updateApiKey", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/enable", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/disable", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/muteAll", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/unmuteAll", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/muteAlert", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/unmuteAlert", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/snooze", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/bulkEdit", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/bulkDelete", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/bulkEnable", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/bulkDisable", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/unsnooze", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/runSoon", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/scheduleBackfill", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/deleteBackfill", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/fillGaps", + "alerting:apm.error_rate/observability/alert/get", + "alerting:apm.error_rate/observability/alert/find", + "alerting:apm.error_rate/observability/alert/getAuthorizedAlertsIndices", + "alerting:apm.error_rate/observability/alert/getAlertSummary", + "alerting:apm.error_rate/observability/alert/update", + "alerting:apm.error_rate/alerts/alert/get", + "alerting:apm.error_rate/alerts/alert/find", + "alerting:apm.error_rate/alerts/alert/getAuthorizedAlertsIndices", + "alerting:apm.error_rate/alerts/alert/getAlertSummary", + "alerting:apm.error_rate/alerts/alert/update", + "alerting:apm.transaction_error_rate/observability/alert/get", + "alerting:apm.transaction_error_rate/observability/alert/find", + "alerting:apm.transaction_error_rate/observability/alert/getAuthorizedAlertsIndices", + "alerting:apm.transaction_error_rate/observability/alert/getAlertSummary", + "alerting:apm.transaction_error_rate/observability/alert/update", + "alerting:apm.transaction_error_rate/alerts/alert/get", + "alerting:apm.transaction_error_rate/alerts/alert/find", + "alerting:apm.transaction_error_rate/alerts/alert/getAuthorizedAlertsIndices", + "alerting:apm.transaction_error_rate/alerts/alert/getAlertSummary", + "alerting:apm.transaction_error_rate/alerts/alert/update", + "alerting:apm.transaction_duration/observability/alert/get", + "alerting:apm.transaction_duration/observability/alert/find", + "alerting:apm.transaction_duration/observability/alert/getAuthorizedAlertsIndices", + "alerting:apm.transaction_duration/observability/alert/getAlertSummary", + "alerting:apm.transaction_duration/observability/alert/update", + "alerting:apm.transaction_duration/alerts/alert/get", + "alerting:apm.transaction_duration/alerts/alert/find", + "alerting:apm.transaction_duration/alerts/alert/getAuthorizedAlertsIndices", + "alerting:apm.transaction_duration/alerts/alert/getAlertSummary", + "alerting:apm.transaction_duration/alerts/alert/update", + "alerting:apm.anomaly/observability/alert/get", + "alerting:apm.anomaly/observability/alert/find", + "alerting:apm.anomaly/observability/alert/getAuthorizedAlertsIndices", + "alerting:apm.anomaly/observability/alert/getAlertSummary", + "alerting:apm.anomaly/observability/alert/update", + "alerting:apm.anomaly/alerts/alert/get", + "alerting:apm.anomaly/alerts/alert/find", + "alerting:apm.anomaly/alerts/alert/getAuthorizedAlertsIndices", + "alerting:apm.anomaly/alerts/alert/getAlertSummary", + "alerting:apm.anomaly/alerts/alert/update", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/alert/get", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/alert/find", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/alert/getAuthorizedAlertsIndices", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/alert/getAlertSummary", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/alert/update", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/alert/get", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/alert/find", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/alert/getAuthorizedAlertsIndices", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/alert/getAlertSummary", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/alert/update", + "alerting:xpack.synthetics.alerts.tls/observability/alert/get", + "alerting:xpack.synthetics.alerts.tls/observability/alert/find", + "alerting:xpack.synthetics.alerts.tls/observability/alert/getAuthorizedAlertsIndices", + "alerting:xpack.synthetics.alerts.tls/observability/alert/getAlertSummary", + "alerting:xpack.synthetics.alerts.tls/observability/alert/update", + "alerting:xpack.synthetics.alerts.tls/alerts/alert/get", + "alerting:xpack.synthetics.alerts.tls/alerts/alert/find", + "alerting:xpack.synthetics.alerts.tls/alerts/alert/getAuthorizedAlertsIndices", + "alerting:xpack.synthetics.alerts.tls/alerts/alert/getAlertSummary", + "alerting:xpack.synthetics.alerts.tls/alerts/alert/update", + "alerting:metrics.alert.threshold/observability/alert/get", + "alerting:metrics.alert.threshold/observability/alert/find", + "alerting:metrics.alert.threshold/observability/alert/getAuthorizedAlertsIndices", + "alerting:metrics.alert.threshold/observability/alert/getAlertSummary", + "alerting:metrics.alert.threshold/observability/alert/update", + "alerting:metrics.alert.threshold/alerts/alert/get", + "alerting:metrics.alert.threshold/alerts/alert/find", + "alerting:metrics.alert.threshold/alerts/alert/getAuthorizedAlertsIndices", + "alerting:metrics.alert.threshold/alerts/alert/getAlertSummary", + "alerting:metrics.alert.threshold/alerts/alert/update", + "alerting:metrics.alert.inventory.threshold/observability/alert/get", + "alerting:metrics.alert.inventory.threshold/observability/alert/find", + "alerting:metrics.alert.inventory.threshold/observability/alert/getAuthorizedAlertsIndices", + "alerting:metrics.alert.inventory.threshold/observability/alert/getAlertSummary", + "alerting:metrics.alert.inventory.threshold/observability/alert/update", + "alerting:metrics.alert.inventory.threshold/alerts/alert/get", + "alerting:metrics.alert.inventory.threshold/alerts/alert/find", + "alerting:metrics.alert.inventory.threshold/alerts/alert/getAuthorizedAlertsIndices", + "alerting:metrics.alert.inventory.threshold/alerts/alert/getAlertSummary", + "alerting:metrics.alert.inventory.threshold/alerts/alert/update", + "alerting:xpack.uptime.alerts.tls/observability/alert/get", + "alerting:xpack.uptime.alerts.tls/observability/alert/find", + "alerting:xpack.uptime.alerts.tls/observability/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.tls/observability/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.tls/observability/alert/update", + "alerting:xpack.uptime.alerts.tls/alerts/alert/get", + "alerting:xpack.uptime.alerts.tls/alerts/alert/find", + "alerting:xpack.uptime.alerts.tls/alerts/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.tls/alerts/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.tls/alerts/alert/update", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/alert/get", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/alert/find", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/alert/update", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/alert/get", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/alert/find", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/alert/update", + "alerting:xpack.uptime.alerts.monitorStatus/observability/alert/get", + "alerting:xpack.uptime.alerts.monitorStatus/observability/alert/find", + "alerting:xpack.uptime.alerts.monitorStatus/observability/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.monitorStatus/observability/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.monitorStatus/observability/alert/update", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/alert/get", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/alert/find", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/alert/update", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/alert/get", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/alert/find", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/alert/update", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/alert/get", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/alert/find", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/alert/update", + "alerting:logs.alert.document.count/observability/alert/get", + "alerting:logs.alert.document.count/observability/alert/find", + "alerting:logs.alert.document.count/observability/alert/getAuthorizedAlertsIndices", + "alerting:logs.alert.document.count/observability/alert/getAlertSummary", + "alerting:logs.alert.document.count/observability/alert/update", + "alerting:logs.alert.document.count/alerts/alert/get", + "alerting:logs.alert.document.count/alerts/alert/find", + "alerting:logs.alert.document.count/alerts/alert/getAuthorizedAlertsIndices", + "alerting:logs.alert.document.count/alerts/alert/getAlertSummary", + "alerting:logs.alert.document.count/alerts/alert/update", + "alerting:slo.rules.burnRate/observability/alert/get", + "alerting:slo.rules.burnRate/observability/alert/find", + "alerting:slo.rules.burnRate/observability/alert/getAuthorizedAlertsIndices", + "alerting:slo.rules.burnRate/observability/alert/getAlertSummary", + "alerting:slo.rules.burnRate/observability/alert/update", + "alerting:slo.rules.burnRate/alerts/alert/get", + "alerting:slo.rules.burnRate/alerts/alert/find", + "alerting:slo.rules.burnRate/alerts/alert/getAuthorizedAlertsIndices", + "alerting:slo.rules.burnRate/alerts/alert/getAlertSummary", + "alerting:slo.rules.burnRate/alerts/alert/update", + "alerting:observability.rules.custom_threshold/observability/alert/get", + "alerting:observability.rules.custom_threshold/observability/alert/find", + "alerting:observability.rules.custom_threshold/observability/alert/getAuthorizedAlertsIndices", + "alerting:observability.rules.custom_threshold/observability/alert/getAlertSummary", + "alerting:observability.rules.custom_threshold/observability/alert/update", + "alerting:observability.rules.custom_threshold/alerts/alert/get", + "alerting:observability.rules.custom_threshold/alerts/alert/find", + "alerting:observability.rules.custom_threshold/alerts/alert/getAuthorizedAlertsIndices", + "alerting:observability.rules.custom_threshold/alerts/alert/getAlertSummary", + "alerting:observability.rules.custom_threshold/alerts/alert/update", + "alerting:.es-query/observability/alert/get", + "alerting:.es-query/observability/alert/find", + "alerting:.es-query/observability/alert/getAuthorizedAlertsIndices", + "alerting:.es-query/observability/alert/getAlertSummary", + "alerting:.es-query/observability/alert/update", + "alerting:.es-query/alerts/alert/get", + "alerting:.es-query/alerts/alert/find", + "alerting:.es-query/alerts/alert/getAuthorizedAlertsIndices", + "alerting:.es-query/alerts/alert/getAlertSummary", + "alerting:.es-query/alerts/alert/update", + "alerting:xpack.ml.anomaly_detection_alert/observability/alert/get", + "alerting:xpack.ml.anomaly_detection_alert/observability/alert/find", + "alerting:xpack.ml.anomaly_detection_alert/observability/alert/getAuthorizedAlertsIndices", + "alerting:xpack.ml.anomaly_detection_alert/observability/alert/getAlertSummary", + "alerting:xpack.ml.anomaly_detection_alert/observability/alert/update", + "alerting:xpack.ml.anomaly_detection_alert/alerts/alert/get", + "alerting:xpack.ml.anomaly_detection_alert/alerts/alert/find", + "alerting:xpack.ml.anomaly_detection_alert/alerts/alert/getAuthorizedAlertsIndices", + "alerting:xpack.ml.anomaly_detection_alert/alerts/alert/getAlertSummary", + "alerting:xpack.ml.anomaly_detection_alert/alerts/alert/update", + "ui:discover_v2/show", + "ui:discover_v2/save", + "ui:savedQueryManagement/showQueries", + "ui:savedQueryManagement/saveQuery", + ], + "minimal_read": Array [ + "login:", + "api:savedQuery:read", + "app:discover", + "app:kibana", + "ui:catalogue/discover", + "ui:navLinks/discover", + "ui:navLinks/kibana", + "saved_object:index-pattern/bulk_get", + "saved_object:index-pattern/get", + "saved_object:index-pattern/find", + "saved_object:index-pattern/open_point_in_time", + "saved_object:index-pattern/close_point_in_time", + "saved_object:search/bulk_get", + "saved_object:search/get", + "saved_object:search/find", + "saved_object:search/open_point_in_time", + "saved_object:search/close_point_in_time", + "saved_object:query/bulk_get", + "saved_object:query/get", + "saved_object:query/find", + "saved_object:query/open_point_in_time", + "saved_object:query/close_point_in_time", + "saved_object:config/bulk_get", + "saved_object:config/get", + "saved_object:config/find", + "saved_object:config/open_point_in_time", + "saved_object:config/close_point_in_time", + "saved_object:config-global/bulk_get", + "saved_object:config-global/get", + "saved_object:config-global/find", + "saved_object:config-global/open_point_in_time", + "saved_object:config-global/close_point_in_time", + "saved_object:telemetry/bulk_get", + "saved_object:telemetry/get", + "saved_object:telemetry/find", + "saved_object:telemetry/open_point_in_time", + "saved_object:telemetry/close_point_in_time", + "saved_object:url/bulk_get", + "saved_object:url/get", + "saved_object:url/find", + "saved_object:url/open_point_in_time", + "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", + "saved_object:cloud/bulk_get", + "saved_object:cloud/get", + "saved_object:cloud/find", + "saved_object:cloud/open_point_in_time", + "saved_object:cloud/close_point_in_time", + "ui:discover/show", + "api:rac", + "app:observability", + "ui:catalogue/observability", + "ui:navLinks/observability", + "ui:observability/read", + "alerting:apm.error_rate/observability/rule/get", + "alerting:apm.error_rate/observability/rule/getRuleState", + "alerting:apm.error_rate/observability/rule/getAlertSummary", + "alerting:apm.error_rate/observability/rule/getExecutionLog", + "alerting:apm.error_rate/observability/rule/getActionErrorLog", + "alerting:apm.error_rate/observability/rule/find", + "alerting:apm.error_rate/observability/rule/getRuleExecutionKPI", + "alerting:apm.error_rate/observability/rule/getBackfill", + "alerting:apm.error_rate/observability/rule/findBackfill", + "alerting:apm.error_rate/observability/rule/findGaps", + "alerting:apm.error_rate/alerts/rule/get", + "alerting:apm.error_rate/alerts/rule/getRuleState", + "alerting:apm.error_rate/alerts/rule/getAlertSummary", + "alerting:apm.error_rate/alerts/rule/getExecutionLog", + "alerting:apm.error_rate/alerts/rule/getActionErrorLog", + "alerting:apm.error_rate/alerts/rule/find", + "alerting:apm.error_rate/alerts/rule/getRuleExecutionKPI", + "alerting:apm.error_rate/alerts/rule/getBackfill", + "alerting:apm.error_rate/alerts/rule/findBackfill", + "alerting:apm.error_rate/alerts/rule/findGaps", + "alerting:apm.transaction_error_rate/observability/rule/get", + "alerting:apm.transaction_error_rate/observability/rule/getRuleState", + "alerting:apm.transaction_error_rate/observability/rule/getAlertSummary", + "alerting:apm.transaction_error_rate/observability/rule/getExecutionLog", + "alerting:apm.transaction_error_rate/observability/rule/getActionErrorLog", + "alerting:apm.transaction_error_rate/observability/rule/find", + "alerting:apm.transaction_error_rate/observability/rule/getRuleExecutionKPI", + "alerting:apm.transaction_error_rate/observability/rule/getBackfill", + "alerting:apm.transaction_error_rate/observability/rule/findBackfill", + "alerting:apm.transaction_error_rate/observability/rule/findGaps", + "alerting:apm.transaction_error_rate/alerts/rule/get", + "alerting:apm.transaction_error_rate/alerts/rule/getRuleState", + "alerting:apm.transaction_error_rate/alerts/rule/getAlertSummary", + "alerting:apm.transaction_error_rate/alerts/rule/getExecutionLog", + "alerting:apm.transaction_error_rate/alerts/rule/getActionErrorLog", + "alerting:apm.transaction_error_rate/alerts/rule/find", + "alerting:apm.transaction_error_rate/alerts/rule/getRuleExecutionKPI", + "alerting:apm.transaction_error_rate/alerts/rule/getBackfill", + "alerting:apm.transaction_error_rate/alerts/rule/findBackfill", + "alerting:apm.transaction_error_rate/alerts/rule/findGaps", + "alerting:apm.transaction_duration/observability/rule/get", + "alerting:apm.transaction_duration/observability/rule/getRuleState", + "alerting:apm.transaction_duration/observability/rule/getAlertSummary", + "alerting:apm.transaction_duration/observability/rule/getExecutionLog", + "alerting:apm.transaction_duration/observability/rule/getActionErrorLog", + "alerting:apm.transaction_duration/observability/rule/find", + "alerting:apm.transaction_duration/observability/rule/getRuleExecutionKPI", + "alerting:apm.transaction_duration/observability/rule/getBackfill", + "alerting:apm.transaction_duration/observability/rule/findBackfill", + "alerting:apm.transaction_duration/observability/rule/findGaps", + "alerting:apm.transaction_duration/alerts/rule/get", + "alerting:apm.transaction_duration/alerts/rule/getRuleState", + "alerting:apm.transaction_duration/alerts/rule/getAlertSummary", + "alerting:apm.transaction_duration/alerts/rule/getExecutionLog", + "alerting:apm.transaction_duration/alerts/rule/getActionErrorLog", + "alerting:apm.transaction_duration/alerts/rule/find", + "alerting:apm.transaction_duration/alerts/rule/getRuleExecutionKPI", + "alerting:apm.transaction_duration/alerts/rule/getBackfill", + "alerting:apm.transaction_duration/alerts/rule/findBackfill", + "alerting:apm.transaction_duration/alerts/rule/findGaps", + "alerting:apm.anomaly/observability/rule/get", + "alerting:apm.anomaly/observability/rule/getRuleState", + "alerting:apm.anomaly/observability/rule/getAlertSummary", + "alerting:apm.anomaly/observability/rule/getExecutionLog", + "alerting:apm.anomaly/observability/rule/getActionErrorLog", + "alerting:apm.anomaly/observability/rule/find", + "alerting:apm.anomaly/observability/rule/getRuleExecutionKPI", + "alerting:apm.anomaly/observability/rule/getBackfill", + "alerting:apm.anomaly/observability/rule/findBackfill", + "alerting:apm.anomaly/observability/rule/findGaps", + "alerting:apm.anomaly/alerts/rule/get", + "alerting:apm.anomaly/alerts/rule/getRuleState", + "alerting:apm.anomaly/alerts/rule/getAlertSummary", + "alerting:apm.anomaly/alerts/rule/getExecutionLog", + "alerting:apm.anomaly/alerts/rule/getActionErrorLog", + "alerting:apm.anomaly/alerts/rule/find", + "alerting:apm.anomaly/alerts/rule/getRuleExecutionKPI", + "alerting:apm.anomaly/alerts/rule/getBackfill", + "alerting:apm.anomaly/alerts/rule/findBackfill", + "alerting:apm.anomaly/alerts/rule/findGaps", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/get", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/getRuleState", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/getAlertSummary", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/getExecutionLog", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/getActionErrorLog", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/find", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/getRuleExecutionKPI", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/getBackfill", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/findBackfill", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/findGaps", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/get", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/getRuleState", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/getAlertSummary", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/getExecutionLog", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/getActionErrorLog", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/find", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/getRuleExecutionKPI", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/getBackfill", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/findBackfill", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/findGaps", + "alerting:xpack.synthetics.alerts.tls/observability/rule/get", + "alerting:xpack.synthetics.alerts.tls/observability/rule/getRuleState", + "alerting:xpack.synthetics.alerts.tls/observability/rule/getAlertSummary", + "alerting:xpack.synthetics.alerts.tls/observability/rule/getExecutionLog", + "alerting:xpack.synthetics.alerts.tls/observability/rule/getActionErrorLog", + "alerting:xpack.synthetics.alerts.tls/observability/rule/find", + "alerting:xpack.synthetics.alerts.tls/observability/rule/getRuleExecutionKPI", + "alerting:xpack.synthetics.alerts.tls/observability/rule/getBackfill", + "alerting:xpack.synthetics.alerts.tls/observability/rule/findBackfill", + "alerting:xpack.synthetics.alerts.tls/observability/rule/findGaps", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/get", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/getRuleState", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/getAlertSummary", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/getExecutionLog", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/getActionErrorLog", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/find", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/getRuleExecutionKPI", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/getBackfill", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/findBackfill", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/findGaps", + "alerting:metrics.alert.threshold/observability/rule/get", + "alerting:metrics.alert.threshold/observability/rule/getRuleState", + "alerting:metrics.alert.threshold/observability/rule/getAlertSummary", + "alerting:metrics.alert.threshold/observability/rule/getExecutionLog", + "alerting:metrics.alert.threshold/observability/rule/getActionErrorLog", + "alerting:metrics.alert.threshold/observability/rule/find", + "alerting:metrics.alert.threshold/observability/rule/getRuleExecutionKPI", + "alerting:metrics.alert.threshold/observability/rule/getBackfill", + "alerting:metrics.alert.threshold/observability/rule/findBackfill", + "alerting:metrics.alert.threshold/observability/rule/findGaps", + "alerting:metrics.alert.threshold/alerts/rule/get", + "alerting:metrics.alert.threshold/alerts/rule/getRuleState", + "alerting:metrics.alert.threshold/alerts/rule/getAlertSummary", + "alerting:metrics.alert.threshold/alerts/rule/getExecutionLog", + "alerting:metrics.alert.threshold/alerts/rule/getActionErrorLog", + "alerting:metrics.alert.threshold/alerts/rule/find", + "alerting:metrics.alert.threshold/alerts/rule/getRuleExecutionKPI", + "alerting:metrics.alert.threshold/alerts/rule/getBackfill", + "alerting:metrics.alert.threshold/alerts/rule/findBackfill", + "alerting:metrics.alert.threshold/alerts/rule/findGaps", + "alerting:metrics.alert.inventory.threshold/observability/rule/get", + "alerting:metrics.alert.inventory.threshold/observability/rule/getRuleState", + "alerting:metrics.alert.inventory.threshold/observability/rule/getAlertSummary", + "alerting:metrics.alert.inventory.threshold/observability/rule/getExecutionLog", + "alerting:metrics.alert.inventory.threshold/observability/rule/getActionErrorLog", + "alerting:metrics.alert.inventory.threshold/observability/rule/find", + "alerting:metrics.alert.inventory.threshold/observability/rule/getRuleExecutionKPI", + "alerting:metrics.alert.inventory.threshold/observability/rule/getBackfill", + "alerting:metrics.alert.inventory.threshold/observability/rule/findBackfill", + "alerting:metrics.alert.inventory.threshold/observability/rule/findGaps", + "alerting:metrics.alert.inventory.threshold/alerts/rule/get", + "alerting:metrics.alert.inventory.threshold/alerts/rule/getRuleState", + "alerting:metrics.alert.inventory.threshold/alerts/rule/getAlertSummary", + "alerting:metrics.alert.inventory.threshold/alerts/rule/getExecutionLog", + "alerting:metrics.alert.inventory.threshold/alerts/rule/getActionErrorLog", + "alerting:metrics.alert.inventory.threshold/alerts/rule/find", + "alerting:metrics.alert.inventory.threshold/alerts/rule/getRuleExecutionKPI", + "alerting:metrics.alert.inventory.threshold/alerts/rule/getBackfill", + "alerting:metrics.alert.inventory.threshold/alerts/rule/findBackfill", + "alerting:metrics.alert.inventory.threshold/alerts/rule/findGaps", + "alerting:xpack.uptime.alerts.tls/observability/rule/get", + "alerting:xpack.uptime.alerts.tls/observability/rule/getRuleState", + "alerting:xpack.uptime.alerts.tls/observability/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.tls/observability/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.tls/observability/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.tls/observability/rule/find", + "alerting:xpack.uptime.alerts.tls/observability/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.tls/observability/rule/getBackfill", + "alerting:xpack.uptime.alerts.tls/observability/rule/findBackfill", + "alerting:xpack.uptime.alerts.tls/observability/rule/findGaps", + "alerting:xpack.uptime.alerts.tls/alerts/rule/get", + "alerting:xpack.uptime.alerts.tls/alerts/rule/getRuleState", + "alerting:xpack.uptime.alerts.tls/alerts/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.tls/alerts/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.tls/alerts/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.tls/alerts/rule/find", + "alerting:xpack.uptime.alerts.tls/alerts/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.tls/alerts/rule/getBackfill", + "alerting:xpack.uptime.alerts.tls/alerts/rule/findBackfill", + "alerting:xpack.uptime.alerts.tls/alerts/rule/findGaps", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/get", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/getRuleState", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/find", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/getBackfill", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/findBackfill", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/findGaps", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/get", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/getRuleState", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/find", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/getBackfill", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/findBackfill", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/findGaps", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/get", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/getRuleState", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/find", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/getBackfill", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/findBackfill", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/findGaps", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/get", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/getRuleState", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/find", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/getBackfill", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/findBackfill", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/findGaps", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/get", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/getRuleState", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/find", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/getBackfill", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/findBackfill", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/findGaps", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/get", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/getRuleState", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/find", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/getBackfill", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/findBackfill", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/findGaps", + "alerting:logs.alert.document.count/observability/rule/get", + "alerting:logs.alert.document.count/observability/rule/getRuleState", + "alerting:logs.alert.document.count/observability/rule/getAlertSummary", + "alerting:logs.alert.document.count/observability/rule/getExecutionLog", + "alerting:logs.alert.document.count/observability/rule/getActionErrorLog", + "alerting:logs.alert.document.count/observability/rule/find", + "alerting:logs.alert.document.count/observability/rule/getRuleExecutionKPI", + "alerting:logs.alert.document.count/observability/rule/getBackfill", + "alerting:logs.alert.document.count/observability/rule/findBackfill", + "alerting:logs.alert.document.count/observability/rule/findGaps", + "alerting:logs.alert.document.count/alerts/rule/get", + "alerting:logs.alert.document.count/alerts/rule/getRuleState", + "alerting:logs.alert.document.count/alerts/rule/getAlertSummary", + "alerting:logs.alert.document.count/alerts/rule/getExecutionLog", + "alerting:logs.alert.document.count/alerts/rule/getActionErrorLog", + "alerting:logs.alert.document.count/alerts/rule/find", + "alerting:logs.alert.document.count/alerts/rule/getRuleExecutionKPI", + "alerting:logs.alert.document.count/alerts/rule/getBackfill", + "alerting:logs.alert.document.count/alerts/rule/findBackfill", + "alerting:logs.alert.document.count/alerts/rule/findGaps", + "alerting:slo.rules.burnRate/observability/rule/get", + "alerting:slo.rules.burnRate/observability/rule/getRuleState", + "alerting:slo.rules.burnRate/observability/rule/getAlertSummary", + "alerting:slo.rules.burnRate/observability/rule/getExecutionLog", + "alerting:slo.rules.burnRate/observability/rule/getActionErrorLog", + "alerting:slo.rules.burnRate/observability/rule/find", + "alerting:slo.rules.burnRate/observability/rule/getRuleExecutionKPI", + "alerting:slo.rules.burnRate/observability/rule/getBackfill", + "alerting:slo.rules.burnRate/observability/rule/findBackfill", + "alerting:slo.rules.burnRate/observability/rule/findGaps", + "alerting:slo.rules.burnRate/alerts/rule/get", + "alerting:slo.rules.burnRate/alerts/rule/getRuleState", + "alerting:slo.rules.burnRate/alerts/rule/getAlertSummary", + "alerting:slo.rules.burnRate/alerts/rule/getExecutionLog", + "alerting:slo.rules.burnRate/alerts/rule/getActionErrorLog", + "alerting:slo.rules.burnRate/alerts/rule/find", + "alerting:slo.rules.burnRate/alerts/rule/getRuleExecutionKPI", + "alerting:slo.rules.burnRate/alerts/rule/getBackfill", + "alerting:slo.rules.burnRate/alerts/rule/findBackfill", + "alerting:slo.rules.burnRate/alerts/rule/findGaps", + "alerting:observability.rules.custom_threshold/observability/rule/get", + "alerting:observability.rules.custom_threshold/observability/rule/getRuleState", + "alerting:observability.rules.custom_threshold/observability/rule/getAlertSummary", + "alerting:observability.rules.custom_threshold/observability/rule/getExecutionLog", + "alerting:observability.rules.custom_threshold/observability/rule/getActionErrorLog", + "alerting:observability.rules.custom_threshold/observability/rule/find", + "alerting:observability.rules.custom_threshold/observability/rule/getRuleExecutionKPI", + "alerting:observability.rules.custom_threshold/observability/rule/getBackfill", + "alerting:observability.rules.custom_threshold/observability/rule/findBackfill", + "alerting:observability.rules.custom_threshold/observability/rule/findGaps", + "alerting:observability.rules.custom_threshold/alerts/rule/get", + "alerting:observability.rules.custom_threshold/alerts/rule/getRuleState", + "alerting:observability.rules.custom_threshold/alerts/rule/getAlertSummary", + "alerting:observability.rules.custom_threshold/alerts/rule/getExecutionLog", + "alerting:observability.rules.custom_threshold/alerts/rule/getActionErrorLog", + "alerting:observability.rules.custom_threshold/alerts/rule/find", + "alerting:observability.rules.custom_threshold/alerts/rule/getRuleExecutionKPI", + "alerting:observability.rules.custom_threshold/alerts/rule/getBackfill", + "alerting:observability.rules.custom_threshold/alerts/rule/findBackfill", + "alerting:observability.rules.custom_threshold/alerts/rule/findGaps", + "alerting:.es-query/observability/rule/get", + "alerting:.es-query/observability/rule/getRuleState", + "alerting:.es-query/observability/rule/getAlertSummary", + "alerting:.es-query/observability/rule/getExecutionLog", + "alerting:.es-query/observability/rule/getActionErrorLog", + "alerting:.es-query/observability/rule/find", + "alerting:.es-query/observability/rule/getRuleExecutionKPI", + "alerting:.es-query/observability/rule/getBackfill", + "alerting:.es-query/observability/rule/findBackfill", + "alerting:.es-query/observability/rule/findGaps", + "alerting:.es-query/alerts/rule/get", + "alerting:.es-query/alerts/rule/getRuleState", + "alerting:.es-query/alerts/rule/getAlertSummary", + "alerting:.es-query/alerts/rule/getExecutionLog", + "alerting:.es-query/alerts/rule/getActionErrorLog", + "alerting:.es-query/alerts/rule/find", + "alerting:.es-query/alerts/rule/getRuleExecutionKPI", + "alerting:.es-query/alerts/rule/getBackfill", + "alerting:.es-query/alerts/rule/findBackfill", + "alerting:.es-query/alerts/rule/findGaps", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/get", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/getRuleState", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/getAlertSummary", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/getExecutionLog", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/getActionErrorLog", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/find", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/getRuleExecutionKPI", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/getBackfill", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/findBackfill", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/findGaps", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/get", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/getRuleState", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/getAlertSummary", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/getExecutionLog", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/getActionErrorLog", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/find", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/getRuleExecutionKPI", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/getBackfill", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/findBackfill", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/findGaps", + "alerting:apm.error_rate/observability/alert/get", + "alerting:apm.error_rate/observability/alert/find", + "alerting:apm.error_rate/observability/alert/getAuthorizedAlertsIndices", + "alerting:apm.error_rate/observability/alert/getAlertSummary", + "alerting:apm.error_rate/alerts/alert/get", + "alerting:apm.error_rate/alerts/alert/find", + "alerting:apm.error_rate/alerts/alert/getAuthorizedAlertsIndices", + "alerting:apm.error_rate/alerts/alert/getAlertSummary", + "alerting:apm.transaction_error_rate/observability/alert/get", + "alerting:apm.transaction_error_rate/observability/alert/find", + "alerting:apm.transaction_error_rate/observability/alert/getAuthorizedAlertsIndices", + "alerting:apm.transaction_error_rate/observability/alert/getAlertSummary", + "alerting:apm.transaction_error_rate/alerts/alert/get", + "alerting:apm.transaction_error_rate/alerts/alert/find", + "alerting:apm.transaction_error_rate/alerts/alert/getAuthorizedAlertsIndices", + "alerting:apm.transaction_error_rate/alerts/alert/getAlertSummary", + "alerting:apm.transaction_duration/observability/alert/get", + "alerting:apm.transaction_duration/observability/alert/find", + "alerting:apm.transaction_duration/observability/alert/getAuthorizedAlertsIndices", + "alerting:apm.transaction_duration/observability/alert/getAlertSummary", + "alerting:apm.transaction_duration/alerts/alert/get", + "alerting:apm.transaction_duration/alerts/alert/find", + "alerting:apm.transaction_duration/alerts/alert/getAuthorizedAlertsIndices", + "alerting:apm.transaction_duration/alerts/alert/getAlertSummary", + "alerting:apm.anomaly/observability/alert/get", + "alerting:apm.anomaly/observability/alert/find", + "alerting:apm.anomaly/observability/alert/getAuthorizedAlertsIndices", + "alerting:apm.anomaly/observability/alert/getAlertSummary", + "alerting:apm.anomaly/alerts/alert/get", + "alerting:apm.anomaly/alerts/alert/find", + "alerting:apm.anomaly/alerts/alert/getAuthorizedAlertsIndices", + "alerting:apm.anomaly/alerts/alert/getAlertSummary", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/alert/get", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/alert/find", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/alert/getAuthorizedAlertsIndices", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/alert/getAlertSummary", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/alert/get", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/alert/find", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/alert/getAuthorizedAlertsIndices", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/alert/getAlertSummary", + "alerting:xpack.synthetics.alerts.tls/observability/alert/get", + "alerting:xpack.synthetics.alerts.tls/observability/alert/find", + "alerting:xpack.synthetics.alerts.tls/observability/alert/getAuthorizedAlertsIndices", + "alerting:xpack.synthetics.alerts.tls/observability/alert/getAlertSummary", + "alerting:xpack.synthetics.alerts.tls/alerts/alert/get", + "alerting:xpack.synthetics.alerts.tls/alerts/alert/find", + "alerting:xpack.synthetics.alerts.tls/alerts/alert/getAuthorizedAlertsIndices", + "alerting:xpack.synthetics.alerts.tls/alerts/alert/getAlertSummary", + "alerting:metrics.alert.threshold/observability/alert/get", + "alerting:metrics.alert.threshold/observability/alert/find", + "alerting:metrics.alert.threshold/observability/alert/getAuthorizedAlertsIndices", + "alerting:metrics.alert.threshold/observability/alert/getAlertSummary", + "alerting:metrics.alert.threshold/alerts/alert/get", + "alerting:metrics.alert.threshold/alerts/alert/find", + "alerting:metrics.alert.threshold/alerts/alert/getAuthorizedAlertsIndices", + "alerting:metrics.alert.threshold/alerts/alert/getAlertSummary", + "alerting:metrics.alert.inventory.threshold/observability/alert/get", + "alerting:metrics.alert.inventory.threshold/observability/alert/find", + "alerting:metrics.alert.inventory.threshold/observability/alert/getAuthorizedAlertsIndices", + "alerting:metrics.alert.inventory.threshold/observability/alert/getAlertSummary", + "alerting:metrics.alert.inventory.threshold/alerts/alert/get", + "alerting:metrics.alert.inventory.threshold/alerts/alert/find", + "alerting:metrics.alert.inventory.threshold/alerts/alert/getAuthorizedAlertsIndices", + "alerting:metrics.alert.inventory.threshold/alerts/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.tls/observability/alert/get", + "alerting:xpack.uptime.alerts.tls/observability/alert/find", + "alerting:xpack.uptime.alerts.tls/observability/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.tls/observability/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.tls/alerts/alert/get", + "alerting:xpack.uptime.alerts.tls/alerts/alert/find", + "alerting:xpack.uptime.alerts.tls/alerts/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.tls/alerts/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/alert/get", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/alert/find", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/alert/get", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/alert/find", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.monitorStatus/observability/alert/get", + "alerting:xpack.uptime.alerts.monitorStatus/observability/alert/find", + "alerting:xpack.uptime.alerts.monitorStatus/observability/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.monitorStatus/observability/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/alert/get", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/alert/find", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/alert/get", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/alert/find", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/alert/get", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/alert/find", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/alert/getAlertSummary", + "alerting:logs.alert.document.count/observability/alert/get", + "alerting:logs.alert.document.count/observability/alert/find", + "alerting:logs.alert.document.count/observability/alert/getAuthorizedAlertsIndices", + "alerting:logs.alert.document.count/observability/alert/getAlertSummary", + "alerting:logs.alert.document.count/alerts/alert/get", + "alerting:logs.alert.document.count/alerts/alert/find", + "alerting:logs.alert.document.count/alerts/alert/getAuthorizedAlertsIndices", + "alerting:logs.alert.document.count/alerts/alert/getAlertSummary", + "alerting:slo.rules.burnRate/observability/alert/get", + "alerting:slo.rules.burnRate/observability/alert/find", + "alerting:slo.rules.burnRate/observability/alert/getAuthorizedAlertsIndices", + "alerting:slo.rules.burnRate/observability/alert/getAlertSummary", + "alerting:slo.rules.burnRate/alerts/alert/get", + "alerting:slo.rules.burnRate/alerts/alert/find", + "alerting:slo.rules.burnRate/alerts/alert/getAuthorizedAlertsIndices", + "alerting:slo.rules.burnRate/alerts/alert/getAlertSummary", + "alerting:observability.rules.custom_threshold/observability/alert/get", + "alerting:observability.rules.custom_threshold/observability/alert/find", + "alerting:observability.rules.custom_threshold/observability/alert/getAuthorizedAlertsIndices", + "alerting:observability.rules.custom_threshold/observability/alert/getAlertSummary", + "alerting:observability.rules.custom_threshold/alerts/alert/get", + "alerting:observability.rules.custom_threshold/alerts/alert/find", + "alerting:observability.rules.custom_threshold/alerts/alert/getAuthorizedAlertsIndices", + "alerting:observability.rules.custom_threshold/alerts/alert/getAlertSummary", + "alerting:.es-query/observability/alert/get", + "alerting:.es-query/observability/alert/find", + "alerting:.es-query/observability/alert/getAuthorizedAlertsIndices", + "alerting:.es-query/observability/alert/getAlertSummary", + "alerting:.es-query/alerts/alert/get", + "alerting:.es-query/alerts/alert/find", + "alerting:.es-query/alerts/alert/getAuthorizedAlertsIndices", + "alerting:.es-query/alerts/alert/getAlertSummary", + "alerting:xpack.ml.anomaly_detection_alert/observability/alert/get", + "alerting:xpack.ml.anomaly_detection_alert/observability/alert/find", + "alerting:xpack.ml.anomaly_detection_alert/observability/alert/getAuthorizedAlertsIndices", + "alerting:xpack.ml.anomaly_detection_alert/observability/alert/getAlertSummary", + "alerting:xpack.ml.anomaly_detection_alert/alerts/alert/get", + "alerting:xpack.ml.anomaly_detection_alert/alerts/alert/find", + "alerting:xpack.ml.anomaly_detection_alert/alerts/alert/getAuthorizedAlertsIndices", + "alerting:xpack.ml.anomaly_detection_alert/alerts/alert/getAlertSummary", + "ui:discover_v2/show", + "ui:savedQueryManagement/showQueries", + ], + "read": Array [ + "login:", + "api:savedQuery:read", + "app:discover", + "app:kibana", + "ui:catalogue/discover", + "ui:navLinks/discover", + "ui:navLinks/kibana", + "saved_object:url/bulk_get", + "saved_object:url/get", + "saved_object:url/find", + "saved_object:url/open_point_in_time", + "saved_object:url/close_point_in_time", + "saved_object:url/create", + "saved_object:url/bulk_create", + "saved_object:url/update", + "saved_object:url/bulk_update", + "saved_object:url/delete", + "saved_object:url/bulk_delete", + "saved_object:url/share_to_space", + "saved_object:index-pattern/bulk_get", + "saved_object:index-pattern/get", + "saved_object:index-pattern/find", + "saved_object:index-pattern/open_point_in_time", + "saved_object:index-pattern/close_point_in_time", + "saved_object:search/bulk_get", + "saved_object:search/get", + "saved_object:search/find", + "saved_object:search/open_point_in_time", + "saved_object:search/close_point_in_time", + "saved_object:query/bulk_get", + "saved_object:query/get", + "saved_object:query/find", + "saved_object:query/open_point_in_time", + "saved_object:query/close_point_in_time", + "saved_object:config/bulk_get", + "saved_object:config/get", + "saved_object:config/find", + "saved_object:config/open_point_in_time", + "saved_object:config/close_point_in_time", + "saved_object:config-global/bulk_get", + "saved_object:config-global/get", + "saved_object:config-global/find", + "saved_object:config-global/open_point_in_time", + "saved_object:config-global/close_point_in_time", + "saved_object:telemetry/bulk_get", + "saved_object:telemetry/get", + "saved_object:telemetry/find", + "saved_object:telemetry/open_point_in_time", + "saved_object:telemetry/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", + "saved_object:cloud/bulk_get", + "saved_object:cloud/get", + "saved_object:cloud/find", + "saved_object:cloud/open_point_in_time", + "saved_object:cloud/close_point_in_time", + "ui:discover/show", + "ui:discover/createShortUrl", + "api:rac", + "app:observability", + "ui:catalogue/observability", + "ui:navLinks/observability", + "ui:observability/read", + "alerting:apm.error_rate/observability/rule/get", + "alerting:apm.error_rate/observability/rule/getRuleState", + "alerting:apm.error_rate/observability/rule/getAlertSummary", + "alerting:apm.error_rate/observability/rule/getExecutionLog", + "alerting:apm.error_rate/observability/rule/getActionErrorLog", + "alerting:apm.error_rate/observability/rule/find", + "alerting:apm.error_rate/observability/rule/getRuleExecutionKPI", + "alerting:apm.error_rate/observability/rule/getBackfill", + "alerting:apm.error_rate/observability/rule/findBackfill", + "alerting:apm.error_rate/observability/rule/findGaps", + "alerting:apm.error_rate/alerts/rule/get", + "alerting:apm.error_rate/alerts/rule/getRuleState", + "alerting:apm.error_rate/alerts/rule/getAlertSummary", + "alerting:apm.error_rate/alerts/rule/getExecutionLog", + "alerting:apm.error_rate/alerts/rule/getActionErrorLog", + "alerting:apm.error_rate/alerts/rule/find", + "alerting:apm.error_rate/alerts/rule/getRuleExecutionKPI", + "alerting:apm.error_rate/alerts/rule/getBackfill", + "alerting:apm.error_rate/alerts/rule/findBackfill", + "alerting:apm.error_rate/alerts/rule/findGaps", + "alerting:apm.transaction_error_rate/observability/rule/get", + "alerting:apm.transaction_error_rate/observability/rule/getRuleState", + "alerting:apm.transaction_error_rate/observability/rule/getAlertSummary", + "alerting:apm.transaction_error_rate/observability/rule/getExecutionLog", + "alerting:apm.transaction_error_rate/observability/rule/getActionErrorLog", + "alerting:apm.transaction_error_rate/observability/rule/find", + "alerting:apm.transaction_error_rate/observability/rule/getRuleExecutionKPI", + "alerting:apm.transaction_error_rate/observability/rule/getBackfill", + "alerting:apm.transaction_error_rate/observability/rule/findBackfill", + "alerting:apm.transaction_error_rate/observability/rule/findGaps", + "alerting:apm.transaction_error_rate/alerts/rule/get", + "alerting:apm.transaction_error_rate/alerts/rule/getRuleState", + "alerting:apm.transaction_error_rate/alerts/rule/getAlertSummary", + "alerting:apm.transaction_error_rate/alerts/rule/getExecutionLog", + "alerting:apm.transaction_error_rate/alerts/rule/getActionErrorLog", + "alerting:apm.transaction_error_rate/alerts/rule/find", + "alerting:apm.transaction_error_rate/alerts/rule/getRuleExecutionKPI", + "alerting:apm.transaction_error_rate/alerts/rule/getBackfill", + "alerting:apm.transaction_error_rate/alerts/rule/findBackfill", + "alerting:apm.transaction_error_rate/alerts/rule/findGaps", + "alerting:apm.transaction_duration/observability/rule/get", + "alerting:apm.transaction_duration/observability/rule/getRuleState", + "alerting:apm.transaction_duration/observability/rule/getAlertSummary", + "alerting:apm.transaction_duration/observability/rule/getExecutionLog", + "alerting:apm.transaction_duration/observability/rule/getActionErrorLog", + "alerting:apm.transaction_duration/observability/rule/find", + "alerting:apm.transaction_duration/observability/rule/getRuleExecutionKPI", + "alerting:apm.transaction_duration/observability/rule/getBackfill", + "alerting:apm.transaction_duration/observability/rule/findBackfill", + "alerting:apm.transaction_duration/observability/rule/findGaps", + "alerting:apm.transaction_duration/alerts/rule/get", + "alerting:apm.transaction_duration/alerts/rule/getRuleState", + "alerting:apm.transaction_duration/alerts/rule/getAlertSummary", + "alerting:apm.transaction_duration/alerts/rule/getExecutionLog", + "alerting:apm.transaction_duration/alerts/rule/getActionErrorLog", + "alerting:apm.transaction_duration/alerts/rule/find", + "alerting:apm.transaction_duration/alerts/rule/getRuleExecutionKPI", + "alerting:apm.transaction_duration/alerts/rule/getBackfill", + "alerting:apm.transaction_duration/alerts/rule/findBackfill", + "alerting:apm.transaction_duration/alerts/rule/findGaps", + "alerting:apm.anomaly/observability/rule/get", + "alerting:apm.anomaly/observability/rule/getRuleState", + "alerting:apm.anomaly/observability/rule/getAlertSummary", + "alerting:apm.anomaly/observability/rule/getExecutionLog", + "alerting:apm.anomaly/observability/rule/getActionErrorLog", + "alerting:apm.anomaly/observability/rule/find", + "alerting:apm.anomaly/observability/rule/getRuleExecutionKPI", + "alerting:apm.anomaly/observability/rule/getBackfill", + "alerting:apm.anomaly/observability/rule/findBackfill", + "alerting:apm.anomaly/observability/rule/findGaps", + "alerting:apm.anomaly/alerts/rule/get", + "alerting:apm.anomaly/alerts/rule/getRuleState", + "alerting:apm.anomaly/alerts/rule/getAlertSummary", + "alerting:apm.anomaly/alerts/rule/getExecutionLog", + "alerting:apm.anomaly/alerts/rule/getActionErrorLog", + "alerting:apm.anomaly/alerts/rule/find", + "alerting:apm.anomaly/alerts/rule/getRuleExecutionKPI", + "alerting:apm.anomaly/alerts/rule/getBackfill", + "alerting:apm.anomaly/alerts/rule/findBackfill", + "alerting:apm.anomaly/alerts/rule/findGaps", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/get", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/getRuleState", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/getAlertSummary", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/getExecutionLog", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/getActionErrorLog", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/find", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/getRuleExecutionKPI", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/getBackfill", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/findBackfill", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/rule/findGaps", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/get", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/getRuleState", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/getAlertSummary", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/getExecutionLog", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/getActionErrorLog", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/find", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/getRuleExecutionKPI", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/getBackfill", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/findBackfill", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/rule/findGaps", + "alerting:xpack.synthetics.alerts.tls/observability/rule/get", + "alerting:xpack.synthetics.alerts.tls/observability/rule/getRuleState", + "alerting:xpack.synthetics.alerts.tls/observability/rule/getAlertSummary", + "alerting:xpack.synthetics.alerts.tls/observability/rule/getExecutionLog", + "alerting:xpack.synthetics.alerts.tls/observability/rule/getActionErrorLog", + "alerting:xpack.synthetics.alerts.tls/observability/rule/find", + "alerting:xpack.synthetics.alerts.tls/observability/rule/getRuleExecutionKPI", + "alerting:xpack.synthetics.alerts.tls/observability/rule/getBackfill", + "alerting:xpack.synthetics.alerts.tls/observability/rule/findBackfill", + "alerting:xpack.synthetics.alerts.tls/observability/rule/findGaps", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/get", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/getRuleState", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/getAlertSummary", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/getExecutionLog", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/getActionErrorLog", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/find", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/getRuleExecutionKPI", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/getBackfill", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/findBackfill", + "alerting:xpack.synthetics.alerts.tls/alerts/rule/findGaps", + "alerting:metrics.alert.threshold/observability/rule/get", + "alerting:metrics.alert.threshold/observability/rule/getRuleState", + "alerting:metrics.alert.threshold/observability/rule/getAlertSummary", + "alerting:metrics.alert.threshold/observability/rule/getExecutionLog", + "alerting:metrics.alert.threshold/observability/rule/getActionErrorLog", + "alerting:metrics.alert.threshold/observability/rule/find", + "alerting:metrics.alert.threshold/observability/rule/getRuleExecutionKPI", + "alerting:metrics.alert.threshold/observability/rule/getBackfill", + "alerting:metrics.alert.threshold/observability/rule/findBackfill", + "alerting:metrics.alert.threshold/observability/rule/findGaps", + "alerting:metrics.alert.threshold/alerts/rule/get", + "alerting:metrics.alert.threshold/alerts/rule/getRuleState", + "alerting:metrics.alert.threshold/alerts/rule/getAlertSummary", + "alerting:metrics.alert.threshold/alerts/rule/getExecutionLog", + "alerting:metrics.alert.threshold/alerts/rule/getActionErrorLog", + "alerting:metrics.alert.threshold/alerts/rule/find", + "alerting:metrics.alert.threshold/alerts/rule/getRuleExecutionKPI", + "alerting:metrics.alert.threshold/alerts/rule/getBackfill", + "alerting:metrics.alert.threshold/alerts/rule/findBackfill", + "alerting:metrics.alert.threshold/alerts/rule/findGaps", + "alerting:metrics.alert.inventory.threshold/observability/rule/get", + "alerting:metrics.alert.inventory.threshold/observability/rule/getRuleState", + "alerting:metrics.alert.inventory.threshold/observability/rule/getAlertSummary", + "alerting:metrics.alert.inventory.threshold/observability/rule/getExecutionLog", + "alerting:metrics.alert.inventory.threshold/observability/rule/getActionErrorLog", + "alerting:metrics.alert.inventory.threshold/observability/rule/find", + "alerting:metrics.alert.inventory.threshold/observability/rule/getRuleExecutionKPI", + "alerting:metrics.alert.inventory.threshold/observability/rule/getBackfill", + "alerting:metrics.alert.inventory.threshold/observability/rule/findBackfill", + "alerting:metrics.alert.inventory.threshold/observability/rule/findGaps", + "alerting:metrics.alert.inventory.threshold/alerts/rule/get", + "alerting:metrics.alert.inventory.threshold/alerts/rule/getRuleState", + "alerting:metrics.alert.inventory.threshold/alerts/rule/getAlertSummary", + "alerting:metrics.alert.inventory.threshold/alerts/rule/getExecutionLog", + "alerting:metrics.alert.inventory.threshold/alerts/rule/getActionErrorLog", + "alerting:metrics.alert.inventory.threshold/alerts/rule/find", + "alerting:metrics.alert.inventory.threshold/alerts/rule/getRuleExecutionKPI", + "alerting:metrics.alert.inventory.threshold/alerts/rule/getBackfill", + "alerting:metrics.alert.inventory.threshold/alerts/rule/findBackfill", + "alerting:metrics.alert.inventory.threshold/alerts/rule/findGaps", + "alerting:xpack.uptime.alerts.tls/observability/rule/get", + "alerting:xpack.uptime.alerts.tls/observability/rule/getRuleState", + "alerting:xpack.uptime.alerts.tls/observability/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.tls/observability/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.tls/observability/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.tls/observability/rule/find", + "alerting:xpack.uptime.alerts.tls/observability/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.tls/observability/rule/getBackfill", + "alerting:xpack.uptime.alerts.tls/observability/rule/findBackfill", + "alerting:xpack.uptime.alerts.tls/observability/rule/findGaps", + "alerting:xpack.uptime.alerts.tls/alerts/rule/get", + "alerting:xpack.uptime.alerts.tls/alerts/rule/getRuleState", + "alerting:xpack.uptime.alerts.tls/alerts/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.tls/alerts/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.tls/alerts/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.tls/alerts/rule/find", + "alerting:xpack.uptime.alerts.tls/alerts/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.tls/alerts/rule/getBackfill", + "alerting:xpack.uptime.alerts.tls/alerts/rule/findBackfill", + "alerting:xpack.uptime.alerts.tls/alerts/rule/findGaps", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/get", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/getRuleState", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/find", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/getBackfill", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/findBackfill", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/rule/findGaps", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/get", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/getRuleState", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/find", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/getBackfill", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/findBackfill", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/rule/findGaps", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/get", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/getRuleState", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/find", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/getBackfill", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/findBackfill", + "alerting:xpack.uptime.alerts.monitorStatus/observability/rule/findGaps", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/get", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/getRuleState", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/find", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/getBackfill", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/findBackfill", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/rule/findGaps", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/get", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/getRuleState", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/find", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/getBackfill", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/findBackfill", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/rule/findGaps", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/get", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/getRuleState", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/getAlertSummary", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/getExecutionLog", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/getActionErrorLog", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/find", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/getRuleExecutionKPI", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/getBackfill", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/findBackfill", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/rule/findGaps", + "alerting:logs.alert.document.count/observability/rule/get", + "alerting:logs.alert.document.count/observability/rule/getRuleState", + "alerting:logs.alert.document.count/observability/rule/getAlertSummary", + "alerting:logs.alert.document.count/observability/rule/getExecutionLog", + "alerting:logs.alert.document.count/observability/rule/getActionErrorLog", + "alerting:logs.alert.document.count/observability/rule/find", + "alerting:logs.alert.document.count/observability/rule/getRuleExecutionKPI", + "alerting:logs.alert.document.count/observability/rule/getBackfill", + "alerting:logs.alert.document.count/observability/rule/findBackfill", + "alerting:logs.alert.document.count/observability/rule/findGaps", + "alerting:logs.alert.document.count/alerts/rule/get", + "alerting:logs.alert.document.count/alerts/rule/getRuleState", + "alerting:logs.alert.document.count/alerts/rule/getAlertSummary", + "alerting:logs.alert.document.count/alerts/rule/getExecutionLog", + "alerting:logs.alert.document.count/alerts/rule/getActionErrorLog", + "alerting:logs.alert.document.count/alerts/rule/find", + "alerting:logs.alert.document.count/alerts/rule/getRuleExecutionKPI", + "alerting:logs.alert.document.count/alerts/rule/getBackfill", + "alerting:logs.alert.document.count/alerts/rule/findBackfill", + "alerting:logs.alert.document.count/alerts/rule/findGaps", + "alerting:slo.rules.burnRate/observability/rule/get", + "alerting:slo.rules.burnRate/observability/rule/getRuleState", + "alerting:slo.rules.burnRate/observability/rule/getAlertSummary", + "alerting:slo.rules.burnRate/observability/rule/getExecutionLog", + "alerting:slo.rules.burnRate/observability/rule/getActionErrorLog", + "alerting:slo.rules.burnRate/observability/rule/find", + "alerting:slo.rules.burnRate/observability/rule/getRuleExecutionKPI", + "alerting:slo.rules.burnRate/observability/rule/getBackfill", + "alerting:slo.rules.burnRate/observability/rule/findBackfill", + "alerting:slo.rules.burnRate/observability/rule/findGaps", + "alerting:slo.rules.burnRate/alerts/rule/get", + "alerting:slo.rules.burnRate/alerts/rule/getRuleState", + "alerting:slo.rules.burnRate/alerts/rule/getAlertSummary", + "alerting:slo.rules.burnRate/alerts/rule/getExecutionLog", + "alerting:slo.rules.burnRate/alerts/rule/getActionErrorLog", + "alerting:slo.rules.burnRate/alerts/rule/find", + "alerting:slo.rules.burnRate/alerts/rule/getRuleExecutionKPI", + "alerting:slo.rules.burnRate/alerts/rule/getBackfill", + "alerting:slo.rules.burnRate/alerts/rule/findBackfill", + "alerting:slo.rules.burnRate/alerts/rule/findGaps", + "alerting:observability.rules.custom_threshold/observability/rule/get", + "alerting:observability.rules.custom_threshold/observability/rule/getRuleState", + "alerting:observability.rules.custom_threshold/observability/rule/getAlertSummary", + "alerting:observability.rules.custom_threshold/observability/rule/getExecutionLog", + "alerting:observability.rules.custom_threshold/observability/rule/getActionErrorLog", + "alerting:observability.rules.custom_threshold/observability/rule/find", + "alerting:observability.rules.custom_threshold/observability/rule/getRuleExecutionKPI", + "alerting:observability.rules.custom_threshold/observability/rule/getBackfill", + "alerting:observability.rules.custom_threshold/observability/rule/findBackfill", + "alerting:observability.rules.custom_threshold/observability/rule/findGaps", + "alerting:observability.rules.custom_threshold/alerts/rule/get", + "alerting:observability.rules.custom_threshold/alerts/rule/getRuleState", + "alerting:observability.rules.custom_threshold/alerts/rule/getAlertSummary", + "alerting:observability.rules.custom_threshold/alerts/rule/getExecutionLog", + "alerting:observability.rules.custom_threshold/alerts/rule/getActionErrorLog", + "alerting:observability.rules.custom_threshold/alerts/rule/find", + "alerting:observability.rules.custom_threshold/alerts/rule/getRuleExecutionKPI", + "alerting:observability.rules.custom_threshold/alerts/rule/getBackfill", + "alerting:observability.rules.custom_threshold/alerts/rule/findBackfill", + "alerting:observability.rules.custom_threshold/alerts/rule/findGaps", + "alerting:.es-query/observability/rule/get", + "alerting:.es-query/observability/rule/getRuleState", + "alerting:.es-query/observability/rule/getAlertSummary", + "alerting:.es-query/observability/rule/getExecutionLog", + "alerting:.es-query/observability/rule/getActionErrorLog", + "alerting:.es-query/observability/rule/find", + "alerting:.es-query/observability/rule/getRuleExecutionKPI", + "alerting:.es-query/observability/rule/getBackfill", + "alerting:.es-query/observability/rule/findBackfill", + "alerting:.es-query/observability/rule/findGaps", + "alerting:.es-query/alerts/rule/get", + "alerting:.es-query/alerts/rule/getRuleState", + "alerting:.es-query/alerts/rule/getAlertSummary", + "alerting:.es-query/alerts/rule/getExecutionLog", + "alerting:.es-query/alerts/rule/getActionErrorLog", + "alerting:.es-query/alerts/rule/find", + "alerting:.es-query/alerts/rule/getRuleExecutionKPI", + "alerting:.es-query/alerts/rule/getBackfill", + "alerting:.es-query/alerts/rule/findBackfill", + "alerting:.es-query/alerts/rule/findGaps", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/get", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/getRuleState", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/getAlertSummary", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/getExecutionLog", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/getActionErrorLog", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/find", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/getRuleExecutionKPI", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/getBackfill", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/findBackfill", + "alerting:xpack.ml.anomaly_detection_alert/observability/rule/findGaps", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/get", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/getRuleState", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/getAlertSummary", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/getExecutionLog", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/getActionErrorLog", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/find", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/getRuleExecutionKPI", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/getBackfill", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/findBackfill", + "alerting:xpack.ml.anomaly_detection_alert/alerts/rule/findGaps", + "alerting:apm.error_rate/observability/alert/get", + "alerting:apm.error_rate/observability/alert/find", + "alerting:apm.error_rate/observability/alert/getAuthorizedAlertsIndices", + "alerting:apm.error_rate/observability/alert/getAlertSummary", + "alerting:apm.error_rate/alerts/alert/get", + "alerting:apm.error_rate/alerts/alert/find", + "alerting:apm.error_rate/alerts/alert/getAuthorizedAlertsIndices", + "alerting:apm.error_rate/alerts/alert/getAlertSummary", + "alerting:apm.transaction_error_rate/observability/alert/get", + "alerting:apm.transaction_error_rate/observability/alert/find", + "alerting:apm.transaction_error_rate/observability/alert/getAuthorizedAlertsIndices", + "alerting:apm.transaction_error_rate/observability/alert/getAlertSummary", + "alerting:apm.transaction_error_rate/alerts/alert/get", + "alerting:apm.transaction_error_rate/alerts/alert/find", + "alerting:apm.transaction_error_rate/alerts/alert/getAuthorizedAlertsIndices", + "alerting:apm.transaction_error_rate/alerts/alert/getAlertSummary", + "alerting:apm.transaction_duration/observability/alert/get", + "alerting:apm.transaction_duration/observability/alert/find", + "alerting:apm.transaction_duration/observability/alert/getAuthorizedAlertsIndices", + "alerting:apm.transaction_duration/observability/alert/getAlertSummary", + "alerting:apm.transaction_duration/alerts/alert/get", + "alerting:apm.transaction_duration/alerts/alert/find", + "alerting:apm.transaction_duration/alerts/alert/getAuthorizedAlertsIndices", + "alerting:apm.transaction_duration/alerts/alert/getAlertSummary", + "alerting:apm.anomaly/observability/alert/get", + "alerting:apm.anomaly/observability/alert/find", + "alerting:apm.anomaly/observability/alert/getAuthorizedAlertsIndices", + "alerting:apm.anomaly/observability/alert/getAlertSummary", + "alerting:apm.anomaly/alerts/alert/get", + "alerting:apm.anomaly/alerts/alert/find", + "alerting:apm.anomaly/alerts/alert/getAuthorizedAlertsIndices", + "alerting:apm.anomaly/alerts/alert/getAlertSummary", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/alert/get", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/alert/find", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/alert/getAuthorizedAlertsIndices", + "alerting:xpack.synthetics.alerts.monitorStatus/observability/alert/getAlertSummary", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/alert/get", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/alert/find", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/alert/getAuthorizedAlertsIndices", + "alerting:xpack.synthetics.alerts.monitorStatus/alerts/alert/getAlertSummary", + "alerting:xpack.synthetics.alerts.tls/observability/alert/get", + "alerting:xpack.synthetics.alerts.tls/observability/alert/find", + "alerting:xpack.synthetics.alerts.tls/observability/alert/getAuthorizedAlertsIndices", + "alerting:xpack.synthetics.alerts.tls/observability/alert/getAlertSummary", + "alerting:xpack.synthetics.alerts.tls/alerts/alert/get", + "alerting:xpack.synthetics.alerts.tls/alerts/alert/find", + "alerting:xpack.synthetics.alerts.tls/alerts/alert/getAuthorizedAlertsIndices", + "alerting:xpack.synthetics.alerts.tls/alerts/alert/getAlertSummary", + "alerting:metrics.alert.threshold/observability/alert/get", + "alerting:metrics.alert.threshold/observability/alert/find", + "alerting:metrics.alert.threshold/observability/alert/getAuthorizedAlertsIndices", + "alerting:metrics.alert.threshold/observability/alert/getAlertSummary", + "alerting:metrics.alert.threshold/alerts/alert/get", + "alerting:metrics.alert.threshold/alerts/alert/find", + "alerting:metrics.alert.threshold/alerts/alert/getAuthorizedAlertsIndices", + "alerting:metrics.alert.threshold/alerts/alert/getAlertSummary", + "alerting:metrics.alert.inventory.threshold/observability/alert/get", + "alerting:metrics.alert.inventory.threshold/observability/alert/find", + "alerting:metrics.alert.inventory.threshold/observability/alert/getAuthorizedAlertsIndices", + "alerting:metrics.alert.inventory.threshold/observability/alert/getAlertSummary", + "alerting:metrics.alert.inventory.threshold/alerts/alert/get", + "alerting:metrics.alert.inventory.threshold/alerts/alert/find", + "alerting:metrics.alert.inventory.threshold/alerts/alert/getAuthorizedAlertsIndices", + "alerting:metrics.alert.inventory.threshold/alerts/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.tls/observability/alert/get", + "alerting:xpack.uptime.alerts.tls/observability/alert/find", + "alerting:xpack.uptime.alerts.tls/observability/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.tls/observability/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.tls/alerts/alert/get", + "alerting:xpack.uptime.alerts.tls/alerts/alert/find", + "alerting:xpack.uptime.alerts.tls/alerts/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.tls/alerts/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/alert/get", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/alert/find", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.tlsCertificate/observability/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/alert/get", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/alert/find", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.tlsCertificate/alerts/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.monitorStatus/observability/alert/get", + "alerting:xpack.uptime.alerts.monitorStatus/observability/alert/find", + "alerting:xpack.uptime.alerts.monitorStatus/observability/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.monitorStatus/observability/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/alert/get", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/alert/find", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.monitorStatus/alerts/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/alert/get", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/alert/find", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.durationAnomaly/observability/alert/getAlertSummary", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/alert/get", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/alert/find", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/alert/getAuthorizedAlertsIndices", + "alerting:xpack.uptime.alerts.durationAnomaly/alerts/alert/getAlertSummary", + "alerting:logs.alert.document.count/observability/alert/get", + "alerting:logs.alert.document.count/observability/alert/find", + "alerting:logs.alert.document.count/observability/alert/getAuthorizedAlertsIndices", + "alerting:logs.alert.document.count/observability/alert/getAlertSummary", + "alerting:logs.alert.document.count/alerts/alert/get", + "alerting:logs.alert.document.count/alerts/alert/find", + "alerting:logs.alert.document.count/alerts/alert/getAuthorizedAlertsIndices", + "alerting:logs.alert.document.count/alerts/alert/getAlertSummary", + "alerting:slo.rules.burnRate/observability/alert/get", + "alerting:slo.rules.burnRate/observability/alert/find", + "alerting:slo.rules.burnRate/observability/alert/getAuthorizedAlertsIndices", + "alerting:slo.rules.burnRate/observability/alert/getAlertSummary", + "alerting:slo.rules.burnRate/alerts/alert/get", + "alerting:slo.rules.burnRate/alerts/alert/find", + "alerting:slo.rules.burnRate/alerts/alert/getAuthorizedAlertsIndices", + "alerting:slo.rules.burnRate/alerts/alert/getAlertSummary", + "alerting:observability.rules.custom_threshold/observability/alert/get", + "alerting:observability.rules.custom_threshold/observability/alert/find", + "alerting:observability.rules.custom_threshold/observability/alert/getAuthorizedAlertsIndices", + "alerting:observability.rules.custom_threshold/observability/alert/getAlertSummary", + "alerting:observability.rules.custom_threshold/alerts/alert/get", + "alerting:observability.rules.custom_threshold/alerts/alert/find", + "alerting:observability.rules.custom_threshold/alerts/alert/getAuthorizedAlertsIndices", + "alerting:observability.rules.custom_threshold/alerts/alert/getAlertSummary", + "alerting:.es-query/observability/alert/get", + "alerting:.es-query/observability/alert/find", + "alerting:.es-query/observability/alert/getAuthorizedAlertsIndices", + "alerting:.es-query/observability/alert/getAlertSummary", + "alerting:.es-query/alerts/alert/get", + "alerting:.es-query/alerts/alert/find", + "alerting:.es-query/alerts/alert/getAuthorizedAlertsIndices", + "alerting:.es-query/alerts/alert/getAlertSummary", + "alerting:xpack.ml.anomaly_detection_alert/observability/alert/get", + "alerting:xpack.ml.anomaly_detection_alert/observability/alert/find", + "alerting:xpack.ml.anomaly_detection_alert/observability/alert/getAuthorizedAlertsIndices", + "alerting:xpack.ml.anomaly_detection_alert/observability/alert/getAlertSummary", + "alerting:xpack.ml.anomaly_detection_alert/alerts/alert/get", + "alerting:xpack.ml.anomaly_detection_alert/alerts/alert/find", + "alerting:xpack.ml.anomaly_detection_alert/alerts/alert/getAuthorizedAlertsIndices", + "alerting:xpack.ml.anomaly_detection_alert/alerts/alert/getAlertSummary", + "ui:discover_v2/show", + "ui:discover_v2/createShortUrl", + "ui:savedQueryManagement/showQueries", ], "store_search_session": Array [ "login:", @@ -5099,7 +9411,8 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:search-session/delete", "saved_object:search-session/bulk_delete", "saved_object:search-session/share_to_space", - "ui:dashboard/storeSearchSession", + "ui:discover/storeSearchSession", + "ui:discover_v2/storeSearchSession", ], "url_create": Array [ "login:", @@ -5115,15 +9428,14 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/delete", "saved_object:url/bulk_delete", "saved_object:url/share_to_space", - "ui:dashboard/createShortUrl", + "ui:discover/createShortUrl", + "ui:discover_v2/createShortUrl", ], }, - "discover": Object { + "discover_v2": Object { "all": Array [ "login:", "api:fileUpload:analyzeFile", - "api:savedQuery:manage", - "api:savedQuery:read", "api:store_search_session", "api:generateReport", "app:discover", @@ -5145,18 +9457,6 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:search/delete", "saved_object:search/bulk_delete", "saved_object:search/share_to_space", - "saved_object:query/bulk_get", - "saved_object:query/get", - "saved_object:query/find", - "saved_object:query/open_point_in_time", - "saved_object:query/close_point_in_time", - "saved_object:query/create", - "saved_object:query/bulk_create", - "saved_object:query/update", - "saved_object:query/bulk_update", - "saved_object:query/delete", - "saved_object:query/bulk_delete", - "saved_object:query/share_to_space", "saved_object:telemetry/bulk_get", "saved_object:telemetry/get", "saved_object:telemetry/find", @@ -5218,12 +9518,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:cloud/find", "saved_object:cloud/open_point_in_time", "saved_object:cloud/close_point_in_time", - "ui:discover/show", - "ui:discover/save", - "ui:discover/saveQuery", - "ui:discover/createShortUrl", - "ui:discover/storeSearchSession", - "ui:discover/generateCsv", + "ui:discover_v2/show", + "ui:discover_v2/save", + "ui:discover_v2/createShortUrl", + "ui:discover_v2/storeSearchSession", + "ui:discover_v2/generateCsv", "api:rac", "app:observability", "ui:catalogue/observability", @@ -6425,13 +10724,11 @@ export default function ({ getService }: FtrProviderContext) { "login:", "api:generateReport", "ui:management/insightsAndAlerting/reporting", - "ui:discover/generateCsv", + "ui:discover_v2/generateCsv", ], "minimal_all": Array [ "login:", "api:fileUpload:analyzeFile", - "api:savedQuery:manage", - "api:savedQuery:read", "app:discover", "app:kibana", "ui:catalogue/discover", @@ -6449,18 +10746,6 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:search/delete", "saved_object:search/bulk_delete", "saved_object:search/share_to_space", - "saved_object:query/bulk_get", - "saved_object:query/get", - "saved_object:query/find", - "saved_object:query/open_point_in_time", - "saved_object:query/close_point_in_time", - "saved_object:query/create", - "saved_object:query/bulk_create", - "saved_object:query/update", - "saved_object:query/bulk_update", - "saved_object:query/delete", - "saved_object:query/bulk_delete", - "saved_object:query/share_to_space", "saved_object:telemetry/bulk_get", "saved_object:telemetry/get", "saved_object:telemetry/find", @@ -6503,9 +10788,8 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:cloud/find", "saved_object:cloud/open_point_in_time", "saved_object:cloud/close_point_in_time", - "ui:discover/show", - "ui:discover/save", - "ui:discover/saveQuery", + "ui:discover_v2/show", + "ui:discover_v2/save", "api:rac", "app:observability", "ui:catalogue/observability", @@ -7705,7 +11989,6 @@ export default function ({ getService }: FtrProviderContext) { ], "minimal_read": Array [ "login:", - "api:savedQuery:read", "app:discover", "app:kibana", "ui:catalogue/discover", @@ -7721,11 +12004,6 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:search/find", "saved_object:search/open_point_in_time", "saved_object:search/close_point_in_time", - "saved_object:query/bulk_get", - "saved_object:query/get", - "saved_object:query/find", - "saved_object:query/open_point_in_time", - "saved_object:query/close_point_in_time", "saved_object:config/bulk_get", "saved_object:config/get", "saved_object:config/find", @@ -7756,7 +12034,7 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:cloud/find", "saved_object:cloud/open_point_in_time", "saved_object:cloud/close_point_in_time", - "ui:discover/show", + "ui:discover_v2/show", "api:rac", "app:observability", "ui:catalogue/observability", @@ -8241,7 +12519,6 @@ export default function ({ getService }: FtrProviderContext) { ], "read": Array [ "login:", - "api:savedQuery:read", "app:discover", "app:kibana", "ui:catalogue/discover", @@ -8269,11 +12546,6 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:search/find", "saved_object:search/open_point_in_time", "saved_object:search/close_point_in_time", - "saved_object:query/bulk_get", - "saved_object:query/get", - "saved_object:query/find", - "saved_object:query/open_point_in_time", - "saved_object:query/close_point_in_time", "saved_object:config/bulk_get", "saved_object:config/get", "saved_object:config/find", @@ -8299,8 +12571,8 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:cloud/find", "saved_object:cloud/open_point_in_time", "saved_object:cloud/close_point_in_time", - "ui:discover/show", - "ui:discover/createShortUrl", + "ui:discover_v2/show", + "ui:discover_v2/createShortUrl", "api:rac", "app:observability", "ui:catalogue/observability", @@ -8799,7 +13071,7 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:search-session/delete", "saved_object:search-session/bulk_delete", "saved_object:search-session/share_to_space", - "ui:discover/storeSearchSession", + "ui:discover_v2/storeSearchSession", ], "url_create": Array [ "login:", @@ -8815,7 +13087,7 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/delete", "saved_object:url/bulk_delete", "saved_object:url/share_to_space", - "ui:discover/createShortUrl", + "ui:discover_v2/createShortUrl", ], }, "fleetv2": Object { @@ -15604,9 +19876,9 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:cloud/close_point_in_time", "api:downloadCsv", "ui:management/insightsAndAlerting/reporting", - "ui:dashboard/downloadCsv", + "ui:dashboard_v2/downloadCsv", "api:generateReport", - "ui:discover/generateCsv", + "ui:discover_v2/generateCsv", ], "minimal_all": Array [ "login:", @@ -15649,9 +19921,9 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:cloud/close_point_in_time", "api:downloadCsv", "ui:management/insightsAndAlerting/reporting", - "ui:dashboard/downloadCsv", + "ui:dashboard_v2/downloadCsv", "api:generateReport", - "ui:discover/generateCsv", + "ui:discover_v2/generateCsv", ], "minimal_read": Array [ "login:", diff --git a/x-pack/test_serverless/api_integration/test_suites/search/platform_security/authorization.ts b/x-pack/test_serverless/api_integration/test_suites/search/platform_security/authorization.ts index 0719dbc5bccf2..97e0411bc99fc 100644 --- a/x-pack/test_serverless/api_integration/test_suites/search/platform_security/authorization.ts +++ b/x-pack/test_serverless/api_integration/test_suites/search/platform_security/authorization.ts @@ -30,7 +30,13 @@ export default function ({ getService }: FtrProviderContext) { // The following features are composed of other features in a way that is // specific to the search solution. - const compositeFeatureIds = ['dashboard', 'discover', 'reporting']; + const compositeFeatureIds = [ + 'dashboard', + 'dashboard_v2', + 'discover', + 'discover_v2', + 'reporting', + ]; const features = Object.fromEntries( Object.entries(body.features).filter(([key]) => compositeFeatureIds.includes(key)) @@ -190,6 +196,10 @@ export default function ({ getService }: FtrProviderContext) { "ui:maps/save", "ui:maps/show", "ui:maps/saveQuery", + "ui:maps_v2/save", + "ui:maps_v2/show", + "ui:savedQueryManagement/showQueries", + "ui:savedQueryManagement/saveQuery", "app:visualize", "app:lens", "ui:catalogue/visualize", @@ -215,18 +225,32 @@ export default function ({ getService }: FtrProviderContext) { "ui:visualize/saveQuery", "ui:visualize/createShortUrl", "ui:visualize/generateScreenshot", + "ui:visualize_v2/show", + "ui:visualize_v2/delete", + "ui:visualize_v2/save", + "ui:visualize_v2/createShortUrl", + "ui:visualize_v2/generateScreenshot", + "ui:dashboard_v2/createNew", + "ui:dashboard_v2/show", + "ui:dashboard_v2/showWriteControls", + "ui:dashboard_v2/createShortUrl", + "ui:dashboard_v2/storeSearchSession", + "ui:dashboard_v2/generateScreenshot", + "ui:dashboard_v2/downloadCsv", ], "download_csv_report": Array [ "login:", "api:downloadCsv", "ui:management/insightsAndAlerting/reporting", "ui:dashboard/downloadCsv", + "ui:dashboard_v2/downloadCsv", ], "generate_report": Array [ "login:", "api:generateReport", "ui:management/insightsAndAlerting/reporting", "ui:dashboard/generateScreenshot", + "ui:dashboard_v2/generateScreenshot", ], "minimal_all": Array [ "login:", @@ -352,6 +376,10 @@ export default function ({ getService }: FtrProviderContext) { "ui:maps/save", "ui:maps/show", "ui:maps/saveQuery", + "ui:maps_v2/save", + "ui:maps_v2/show", + "ui:savedQueryManagement/showQueries", + "ui:savedQueryManagement/saveQuery", "api:generateReport", "app:visualize", "app:lens", @@ -386,6 +414,14 @@ export default function ({ getService }: FtrProviderContext) { "ui:visualize/saveQuery", "ui:visualize/createShortUrl", "ui:visualize/generateScreenshot", + "ui:visualize_v2/show", + "ui:visualize_v2/delete", + "ui:visualize_v2/save", + "ui:visualize_v2/createShortUrl", + "ui:visualize_v2/generateScreenshot", + "ui:dashboard_v2/createNew", + "ui:dashboard_v2/show", + "ui:dashboard_v2/showWriteControls", ], "minimal_read": Array [ "login:", @@ -437,16 +473,993 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:dashboard/find", "saved_object:dashboard/open_point_in_time", "saved_object:dashboard/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", + "saved_object:query/bulk_get", + "saved_object:query/get", + "saved_object:query/find", + "saved_object:query/open_point_in_time", + "saved_object:query/close_point_in_time", + "saved_object:config/bulk_get", + "saved_object:config/get", + "saved_object:config/find", + "saved_object:config/open_point_in_time", + "saved_object:config/close_point_in_time", + "saved_object:config-global/bulk_get", + "saved_object:config-global/get", + "saved_object:config-global/find", + "saved_object:config-global/open_point_in_time", + "saved_object:config-global/close_point_in_time", + "saved_object:telemetry/bulk_get", + "saved_object:telemetry/get", + "saved_object:telemetry/find", + "saved_object:telemetry/open_point_in_time", + "saved_object:telemetry/close_point_in_time", + "saved_object:url/bulk_get", + "saved_object:url/get", + "saved_object:url/find", + "saved_object:url/open_point_in_time", + "saved_object:url/close_point_in_time", + "saved_object:cloud/bulk_get", + "saved_object:cloud/get", + "saved_object:cloud/find", + "saved_object:cloud/open_point_in_time", + "saved_object:cloud/close_point_in_time", + "ui:dashboard/show", + "app:maps", + "ui:catalogue/maps", + "ui:navLinks/maps", + "ui:maps/show", + "ui:maps_v2/show", + "ui:savedQueryManagement/showQueries", + "app:visualize", + "app:lens", + "ui:catalogue/visualize", + "ui:navLinks/visualize", + "ui:navLinks/lens", + "saved_object:url/create", + "saved_object:url/bulk_create", + "saved_object:url/update", + "saved_object:url/bulk_update", + "saved_object:url/delete", + "saved_object:url/bulk_delete", + "saved_object:url/share_to_space", + "ui:visualize/show", + "ui:visualize/createShortUrl", + "ui:visualize_v2/show", + "ui:visualize_v2/createShortUrl", + "ui:dashboard_v2/show", + ], + "read": Array [ + "login:", + "api:bulkGetUserProfiles", + "api:dashboardUsageStats", + "api:savedQuery:read", + "app:dashboards", + "app:kibana", + "ui:catalogue/dashboard", + "ui:navLinks/dashboards", + "ui:navLinks/kibana", + "saved_object:url/bulk_get", + "saved_object:url/get", + "saved_object:url/find", + "saved_object:url/open_point_in_time", + "saved_object:url/close_point_in_time", + "saved_object:url/create", + "saved_object:url/bulk_create", + "saved_object:url/update", + "saved_object:url/bulk_update", + "saved_object:url/delete", + "saved_object:url/bulk_delete", + "saved_object:url/share_to_space", + "saved_object:index-pattern/bulk_get", + "saved_object:index-pattern/get", + "saved_object:index-pattern/find", + "saved_object:index-pattern/open_point_in_time", + "saved_object:index-pattern/close_point_in_time", + "saved_object:search/bulk_get", + "saved_object:search/get", + "saved_object:search/find", + "saved_object:search/open_point_in_time", + "saved_object:search/close_point_in_time", + "saved_object:visualization/bulk_get", + "saved_object:visualization/get", + "saved_object:visualization/find", + "saved_object:visualization/open_point_in_time", + "saved_object:visualization/close_point_in_time", + "saved_object:canvas-workpad/bulk_get", + "saved_object:canvas-workpad/get", + "saved_object:canvas-workpad/find", + "saved_object:canvas-workpad/open_point_in_time", + "saved_object:canvas-workpad/close_point_in_time", + "saved_object:lens/bulk_get", + "saved_object:lens/get", + "saved_object:lens/find", + "saved_object:lens/open_point_in_time", + "saved_object:lens/close_point_in_time", + "saved_object:links/bulk_get", + "saved_object:links/get", + "saved_object:links/find", + "saved_object:links/open_point_in_time", + "saved_object:links/close_point_in_time", + "saved_object:map/bulk_get", + "saved_object:map/get", + "saved_object:map/find", + "saved_object:map/open_point_in_time", + "saved_object:map/close_point_in_time", + "saved_object:dashboard/bulk_get", + "saved_object:dashboard/get", + "saved_object:dashboard/find", + "saved_object:dashboard/open_point_in_time", + "saved_object:dashboard/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", + "saved_object:query/bulk_get", + "saved_object:query/get", + "saved_object:query/find", + "saved_object:query/open_point_in_time", + "saved_object:query/close_point_in_time", + "saved_object:config/bulk_get", + "saved_object:config/get", + "saved_object:config/find", + "saved_object:config/open_point_in_time", + "saved_object:config/close_point_in_time", + "saved_object:config-global/bulk_get", + "saved_object:config-global/get", + "saved_object:config-global/find", + "saved_object:config-global/open_point_in_time", + "saved_object:config-global/close_point_in_time", + "saved_object:telemetry/bulk_get", + "saved_object:telemetry/get", + "saved_object:telemetry/find", + "saved_object:telemetry/open_point_in_time", + "saved_object:telemetry/close_point_in_time", + "saved_object:cloud/bulk_get", + "saved_object:cloud/get", + "saved_object:cloud/find", + "saved_object:cloud/open_point_in_time", + "saved_object:cloud/close_point_in_time", + "ui:dashboard/show", + "ui:dashboard/createShortUrl", + "app:maps", + "ui:catalogue/maps", + "ui:navLinks/maps", + "ui:maps/show", + "ui:maps_v2/show", + "ui:savedQueryManagement/showQueries", + "app:visualize", + "app:lens", + "ui:catalogue/visualize", + "ui:navLinks/visualize", + "ui:navLinks/lens", + "ui:visualize/show", + "ui:visualize/createShortUrl", + "ui:visualize_v2/show", + "ui:visualize_v2/createShortUrl", + "ui:dashboard_v2/show", + "ui:dashboard_v2/createShortUrl", + ], + "store_search_session": Array [ + "login:", + "api:store_search_session", + "ui:management/kibana/search_sessions", + "saved_object:search-session/bulk_get", + "saved_object:search-session/get", + "saved_object:search-session/find", + "saved_object:search-session/open_point_in_time", + "saved_object:search-session/close_point_in_time", + "saved_object:search-session/create", + "saved_object:search-session/bulk_create", + "saved_object:search-session/update", + "saved_object:search-session/bulk_update", + "saved_object:search-session/delete", + "saved_object:search-session/bulk_delete", + "saved_object:search-session/share_to_space", + "ui:dashboard/storeSearchSession", + "ui:dashboard_v2/storeSearchSession", + ], + "url_create": Array [ + "login:", + "saved_object:url/bulk_get", + "saved_object:url/get", + "saved_object:url/find", + "saved_object:url/open_point_in_time", + "saved_object:url/close_point_in_time", + "saved_object:url/create", + "saved_object:url/bulk_create", + "saved_object:url/update", + "saved_object:url/bulk_update", + "saved_object:url/delete", + "saved_object:url/bulk_delete", + "saved_object:url/share_to_space", + "ui:dashboard/createShortUrl", + "ui:dashboard_v2/createShortUrl", + ], + }, + "dashboard_v2": Object { + "all": Array [ + "login:", + "api:bulkGetUserProfiles", + "api:dashboardUsageStats", + "api:store_search_session", + "api:generateReport", + "api:downloadCsv", + "app:dashboards", + "app:kibana", + "ui:catalogue/dashboard", + "ui:management/kibana/search_sessions", + "ui:management/insightsAndAlerting/reporting", + "ui:navLinks/dashboards", + "ui:navLinks/kibana", + "saved_object:dashboard/bulk_get", + "saved_object:dashboard/get", + "saved_object:dashboard/find", + "saved_object:dashboard/open_point_in_time", + "saved_object:dashboard/close_point_in_time", + "saved_object:dashboard/create", + "saved_object:dashboard/bulk_create", + "saved_object:dashboard/update", + "saved_object:dashboard/bulk_update", + "saved_object:dashboard/delete", + "saved_object:dashboard/bulk_delete", + "saved_object:dashboard/share_to_space", + "saved_object:telemetry/bulk_get", + "saved_object:telemetry/get", + "saved_object:telemetry/find", + "saved_object:telemetry/open_point_in_time", + "saved_object:telemetry/close_point_in_time", + "saved_object:telemetry/create", + "saved_object:telemetry/bulk_create", + "saved_object:telemetry/update", + "saved_object:telemetry/bulk_update", + "saved_object:telemetry/delete", + "saved_object:telemetry/bulk_delete", + "saved_object:telemetry/share_to_space", + "saved_object:url/bulk_get", + "saved_object:url/get", + "saved_object:url/find", + "saved_object:url/open_point_in_time", + "saved_object:url/close_point_in_time", + "saved_object:url/create", + "saved_object:url/bulk_create", + "saved_object:url/update", + "saved_object:url/bulk_update", + "saved_object:url/delete", + "saved_object:url/bulk_delete", + "saved_object:url/share_to_space", + "saved_object:search-session/bulk_get", + "saved_object:search-session/get", + "saved_object:search-session/find", + "saved_object:search-session/open_point_in_time", + "saved_object:search-session/close_point_in_time", + "saved_object:search-session/create", + "saved_object:search-session/bulk_create", + "saved_object:search-session/update", + "saved_object:search-session/bulk_update", + "saved_object:search-session/delete", + "saved_object:search-session/bulk_delete", + "saved_object:search-session/share_to_space", + "saved_object:index-pattern/bulk_get", + "saved_object:index-pattern/get", + "saved_object:index-pattern/find", + "saved_object:index-pattern/open_point_in_time", + "saved_object:index-pattern/close_point_in_time", + "saved_object:search/bulk_get", + "saved_object:search/get", + "saved_object:search/find", + "saved_object:search/open_point_in_time", + "saved_object:search/close_point_in_time", + "saved_object:visualization/bulk_get", + "saved_object:visualization/get", + "saved_object:visualization/find", + "saved_object:visualization/open_point_in_time", + "saved_object:visualization/close_point_in_time", + "saved_object:canvas-workpad/bulk_get", + "saved_object:canvas-workpad/get", + "saved_object:canvas-workpad/find", + "saved_object:canvas-workpad/open_point_in_time", + "saved_object:canvas-workpad/close_point_in_time", + "saved_object:lens/bulk_get", + "saved_object:lens/get", + "saved_object:lens/find", + "saved_object:lens/open_point_in_time", + "saved_object:lens/close_point_in_time", + "saved_object:links/bulk_get", + "saved_object:links/get", + "saved_object:links/find", + "saved_object:links/open_point_in_time", + "saved_object:links/close_point_in_time", + "saved_object:map/bulk_get", + "saved_object:map/get", + "saved_object:map/find", + "saved_object:map/open_point_in_time", + "saved_object:map/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", + "saved_object:config/bulk_get", + "saved_object:config/get", + "saved_object:config/find", + "saved_object:config/open_point_in_time", + "saved_object:config/close_point_in_time", + "saved_object:config-global/bulk_get", + "saved_object:config-global/get", + "saved_object:config-global/find", + "saved_object:config-global/open_point_in_time", + "saved_object:config-global/close_point_in_time", + "saved_object:cloud/bulk_get", + "saved_object:cloud/get", + "saved_object:cloud/find", + "saved_object:cloud/open_point_in_time", + "saved_object:cloud/close_point_in_time", + "ui:dashboard_v2/createNew", + "ui:dashboard_v2/show", + "ui:dashboard_v2/showWriteControls", + "ui:dashboard_v2/createShortUrl", + "ui:dashboard_v2/storeSearchSession", + "ui:dashboard_v2/generateScreenshot", + "ui:dashboard_v2/downloadCsv", + "app:maps", + "ui:catalogue/maps", + "ui:navLinks/maps", + "saved_object:map/create", + "saved_object:map/bulk_create", + "saved_object:map/update", + "saved_object:map/bulk_update", + "saved_object:map/delete", + "saved_object:map/bulk_delete", + "saved_object:map/share_to_space", + "ui:maps_v2/save", + "ui:maps_v2/show", + "app:visualize", + "app:lens", + "ui:catalogue/visualize", + "ui:navLinks/visualize", + "ui:navLinks/lens", + "saved_object:visualization/create", + "saved_object:visualization/bulk_create", + "saved_object:visualization/update", + "saved_object:visualization/bulk_update", + "saved_object:visualization/delete", + "saved_object:visualization/bulk_delete", + "saved_object:visualization/share_to_space", + "saved_object:lens/create", + "saved_object:lens/bulk_create", + "saved_object:lens/update", + "saved_object:lens/bulk_update", + "saved_object:lens/delete", + "saved_object:lens/bulk_delete", + "saved_object:lens/share_to_space", + "ui:visualize_v2/show", + "ui:visualize_v2/delete", + "ui:visualize_v2/save", + "ui:visualize_v2/createShortUrl", + "ui:visualize_v2/generateScreenshot", + ], + "download_csv_report": Array [ + "login:", + "api:downloadCsv", + "ui:management/insightsAndAlerting/reporting", + "ui:dashboard_v2/downloadCsv", + ], + "generate_report": Array [ + "login:", + "api:generateReport", + "ui:management/insightsAndAlerting/reporting", + "ui:dashboard_v2/generateScreenshot", + ], + "minimal_all": Array [ + "login:", + "api:bulkGetUserProfiles", + "api:dashboardUsageStats", + "app:dashboards", + "app:kibana", + "ui:catalogue/dashboard", + "ui:navLinks/dashboards", + "ui:navLinks/kibana", + "saved_object:dashboard/bulk_get", + "saved_object:dashboard/get", + "saved_object:dashboard/find", + "saved_object:dashboard/open_point_in_time", + "saved_object:dashboard/close_point_in_time", + "saved_object:dashboard/create", + "saved_object:dashboard/bulk_create", + "saved_object:dashboard/update", + "saved_object:dashboard/bulk_update", + "saved_object:dashboard/delete", + "saved_object:dashboard/bulk_delete", + "saved_object:dashboard/share_to_space", + "saved_object:telemetry/bulk_get", + "saved_object:telemetry/get", + "saved_object:telemetry/find", + "saved_object:telemetry/open_point_in_time", + "saved_object:telemetry/close_point_in_time", + "saved_object:telemetry/create", + "saved_object:telemetry/bulk_create", + "saved_object:telemetry/update", + "saved_object:telemetry/bulk_update", + "saved_object:telemetry/delete", + "saved_object:telemetry/bulk_delete", + "saved_object:telemetry/share_to_space", + "saved_object:index-pattern/bulk_get", + "saved_object:index-pattern/get", + "saved_object:index-pattern/find", + "saved_object:index-pattern/open_point_in_time", + "saved_object:index-pattern/close_point_in_time", + "saved_object:search/bulk_get", + "saved_object:search/get", + "saved_object:search/find", + "saved_object:search/open_point_in_time", + "saved_object:search/close_point_in_time", + "saved_object:visualization/bulk_get", + "saved_object:visualization/get", + "saved_object:visualization/find", + "saved_object:visualization/open_point_in_time", + "saved_object:visualization/close_point_in_time", + "saved_object:canvas-workpad/bulk_get", + "saved_object:canvas-workpad/get", + "saved_object:canvas-workpad/find", + "saved_object:canvas-workpad/open_point_in_time", + "saved_object:canvas-workpad/close_point_in_time", + "saved_object:lens/bulk_get", + "saved_object:lens/get", + "saved_object:lens/find", + "saved_object:lens/open_point_in_time", + "saved_object:lens/close_point_in_time", + "saved_object:links/bulk_get", + "saved_object:links/get", + "saved_object:links/find", + "saved_object:links/open_point_in_time", + "saved_object:links/close_point_in_time", + "saved_object:map/bulk_get", + "saved_object:map/get", + "saved_object:map/find", + "saved_object:map/open_point_in_time", + "saved_object:map/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", + "saved_object:config/bulk_get", + "saved_object:config/get", + "saved_object:config/find", + "saved_object:config/open_point_in_time", + "saved_object:config/close_point_in_time", + "saved_object:config-global/bulk_get", + "saved_object:config-global/get", + "saved_object:config-global/find", + "saved_object:config-global/open_point_in_time", + "saved_object:config-global/close_point_in_time", + "saved_object:url/bulk_get", + "saved_object:url/get", + "saved_object:url/find", + "saved_object:url/open_point_in_time", + "saved_object:url/close_point_in_time", + "saved_object:cloud/bulk_get", + "saved_object:cloud/get", + "saved_object:cloud/find", + "saved_object:cloud/open_point_in_time", + "saved_object:cloud/close_point_in_time", + "ui:dashboard_v2/createNew", + "ui:dashboard_v2/show", + "ui:dashboard_v2/showWriteControls", + "app:maps", + "ui:catalogue/maps", + "ui:navLinks/maps", + "saved_object:map/create", + "saved_object:map/bulk_create", + "saved_object:map/update", + "saved_object:map/bulk_update", + "saved_object:map/delete", + "saved_object:map/bulk_delete", + "saved_object:map/share_to_space", + "ui:maps_v2/save", + "ui:maps_v2/show", + "api:generateReport", + "app:visualize", + "app:lens", + "ui:catalogue/visualize", + "ui:management/insightsAndAlerting/reporting", + "ui:navLinks/visualize", + "ui:navLinks/lens", + "saved_object:visualization/create", + "saved_object:visualization/bulk_create", + "saved_object:visualization/update", + "saved_object:visualization/bulk_update", + "saved_object:visualization/delete", + "saved_object:visualization/bulk_delete", + "saved_object:visualization/share_to_space", + "saved_object:lens/create", + "saved_object:lens/bulk_create", + "saved_object:lens/update", + "saved_object:lens/bulk_update", + "saved_object:lens/delete", + "saved_object:lens/bulk_delete", + "saved_object:lens/share_to_space", + "saved_object:url/create", + "saved_object:url/bulk_create", + "saved_object:url/update", + "saved_object:url/bulk_update", + "saved_object:url/delete", + "saved_object:url/bulk_delete", + "saved_object:url/share_to_space", + "ui:visualize_v2/show", + "ui:visualize_v2/delete", + "ui:visualize_v2/save", + "ui:visualize_v2/createShortUrl", + "ui:visualize_v2/generateScreenshot", + ], + "minimal_read": Array [ + "login:", + "api:bulkGetUserProfiles", + "api:dashboardUsageStats", + "app:dashboards", + "app:kibana", + "ui:catalogue/dashboard", + "ui:navLinks/dashboards", + "ui:navLinks/kibana", + "saved_object:index-pattern/bulk_get", + "saved_object:index-pattern/get", + "saved_object:index-pattern/find", + "saved_object:index-pattern/open_point_in_time", + "saved_object:index-pattern/close_point_in_time", + "saved_object:search/bulk_get", + "saved_object:search/get", + "saved_object:search/find", + "saved_object:search/open_point_in_time", + "saved_object:search/close_point_in_time", + "saved_object:visualization/bulk_get", + "saved_object:visualization/get", + "saved_object:visualization/find", + "saved_object:visualization/open_point_in_time", + "saved_object:visualization/close_point_in_time", + "saved_object:canvas-workpad/bulk_get", + "saved_object:canvas-workpad/get", + "saved_object:canvas-workpad/find", + "saved_object:canvas-workpad/open_point_in_time", + "saved_object:canvas-workpad/close_point_in_time", + "saved_object:lens/bulk_get", + "saved_object:lens/get", + "saved_object:lens/find", + "saved_object:lens/open_point_in_time", + "saved_object:lens/close_point_in_time", + "saved_object:links/bulk_get", + "saved_object:links/get", + "saved_object:links/find", + "saved_object:links/open_point_in_time", + "saved_object:links/close_point_in_time", + "saved_object:map/bulk_get", + "saved_object:map/get", + "saved_object:map/find", + "saved_object:map/open_point_in_time", + "saved_object:map/close_point_in_time", + "saved_object:dashboard/bulk_get", + "saved_object:dashboard/get", + "saved_object:dashboard/find", + "saved_object:dashboard/open_point_in_time", + "saved_object:dashboard/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", + "saved_object:config/bulk_get", + "saved_object:config/get", + "saved_object:config/find", + "saved_object:config/open_point_in_time", + "saved_object:config/close_point_in_time", + "saved_object:config-global/bulk_get", + "saved_object:config-global/get", + "saved_object:config-global/find", + "saved_object:config-global/open_point_in_time", + "saved_object:config-global/close_point_in_time", + "saved_object:telemetry/bulk_get", + "saved_object:telemetry/get", + "saved_object:telemetry/find", + "saved_object:telemetry/open_point_in_time", + "saved_object:telemetry/close_point_in_time", + "saved_object:url/bulk_get", + "saved_object:url/get", + "saved_object:url/find", + "saved_object:url/open_point_in_time", + "saved_object:url/close_point_in_time", + "saved_object:cloud/bulk_get", + "saved_object:cloud/get", + "saved_object:cloud/find", + "saved_object:cloud/open_point_in_time", + "saved_object:cloud/close_point_in_time", + "ui:dashboard_v2/show", + "app:maps", + "ui:catalogue/maps", + "ui:navLinks/maps", + "ui:maps_v2/show", + "app:visualize", + "app:lens", + "ui:catalogue/visualize", + "ui:navLinks/visualize", + "ui:navLinks/lens", + "saved_object:url/create", + "saved_object:url/bulk_create", + "saved_object:url/update", + "saved_object:url/bulk_update", + "saved_object:url/delete", + "saved_object:url/bulk_delete", + "saved_object:url/share_to_space", + "ui:visualize_v2/show", + "ui:visualize_v2/createShortUrl", + ], + "read": Array [ + "login:", + "api:bulkGetUserProfiles", + "api:dashboardUsageStats", + "app:dashboards", + "app:kibana", + "ui:catalogue/dashboard", + "ui:navLinks/dashboards", + "ui:navLinks/kibana", + "saved_object:url/bulk_get", + "saved_object:url/get", + "saved_object:url/find", + "saved_object:url/open_point_in_time", + "saved_object:url/close_point_in_time", + "saved_object:url/create", + "saved_object:url/bulk_create", + "saved_object:url/update", + "saved_object:url/bulk_update", + "saved_object:url/delete", + "saved_object:url/bulk_delete", + "saved_object:url/share_to_space", + "saved_object:index-pattern/bulk_get", + "saved_object:index-pattern/get", + "saved_object:index-pattern/find", + "saved_object:index-pattern/open_point_in_time", + "saved_object:index-pattern/close_point_in_time", + "saved_object:search/bulk_get", + "saved_object:search/get", + "saved_object:search/find", + "saved_object:search/open_point_in_time", + "saved_object:search/close_point_in_time", + "saved_object:visualization/bulk_get", + "saved_object:visualization/get", + "saved_object:visualization/find", + "saved_object:visualization/open_point_in_time", + "saved_object:visualization/close_point_in_time", + "saved_object:canvas-workpad/bulk_get", + "saved_object:canvas-workpad/get", + "saved_object:canvas-workpad/find", + "saved_object:canvas-workpad/open_point_in_time", + "saved_object:canvas-workpad/close_point_in_time", + "saved_object:lens/bulk_get", + "saved_object:lens/get", + "saved_object:lens/find", + "saved_object:lens/open_point_in_time", + "saved_object:lens/close_point_in_time", + "saved_object:links/bulk_get", + "saved_object:links/get", + "saved_object:links/find", + "saved_object:links/open_point_in_time", + "saved_object:links/close_point_in_time", + "saved_object:map/bulk_get", + "saved_object:map/get", + "saved_object:map/find", + "saved_object:map/open_point_in_time", + "saved_object:map/close_point_in_time", + "saved_object:dashboard/bulk_get", + "saved_object:dashboard/get", + "saved_object:dashboard/find", + "saved_object:dashboard/open_point_in_time", + "saved_object:dashboard/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", + "saved_object:config/bulk_get", + "saved_object:config/get", + "saved_object:config/find", + "saved_object:config/open_point_in_time", + "saved_object:config/close_point_in_time", + "saved_object:config-global/bulk_get", + "saved_object:config-global/get", + "saved_object:config-global/find", + "saved_object:config-global/open_point_in_time", + "saved_object:config-global/close_point_in_time", + "saved_object:telemetry/bulk_get", + "saved_object:telemetry/get", + "saved_object:telemetry/find", + "saved_object:telemetry/open_point_in_time", + "saved_object:telemetry/close_point_in_time", + "saved_object:cloud/bulk_get", + "saved_object:cloud/get", + "saved_object:cloud/find", + "saved_object:cloud/open_point_in_time", + "saved_object:cloud/close_point_in_time", + "ui:dashboard_v2/show", + "ui:dashboard_v2/createShortUrl", + "app:maps", + "ui:catalogue/maps", + "ui:navLinks/maps", + "ui:maps_v2/show", + "app:visualize", + "app:lens", + "ui:catalogue/visualize", + "ui:navLinks/visualize", + "ui:navLinks/lens", + "ui:visualize_v2/show", + "ui:visualize_v2/createShortUrl", + ], + "store_search_session": Array [ + "login:", + "api:store_search_session", + "ui:management/kibana/search_sessions", + "saved_object:search-session/bulk_get", + "saved_object:search-session/get", + "saved_object:search-session/find", + "saved_object:search-session/open_point_in_time", + "saved_object:search-session/close_point_in_time", + "saved_object:search-session/create", + "saved_object:search-session/bulk_create", + "saved_object:search-session/update", + "saved_object:search-session/bulk_update", + "saved_object:search-session/delete", + "saved_object:search-session/bulk_delete", + "saved_object:search-session/share_to_space", + "ui:dashboard_v2/storeSearchSession", + ], + "url_create": Array [ + "login:", + "saved_object:url/bulk_get", + "saved_object:url/get", + "saved_object:url/find", + "saved_object:url/open_point_in_time", + "saved_object:url/close_point_in_time", + "saved_object:url/create", + "saved_object:url/bulk_create", + "saved_object:url/update", + "saved_object:url/bulk_update", + "saved_object:url/delete", + "saved_object:url/bulk_delete", + "saved_object:url/share_to_space", + "ui:dashboard_v2/createShortUrl", + ], + }, + "discover": Object { + "all": Array [ + "login:", + "api:fileUpload:analyzeFile", + "api:savedQuery:manage", + "api:savedQuery:read", + "api:store_search_session", + "api:generateReport", + "app:discover", + "app:kibana", + "ui:catalogue/discover", + "ui:management/kibana/search_sessions", + "ui:management/insightsAndAlerting/reporting", + "ui:navLinks/discover", + "ui:navLinks/kibana", + "saved_object:search/bulk_get", + "saved_object:search/get", + "saved_object:search/find", + "saved_object:search/open_point_in_time", + "saved_object:search/close_point_in_time", + "saved_object:search/create", + "saved_object:search/bulk_create", + "saved_object:search/update", + "saved_object:search/bulk_update", + "saved_object:search/delete", + "saved_object:search/bulk_delete", + "saved_object:search/share_to_space", + "saved_object:query/bulk_get", + "saved_object:query/get", + "saved_object:query/find", + "saved_object:query/open_point_in_time", + "saved_object:query/close_point_in_time", + "saved_object:query/create", + "saved_object:query/bulk_create", + "saved_object:query/update", + "saved_object:query/bulk_update", + "saved_object:query/delete", + "saved_object:query/bulk_delete", + "saved_object:query/share_to_space", + "saved_object:telemetry/bulk_get", + "saved_object:telemetry/get", + "saved_object:telemetry/find", + "saved_object:telemetry/open_point_in_time", + "saved_object:telemetry/close_point_in_time", + "saved_object:telemetry/create", + "saved_object:telemetry/bulk_create", + "saved_object:telemetry/update", + "saved_object:telemetry/bulk_update", + "saved_object:telemetry/delete", + "saved_object:telemetry/bulk_delete", + "saved_object:telemetry/share_to_space", + "saved_object:url/bulk_get", + "saved_object:url/get", + "saved_object:url/find", + "saved_object:url/open_point_in_time", + "saved_object:url/close_point_in_time", + "saved_object:url/create", + "saved_object:url/bulk_create", + "saved_object:url/update", + "saved_object:url/bulk_update", + "saved_object:url/delete", + "saved_object:url/bulk_delete", + "saved_object:url/share_to_space", + "saved_object:search-session/bulk_get", + "saved_object:search-session/get", + "saved_object:search-session/find", + "saved_object:search-session/open_point_in_time", + "saved_object:search-session/close_point_in_time", + "saved_object:search-session/create", + "saved_object:search-session/bulk_create", + "saved_object:search-session/update", + "saved_object:search-session/bulk_update", + "saved_object:search-session/delete", + "saved_object:search-session/bulk_delete", + "saved_object:search-session/share_to_space", + "saved_object:index-pattern/bulk_get", + "saved_object:index-pattern/get", + "saved_object:index-pattern/find", + "saved_object:index-pattern/open_point_in_time", + "saved_object:index-pattern/close_point_in_time", + "saved_object:config/bulk_get", + "saved_object:config/get", + "saved_object:config/find", + "saved_object:config/open_point_in_time", + "saved_object:config/close_point_in_time", + "saved_object:config-global/bulk_get", + "saved_object:config-global/get", + "saved_object:config-global/find", + "saved_object:config-global/open_point_in_time", + "saved_object:config-global/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", + "saved_object:cloud/bulk_get", + "saved_object:cloud/get", + "saved_object:cloud/find", + "saved_object:cloud/open_point_in_time", + "saved_object:cloud/close_point_in_time", + "ui:discover/show", + "ui:discover/save", + "ui:discover/saveQuery", + "ui:discover/createShortUrl", + "ui:discover/storeSearchSession", + "ui:discover/generateCsv", + "ui:discover_v2/show", + "ui:discover_v2/save", + "ui:discover_v2/createShortUrl", + "ui:discover_v2/storeSearchSession", + "ui:discover_v2/generateCsv", + "ui:savedQueryManagement/showQueries", + "ui:savedQueryManagement/saveQuery", + ], + "generate_report": Array [ + "login:", + "api:generateReport", + "ui:management/insightsAndAlerting/reporting", + "ui:discover/generateCsv", + "ui:discover_v2/generateCsv", + ], + "minimal_all": Array [ + "login:", + "api:fileUpload:analyzeFile", + "api:savedQuery:manage", + "api:savedQuery:read", + "app:discover", + "app:kibana", + "ui:catalogue/discover", + "ui:navLinks/discover", + "ui:navLinks/kibana", + "saved_object:search/bulk_get", + "saved_object:search/get", + "saved_object:search/find", + "saved_object:search/open_point_in_time", + "saved_object:search/close_point_in_time", + "saved_object:search/create", + "saved_object:search/bulk_create", + "saved_object:search/update", + "saved_object:search/bulk_update", + "saved_object:search/delete", + "saved_object:search/bulk_delete", + "saved_object:search/share_to_space", "saved_object:query/bulk_get", "saved_object:query/get", "saved_object:query/find", "saved_object:query/open_point_in_time", "saved_object:query/close_point_in_time", + "saved_object:query/create", + "saved_object:query/bulk_create", + "saved_object:query/update", + "saved_object:query/bulk_update", + "saved_object:query/delete", + "saved_object:query/bulk_delete", + "saved_object:query/share_to_space", + "saved_object:telemetry/bulk_get", + "saved_object:telemetry/get", + "saved_object:telemetry/find", + "saved_object:telemetry/open_point_in_time", + "saved_object:telemetry/close_point_in_time", + "saved_object:telemetry/create", + "saved_object:telemetry/bulk_create", + "saved_object:telemetry/update", + "saved_object:telemetry/bulk_update", + "saved_object:telemetry/delete", + "saved_object:telemetry/bulk_delete", + "saved_object:telemetry/share_to_space", + "saved_object:index-pattern/bulk_get", + "saved_object:index-pattern/get", + "saved_object:index-pattern/find", + "saved_object:index-pattern/open_point_in_time", + "saved_object:index-pattern/close_point_in_time", + "saved_object:config/bulk_get", + "saved_object:config/get", + "saved_object:config/find", + "saved_object:config/open_point_in_time", + "saved_object:config/close_point_in_time", + "saved_object:config-global/bulk_get", + "saved_object:config-global/get", + "saved_object:config-global/find", + "saved_object:config-global/open_point_in_time", + "saved_object:config-global/close_point_in_time", + "saved_object:url/bulk_get", + "saved_object:url/get", + "saved_object:url/find", + "saved_object:url/open_point_in_time", + "saved_object:url/close_point_in_time", "saved_object:tag/bulk_get", "saved_object:tag/get", "saved_object:tag/find", "saved_object:tag/open_point_in_time", "saved_object:tag/close_point_in_time", + "saved_object:cloud/bulk_get", + "saved_object:cloud/get", + "saved_object:cloud/find", + "saved_object:cloud/open_point_in_time", + "saved_object:cloud/close_point_in_time", + "ui:discover/show", + "ui:discover/save", + "ui:discover/saveQuery", + "ui:discover_v2/show", + "ui:discover_v2/save", + "ui:savedQueryManagement/showQueries", + "ui:savedQueryManagement/saveQuery", + ], + "minimal_read": Array [ + "login:", + "api:savedQuery:read", + "app:discover", + "app:kibana", + "ui:catalogue/discover", + "ui:navLinks/discover", + "ui:navLinks/kibana", + "saved_object:index-pattern/bulk_get", + "saved_object:index-pattern/get", + "saved_object:index-pattern/find", + "saved_object:index-pattern/open_point_in_time", + "saved_object:index-pattern/close_point_in_time", + "saved_object:search/bulk_get", + "saved_object:search/get", + "saved_object:search/find", + "saved_object:search/open_point_in_time", + "saved_object:search/close_point_in_time", + "saved_object:query/bulk_get", + "saved_object:query/get", + "saved_object:query/find", + "saved_object:query/open_point_in_time", + "saved_object:query/close_point_in_time", "saved_object:config/bulk_get", "saved_object:config/get", "saved_object:config/find", @@ -467,40 +1480,27 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "saved_object:cloud/bulk_get", "saved_object:cloud/get", "saved_object:cloud/find", "saved_object:cloud/open_point_in_time", "saved_object:cloud/close_point_in_time", - "ui:dashboard/show", - "app:maps", - "ui:catalogue/maps", - "ui:navLinks/maps", - "ui:maps/show", - "app:visualize", - "app:lens", - "ui:catalogue/visualize", - "ui:navLinks/visualize", - "ui:navLinks/lens", - "saved_object:url/create", - "saved_object:url/bulk_create", - "saved_object:url/update", - "saved_object:url/bulk_update", - "saved_object:url/delete", - "saved_object:url/bulk_delete", - "saved_object:url/share_to_space", - "ui:visualize/show", - "ui:visualize/createShortUrl", + "ui:discover/show", + "ui:discover_v2/show", + "ui:savedQueryManagement/showQueries", ], "read": Array [ "login:", - "api:bulkGetUserProfiles", - "api:dashboardUsageStats", "api:savedQuery:read", - "app:dashboards", + "app:discover", "app:kibana", - "ui:catalogue/dashboard", - "ui:navLinks/dashboards", + "ui:catalogue/discover", + "ui:navLinks/discover", "ui:navLinks/kibana", "saved_object:url/bulk_get", "saved_object:url/get", @@ -524,46 +1524,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:search/find", "saved_object:search/open_point_in_time", "saved_object:search/close_point_in_time", - "saved_object:visualization/bulk_get", - "saved_object:visualization/get", - "saved_object:visualization/find", - "saved_object:visualization/open_point_in_time", - "saved_object:visualization/close_point_in_time", - "saved_object:canvas-workpad/bulk_get", - "saved_object:canvas-workpad/get", - "saved_object:canvas-workpad/find", - "saved_object:canvas-workpad/open_point_in_time", - "saved_object:canvas-workpad/close_point_in_time", - "saved_object:lens/bulk_get", - "saved_object:lens/get", - "saved_object:lens/find", - "saved_object:lens/open_point_in_time", - "saved_object:lens/close_point_in_time", - "saved_object:links/bulk_get", - "saved_object:links/get", - "saved_object:links/find", - "saved_object:links/open_point_in_time", - "saved_object:links/close_point_in_time", - "saved_object:map/bulk_get", - "saved_object:map/get", - "saved_object:map/find", - "saved_object:map/open_point_in_time", - "saved_object:map/close_point_in_time", - "saved_object:dashboard/bulk_get", - "saved_object:dashboard/get", - "saved_object:dashboard/find", - "saved_object:dashboard/open_point_in_time", - "saved_object:dashboard/close_point_in_time", "saved_object:query/bulk_get", "saved_object:query/get", "saved_object:query/find", "saved_object:query/open_point_in_time", "saved_object:query/close_point_in_time", - "saved_object:tag/bulk_get", - "saved_object:tag/get", - "saved_object:tag/find", - "saved_object:tag/open_point_in_time", - "saved_object:tag/close_point_in_time", "saved_object:config/bulk_get", "saved_object:config/get", "saved_object:config/find", @@ -579,24 +1544,21 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:telemetry/find", "saved_object:telemetry/open_point_in_time", "saved_object:telemetry/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "saved_object:cloud/bulk_get", "saved_object:cloud/get", "saved_object:cloud/find", "saved_object:cloud/open_point_in_time", "saved_object:cloud/close_point_in_time", - "ui:dashboard/show", - "ui:dashboard/createShortUrl", - "app:maps", - "ui:catalogue/maps", - "ui:navLinks/maps", - "ui:maps/show", - "app:visualize", - "app:lens", - "ui:catalogue/visualize", - "ui:navLinks/visualize", - "ui:navLinks/lens", - "ui:visualize/show", - "ui:visualize/createShortUrl", + "ui:discover/show", + "ui:discover/createShortUrl", + "ui:discover_v2/show", + "ui:discover_v2/createShortUrl", + "ui:savedQueryManagement/showQueries", ], "store_search_session": Array [ "login:", @@ -614,7 +1576,8 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:search-session/delete", "saved_object:search-session/bulk_delete", "saved_object:search-session/share_to_space", - "ui:dashboard/storeSearchSession", + "ui:discover/storeSearchSession", + "ui:discover_v2/storeSearchSession", ], "url_create": Array [ "login:", @@ -630,15 +1593,14 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/delete", "saved_object:url/bulk_delete", "saved_object:url/share_to_space", - "ui:dashboard/createShortUrl", + "ui:discover/createShortUrl", + "ui:discover_v2/createShortUrl", ], }, - "discover": Object { + "discover_v2": Object { "all": Array [ "login:", "api:fileUpload:analyzeFile", - "api:savedQuery:manage", - "api:savedQuery:read", "api:store_search_session", "api:generateReport", "app:discover", @@ -660,18 +1622,6 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:search/delete", "saved_object:search/bulk_delete", "saved_object:search/share_to_space", - "saved_object:query/bulk_get", - "saved_object:query/get", - "saved_object:query/find", - "saved_object:query/open_point_in_time", - "saved_object:query/close_point_in_time", - "saved_object:query/create", - "saved_object:query/bulk_create", - "saved_object:query/update", - "saved_object:query/bulk_update", - "saved_object:query/delete", - "saved_object:query/bulk_delete", - "saved_object:query/share_to_space", "saved_object:telemetry/bulk_get", "saved_object:telemetry/get", "saved_object:telemetry/find", @@ -733,24 +1683,21 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:cloud/find", "saved_object:cloud/open_point_in_time", "saved_object:cloud/close_point_in_time", - "ui:discover/show", - "ui:discover/save", - "ui:discover/saveQuery", - "ui:discover/createShortUrl", - "ui:discover/storeSearchSession", - "ui:discover/generateCsv", + "ui:discover_v2/show", + "ui:discover_v2/save", + "ui:discover_v2/createShortUrl", + "ui:discover_v2/storeSearchSession", + "ui:discover_v2/generateCsv", ], "generate_report": Array [ "login:", "api:generateReport", "ui:management/insightsAndAlerting/reporting", - "ui:discover/generateCsv", + "ui:discover_v2/generateCsv", ], "minimal_all": Array [ "login:", "api:fileUpload:analyzeFile", - "api:savedQuery:manage", - "api:savedQuery:read", "app:discover", "app:kibana", "ui:catalogue/discover", @@ -768,18 +1715,6 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:search/delete", "saved_object:search/bulk_delete", "saved_object:search/share_to_space", - "saved_object:query/bulk_get", - "saved_object:query/get", - "saved_object:query/find", - "saved_object:query/open_point_in_time", - "saved_object:query/close_point_in_time", - "saved_object:query/create", - "saved_object:query/bulk_create", - "saved_object:query/update", - "saved_object:query/bulk_update", - "saved_object:query/delete", - "saved_object:query/bulk_delete", - "saved_object:query/share_to_space", "saved_object:telemetry/bulk_get", "saved_object:telemetry/get", "saved_object:telemetry/find", @@ -822,13 +1757,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:cloud/find", "saved_object:cloud/open_point_in_time", "saved_object:cloud/close_point_in_time", - "ui:discover/show", - "ui:discover/save", - "ui:discover/saveQuery", + "ui:discover_v2/show", + "ui:discover_v2/save", ], "minimal_read": Array [ "login:", - "api:savedQuery:read", "app:discover", "app:kibana", "ui:catalogue/discover", @@ -844,11 +1777,6 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:search/find", "saved_object:search/open_point_in_time", "saved_object:search/close_point_in_time", - "saved_object:query/bulk_get", - "saved_object:query/get", - "saved_object:query/find", - "saved_object:query/open_point_in_time", - "saved_object:query/close_point_in_time", "saved_object:config/bulk_get", "saved_object:config/get", "saved_object:config/find", @@ -879,11 +1807,10 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:cloud/find", "saved_object:cloud/open_point_in_time", "saved_object:cloud/close_point_in_time", - "ui:discover/show", + "ui:discover_v2/show", ], "read": Array [ "login:", - "api:savedQuery:read", "app:discover", "app:kibana", "ui:catalogue/discover", @@ -911,11 +1838,6 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:search/find", "saved_object:search/open_point_in_time", "saved_object:search/close_point_in_time", - "saved_object:query/bulk_get", - "saved_object:query/get", - "saved_object:query/find", - "saved_object:query/open_point_in_time", - "saved_object:query/close_point_in_time", "saved_object:config/bulk_get", "saved_object:config/get", "saved_object:config/find", @@ -941,8 +1863,8 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:cloud/find", "saved_object:cloud/open_point_in_time", "saved_object:cloud/close_point_in_time", - "ui:discover/show", - "ui:discover/createShortUrl", + "ui:discover_v2/show", + "ui:discover_v2/createShortUrl", ], "store_search_session": Array [ "login:", @@ -960,7 +1882,7 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:search-session/delete", "saved_object:search-session/bulk_delete", "saved_object:search-session/share_to_space", - "ui:discover/storeSearchSession", + "ui:discover_v2/storeSearchSession", ], "url_create": Array [ "login:", @@ -976,7 +1898,7 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/delete", "saved_object:url/bulk_delete", "saved_object:url/share_to_space", - "ui:discover/createShortUrl", + "ui:discover_v2/createShortUrl", ], }, "reporting": Object { @@ -1021,9 +1943,9 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:cloud/close_point_in_time", "api:downloadCsv", "ui:management/insightsAndAlerting/reporting", - "ui:dashboard/downloadCsv", + "ui:dashboard_v2/downloadCsv", "api:generateReport", - "ui:discover/generateCsv", + "ui:discover_v2/generateCsv", ], "minimal_all": Array [ "login:", @@ -1066,9 +1988,9 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:cloud/close_point_in_time", "api:downloadCsv", "ui:management/insightsAndAlerting/reporting", - "ui:dashboard/downloadCsv", + "ui:dashboard_v2/downloadCsv", "api:generateReport", - "ui:discover/generateCsv", + "ui:discover_v2/generateCsv", ], "minimal_read": Array [ "login:", diff --git a/x-pack/test_serverless/api_integration/test_suites/security/platform_security/authorization.ts b/x-pack/test_serverless/api_integration/test_suites/security/platform_security/authorization.ts index 7ce9ba6c64392..6ac3a58ea4b61 100644 --- a/x-pack/test_serverless/api_integration/test_suites/security/platform_security/authorization.ts +++ b/x-pack/test_serverless/api_integration/test_suites/security/platform_security/authorization.ts @@ -30,7 +30,17 @@ export default function ({ getService }: FtrProviderContext) { // The following features are composed of other features in a way that is // specific to the security solution. - const compositeFeatureIds = ['dashboard', 'discover', 'reporting', 'siemV2']; + // The deprecated dashboard and discover features are listed here because + // they are not explicitly hidden, and we can check them to confirm legacy + // roles will still function correctly + const compositeFeatureIds = [ + 'dashboard', + 'dashboard_v2', + 'discover', + 'discover_v2', + 'reporting', + 'siemV2', + ]; const features = Object.fromEntries( Object.entries(body.features).filter(([key]) => compositeFeatureIds.includes(key)) @@ -79,9 +89,9 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:cloud/close_point_in_time", "api:downloadCsv", "ui:management/insightsAndAlerting/reporting", - "ui:dashboard/downloadCsv", + "ui:dashboard_v2/downloadCsv", "api:generateReport", - "ui:discover/generateCsv", + "ui:discover_v2/generateCsv", ], "minimal_all": Array [ "login:", @@ -124,9 +134,9 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:cloud/close_point_in_time", "api:downloadCsv", "ui:management/insightsAndAlerting/reporting", - "ui:dashboard/downloadCsv", + "ui:dashboard_v2/downloadCsv", "api:generateReport", - "ui:discover/generateCsv", + "ui:discover_v2/generateCsv", ], "minimal_read": Array [ "login:", @@ -774,8 +784,6 @@ export default function ({ getService }: FtrProviderContext) { "alerting:siem.newTermsRule/siem/alert/getAlertSummary", "alerting:siem.newTermsRule/siem/alert/update", "api:fileUpload:analyzeFile", - "api:savedQuery:manage", - "api:savedQuery:read", "api:store_search_session", "api:generateReport", "app:discover", @@ -795,18 +803,6 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:search/delete", "saved_object:search/bulk_delete", "saved_object:search/share_to_space", - "saved_object:query/bulk_get", - "saved_object:query/get", - "saved_object:query/find", - "saved_object:query/open_point_in_time", - "saved_object:query/close_point_in_time", - "saved_object:query/create", - "saved_object:query/bulk_create", - "saved_object:query/update", - "saved_object:query/bulk_update", - "saved_object:query/delete", - "saved_object:query/bulk_delete", - "saved_object:query/share_to_space", "saved_object:url/create", "saved_object:url/bulk_create", "saved_object:url/update", @@ -826,12 +822,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:search-session/delete", "saved_object:search-session/bulk_delete", "saved_object:search-session/share_to_space", - "ui:discover/show", - "ui:discover/save", - "ui:discover/saveQuery", - "ui:discover/createShortUrl", - "ui:discover/storeSearchSession", - "ui:discover/generateCsv", + "ui:discover_v2/show", + "ui:discover_v2/save", + "ui:discover_v2/createShortUrl", + "ui:discover_v2/storeSearchSession", + "ui:discover_v2/generateCsv", "api:bulkGetUserProfiles", "api:dashboardUsageStats", "api:downloadCsv", @@ -875,14 +870,13 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:map/find", "saved_object:map/open_point_in_time", "saved_object:map/close_point_in_time", - "ui:dashboard/createNew", - "ui:dashboard/show", - "ui:dashboard/showWriteControls", - "ui:dashboard/saveQuery", - "ui:dashboard/createShortUrl", - "ui:dashboard/storeSearchSession", - "ui:dashboard/generateScreenshot", - "ui:dashboard/downloadCsv", + "ui:dashboard_v2/createNew", + "ui:dashboard_v2/show", + "ui:dashboard_v2/showWriteControls", + "ui:dashboard_v2/createShortUrl", + "ui:dashboard_v2/storeSearchSession", + "ui:dashboard_v2/generateScreenshot", + "ui:dashboard_v2/downloadCsv", "app:visualize", "app:lens", "ui:catalogue/visualize", @@ -902,12 +896,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:lens/delete", "saved_object:lens/bulk_delete", "saved_object:lens/share_to_space", - "ui:visualize/show", - "ui:visualize/delete", - "ui:visualize/save", - "ui:visualize/saveQuery", - "ui:visualize/createShortUrl", - "ui:visualize/generateScreenshot", + "ui:visualize_v2/show", + "ui:visualize_v2/delete", + "ui:visualize_v2/save", + "ui:visualize_v2/createShortUrl", + "ui:visualize_v2/generateScreenshot", "app:maps", "ui:catalogue/maps", "ui:navLinks/maps", @@ -918,9 +911,24 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:map/delete", "saved_object:map/bulk_delete", "saved_object:map/share_to_space", - "ui:maps/save", - "ui:maps/show", - "ui:maps/saveQuery", + "ui:maps_v2/save", + "ui:maps_v2/show", + "api:savedQuery:manage", + "api:savedQuery:read", + "saved_object:query/bulk_get", + "saved_object:query/get", + "saved_object:query/find", + "saved_object:query/open_point_in_time", + "saved_object:query/close_point_in_time", + "saved_object:query/create", + "saved_object:query/bulk_create", + "saved_object:query/update", + "saved_object:query/bulk_update", + "saved_object:query/delete", + "saved_object:query/bulk_delete", + "saved_object:query/share_to_space", + "ui:savedQueryManagement/showQueries", + "ui:savedQueryManagement/saveQuery", ], "blocklist_all": Array [ "login:", @@ -1618,8 +1626,6 @@ export default function ({ getService }: FtrProviderContext) { "alerting:siem.newTermsRule/siem/alert/getAlertSummary", "alerting:siem.newTermsRule/siem/alert/update", "api:fileUpload:analyzeFile", - "api:savedQuery:manage", - "api:savedQuery:read", "api:store_search_session", "api:generateReport", "app:discover", @@ -1639,18 +1645,6 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:search/delete", "saved_object:search/bulk_delete", "saved_object:search/share_to_space", - "saved_object:query/bulk_get", - "saved_object:query/get", - "saved_object:query/find", - "saved_object:query/open_point_in_time", - "saved_object:query/close_point_in_time", - "saved_object:query/create", - "saved_object:query/bulk_create", - "saved_object:query/update", - "saved_object:query/bulk_update", - "saved_object:query/delete", - "saved_object:query/bulk_delete", - "saved_object:query/share_to_space", "saved_object:url/create", "saved_object:url/bulk_create", "saved_object:url/update", @@ -1670,12 +1664,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:search-session/delete", "saved_object:search-session/bulk_delete", "saved_object:search-session/share_to_space", - "ui:discover/show", - "ui:discover/save", - "ui:discover/saveQuery", - "ui:discover/createShortUrl", - "ui:discover/storeSearchSession", - "ui:discover/generateCsv", + "ui:discover_v2/show", + "ui:discover_v2/save", + "ui:discover_v2/createShortUrl", + "ui:discover_v2/storeSearchSession", + "ui:discover_v2/generateCsv", "api:bulkGetUserProfiles", "api:dashboardUsageStats", "api:downloadCsv", @@ -1719,14 +1712,13 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:map/find", "saved_object:map/open_point_in_time", "saved_object:map/close_point_in_time", - "ui:dashboard/createNew", - "ui:dashboard/show", - "ui:dashboard/showWriteControls", - "ui:dashboard/saveQuery", - "ui:dashboard/createShortUrl", - "ui:dashboard/storeSearchSession", - "ui:dashboard/generateScreenshot", - "ui:dashboard/downloadCsv", + "ui:dashboard_v2/createNew", + "ui:dashboard_v2/show", + "ui:dashboard_v2/showWriteControls", + "ui:dashboard_v2/createShortUrl", + "ui:dashboard_v2/storeSearchSession", + "ui:dashboard_v2/generateScreenshot", + "ui:dashboard_v2/downloadCsv", "app:visualize", "app:lens", "ui:catalogue/visualize", @@ -1746,12 +1738,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:lens/delete", "saved_object:lens/bulk_delete", "saved_object:lens/share_to_space", - "ui:visualize/show", - "ui:visualize/delete", - "ui:visualize/save", - "ui:visualize/saveQuery", - "ui:visualize/createShortUrl", - "ui:visualize/generateScreenshot", + "ui:visualize_v2/show", + "ui:visualize_v2/delete", + "ui:visualize_v2/save", + "ui:visualize_v2/createShortUrl", + "ui:visualize_v2/generateScreenshot", "app:maps", "ui:catalogue/maps", "ui:navLinks/maps", @@ -1762,9 +1753,24 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:map/delete", "saved_object:map/bulk_delete", "saved_object:map/share_to_space", - "ui:maps/save", - "ui:maps/show", - "ui:maps/saveQuery", + "ui:maps_v2/save", + "ui:maps_v2/show", + "api:savedQuery:manage", + "api:savedQuery:read", + "saved_object:query/bulk_get", + "saved_object:query/get", + "saved_object:query/find", + "saved_object:query/open_point_in_time", + "saved_object:query/close_point_in_time", + "saved_object:query/create", + "saved_object:query/bulk_create", + "saved_object:query/update", + "saved_object:query/bulk_update", + "saved_object:query/delete", + "saved_object:query/bulk_delete", + "saved_object:query/share_to_space", + "ui:savedQueryManagement/showQueries", + "ui:savedQueryManagement/saveQuery", ], "minimal_read": Array [ "login:", @@ -2025,7 +2031,6 @@ export default function ({ getService }: FtrProviderContext) { "alerting:siem.newTermsRule/siem/alert/getAuthorizedAlertsIndices", "alerting:siem.newTermsRule/siem/alert/getAlertSummary", "alerting:siem.newTermsRule/siem/alert/update", - "api:savedQuery:read", "app:discover", "ui:catalogue/discover", "ui:navLinks/discover", @@ -2041,13 +2046,8 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:search/find", "saved_object:search/open_point_in_time", "saved_object:search/close_point_in_time", - "saved_object:query/bulk_get", - "saved_object:query/get", - "saved_object:query/find", - "saved_object:query/open_point_in_time", - "saved_object:query/close_point_in_time", - "ui:discover/show", - "ui:discover/createShortUrl", + "ui:discover_v2/show", + "ui:discover_v2/createShortUrl", "api:bulkGetUserProfiles", "api:dashboardUsageStats", "app:dashboards", @@ -2083,19 +2083,26 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:dashboard/find", "saved_object:dashboard/open_point_in_time", "saved_object:dashboard/close_point_in_time", - "ui:dashboard/show", - "ui:dashboard/createShortUrl", + "ui:dashboard_v2/show", + "ui:dashboard_v2/createShortUrl", "app:visualize", "app:lens", "ui:catalogue/visualize", "ui:navLinks/visualize", "ui:navLinks/lens", - "ui:visualize/show", - "ui:visualize/createShortUrl", + "ui:visualize_v2/show", + "ui:visualize_v2/createShortUrl", "app:maps", "ui:catalogue/maps", "ui:navLinks/maps", - "ui:maps/show", + "ui:maps_v2/show", + "api:savedQuery:read", + "saved_object:query/bulk_get", + "saved_object:query/get", + "saved_object:query/find", + "saved_object:query/open_point_in_time", + "saved_object:query/close_point_in_time", + "ui:savedQueryManagement/showQueries", ], "policy_management_all": Array [ "login:", @@ -2392,7 +2399,6 @@ export default function ({ getService }: FtrProviderContext) { "alerting:siem.newTermsRule/siem/alert/getAuthorizedAlertsIndices", "alerting:siem.newTermsRule/siem/alert/getAlertSummary", "alerting:siem.newTermsRule/siem/alert/update", - "api:savedQuery:read", "app:discover", "ui:catalogue/discover", "ui:navLinks/discover", @@ -2408,13 +2414,8 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:search/find", "saved_object:search/open_point_in_time", "saved_object:search/close_point_in_time", - "saved_object:query/bulk_get", - "saved_object:query/get", - "saved_object:query/find", - "saved_object:query/open_point_in_time", - "saved_object:query/close_point_in_time", - "ui:discover/show", - "ui:discover/createShortUrl", + "ui:discover_v2/show", + "ui:discover_v2/createShortUrl", "api:bulkGetUserProfiles", "api:dashboardUsageStats", "app:dashboards", @@ -2450,19 +2451,26 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:dashboard/find", "saved_object:dashboard/open_point_in_time", "saved_object:dashboard/close_point_in_time", - "ui:dashboard/show", - "ui:dashboard/createShortUrl", + "ui:dashboard_v2/show", + "ui:dashboard_v2/createShortUrl", "app:visualize", "app:lens", "ui:catalogue/visualize", "ui:navLinks/visualize", "ui:navLinks/lens", - "ui:visualize/show", - "ui:visualize/createShortUrl", + "ui:visualize_v2/show", + "ui:visualize_v2/createShortUrl", "app:maps", "ui:catalogue/maps", "ui:navLinks/maps", - "ui:maps/show", + "ui:maps_v2/show", + "api:savedQuery:read", + "saved_object:query/bulk_get", + "saved_object:query/get", + "saved_object:query/find", + "saved_object:query/open_point_in_time", + "saved_object:query/close_point_in_time", + "ui:savedQueryManagement/showQueries", ], "scan_operations_all": Array [ "login:", diff --git a/x-pack/test_serverless/shared/lib/security/kibana_roles/project_controller_security_roles.yml b/x-pack/test_serverless/shared/lib/security/kibana_roles/project_controller_security_roles.yml index 8d8c716414f89..115efbb4439ce 100644 --- a/x-pack/test_serverless/shared/lib/security/kibana_roles/project_controller_security_roles.yml +++ b/x-pack/test_serverless/shared/lib/security/kibana_roles/project_controller_security_roles.yml @@ -53,12 +53,13 @@ viewer: - feature_actions.read - feature_builtInAlerts.read - feature_osquery.read - - feature_discover.all - - feature_dashboard.all + - feature_discover_v2.all + - feature_dashboard_v2.all - feature_canvas.all - feature_graph.all - - feature_maps.all - - feature_visualize.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' run_as: [] @@ -136,12 +137,13 @@ editor: - feature_actions.endpoint_security_execute - feature_builtInAlerts.all - feature_osquery.all - - feature_discover.all - - feature_dashboard.all + - feature_discover_v2.all + - feature_dashboard_v2.all - feature_canvas.all - feature_graph.all - - feature_maps.all - - feature_visualize.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' run_as: [] @@ -191,12 +193,13 @@ t1_analyst: - feature_builtInAlerts.read - feature_osquery.read - feature_osquery.run_saved_queries - - feature_discover.all - - feature_dashboard.all + - feature_discover_v2.all + - feature_dashboard_v2.all - feature_canvas.all - feature_graph.all - - feature_maps.all - - feature_visualize.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' t2_analyst: @@ -249,12 +252,13 @@ t2_analyst: - feature_builtInAlerts.read - feature_osquery.read - feature_osquery.run_saved_queries - - feature_discover.all - - feature_dashboard.all + - feature_discover_v2.all + - feature_dashboard_v2.all - feature_canvas.all - feature_graph.all - - feature_maps.all - - feature_visualize.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' t3_analyst: @@ -324,12 +328,13 @@ t3_analyst: - feature_actions.endpoint_security_execute - feature_builtInAlerts.all - feature_osquery.all - - feature_discover.all - - feature_dashboard.all + - feature_discover_v2.all + - feature_dashboard_v2.all - feature_canvas.all - feature_graph.all - - feature_maps.all - - feature_visualize.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' threat_intelligence_analyst: @@ -384,12 +389,13 @@ threat_intelligence_analyst: - feature_actions.read - feature_builtInAlerts.read - feature_osquery.all - - feature_discover.all - - feature_dashboard.all + - feature_discover_v2.all + - feature_dashboard_v2.all - feature_canvas.all - feature_graph.all - - feature_maps.all - - feature_visualize.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' rule_author: @@ -457,12 +463,13 @@ rule_author: - feature_actions.read - feature_builtInAlerts.all - feature_osquery.all - - feature_discover.all - - feature_dashboard.all + - feature_discover_v2.all + - feature_dashboard_v2.all - feature_canvas.all - feature_graph.all - - feature_maps.all - - feature_visualize.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' soc_manager: @@ -539,12 +546,13 @@ soc_manager: - feature_builtInAlerts.all - feature_osquery.all - feature_indexPatterns.all - - feature_discover.all - - feature_dashboard.all + - feature_discover_v2.all + - feature_dashboard_v2.all - feature_canvas.all - feature_graph.all - - feature_maps.all - - feature_visualize.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' detections_admin: @@ -601,12 +609,13 @@ detections_admin: - feature_actions.all - feature_builtInAlerts.all - feature_dev_tools.all - - feature_discover.all - - feature_dashboard.all + - feature_discover_v2.all + - feature_dashboard_v2.all - feature_canvas.all - feature_graph.all - - feature_maps.all - - feature_visualize.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' platform_engineer: @@ -667,12 +676,13 @@ platform_engineer: - feature_fleetv2.all - feature_osquery.all - feature_indexPatterns.all - - feature_discover.all - - feature_dashboard.all + - feature_discover_v2.all + - feature_dashboard_v2.all - feature_canvas.all - feature_graph.all - - feature_maps.all - - feature_visualize.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' endpoint_operations_analyst: @@ -744,12 +754,13 @@ endpoint_operations_analyst: - feature_osquery.all - feature_fleet.all - feature_fleetv2.all - - feature_discover.all - - feature_dashboard.all + - feature_discover_v2.all + - feature_dashboard_v2.all - feature_canvas.all - feature_graph.all - - feature_maps.all - - feature_visualize.all + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all resources: '*' endpoint_policy_manager: @@ -815,10 +826,11 @@ endpoint_policy_manager: - feature_osquery.all - feature_fleet.all - feature_fleetv2.all - - feature_discover.all - - feature_dashboard.all + - feature_discover_v2.all + - feature_dashboard_v2.all - feature_canvas.all - feature_graph.all - - feature_maps.all - - feature_visualize.all - resources: '*' + - feature_maps_v2.all + - feature_visualize_v2.all + - feature_savedQueryManagement.all + resources: '*' \ No newline at end of file