Skip to content

[Dashboard as code] Embeddable API Integration#221975

Closed
ThomThomson wants to merge 60 commits intomainfrom
dashboardApi/embeddableIntegration
Closed

[Dashboard as code] Embeddable API Integration#221975
ThomThomson wants to merge 60 commits intomainfrom
dashboardApi/embeddableIntegration

Conversation

@ThomThomson
Copy link
Contributor

@ThomThomson ThomThomson commented May 29, 2025

Closes #192622
Closes #222472
Closes #222466

nickpeihl and others added 6 commits May 27, 2025 16:15
@ThomThomson ThomThomson changed the title Dashboard api/embeddable integration [Dashboard API] Embeddable API Integration May 29, 2025
nickpeihl and others added 3 commits May 29, 2025 17:11
…anagement (#221981)

Note: _This PR does not need to be reviewed by external teams. This PR
merges into a feature branch that Kibana presentation team is working on
to support embeddable integrations with Dashboards as Code._
Adds a `startServices` method for the dashboard server to provide the
embeddable service that can be used in the migration to correctly
extract references.

This also logs a warning instead of throwing if the migration fails.

Here is an example dashboard saved object that triggers the migration on
import.

[7.8.0-dashboard.ndjson.zip](https://github.com/user-attachments/files/20521831/7.8.0-dashboard.ndjson.zip)

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
@kibanamachine
Copy link
Contributor

Project deployments require a Github label, please add one or more of ci:project-deploy-(elasticsearch|observability|security) and trigger the job through the checkbox again.

@ThomThomson ThomThomson changed the title [Dashboard API] Embeddable API Integration [Dashboards as code] Embeddable API Integration Jun 4, 2025
@ThomThomson ThomThomson changed the title [Dashboards as code] Embeddable API Integration [Dashboard as code] Embeddable API Integration Jun 4, 2025
nickpeihl and others added 7 commits June 5, 2025 10:51
…ntManagementRegistry async (#223050)

Note: _This PR does not need to be reviewed by external teams. This PR
merges into a feature branch that Kibana presentation team is working on
to support embeddable integrations with Dashboards as Code._

Makes the `EmbeddableContentManagementRegistry` an async registry to
reduce bundle size.
@nreese
Copy link
Contributor

nreese commented Jun 23, 2025

@elasticmachine merge upstream

@nreese nreese added backport:skip This PR does not require backporting and removed v8.19.0 backport:version Backport to applied version labels labels Jun 24, 2025
@nreese nreese marked this pull request as ready for review June 25, 2025 13:58
@nreese nreese requested a review from a team as a code owner June 25, 2025 13:58
@nreese nreese requested a review from a team June 25, 2025 13:58
@nreese nreese requested a review from a team as a code owner June 25, 2025 13:58
@elasticmachine
Copy link
Contributor

Pinging @elastic/kibana-presentation (Team:Presentation)

@nreese nreese marked this pull request as draft June 25, 2025 13:59
@elasticmachine
Copy link
Contributor

🤖 Jobs for this PR can be triggered through checkboxes. 🚧

ℹ️ To trigger the CI, please tick the checkbox below 👇

  • Click to trigger kibana-pull-request for this PR!
  • Click to trigger kibana-deploy-project-from-pr for this PR!
  • Click to trigger kibana-deploy-cloud-from-pr for this PR!

@nreese
Copy link
Contributor

nreese commented Jun 25, 2025

Sorry for the pings, accidentally clicked "Ready for review". PR is not ready for review and is still in draft. Please "unsubscribe" to avoid getting updates for this PR.

@elasticmachine
Copy link
Contributor

elasticmachine commented Jun 25, 2025

💔 Build Failed

Failed CI Steps

Test Failures

  • [job] [logs] FTR Configs #95 / Cloud Security Posture Test adding Cloud Security Posture Integrations CSPM AWS CIS_AWS Single Manual Shared Access CIS_AWS Single Manual Shared Access Workflow
  • [job] [logs] FTR Configs #95 / Cloud Security Posture Test adding Cloud Security Posture Integrations CSPM GCP CIS_GCP Organization Credentials JSON CIS_GCP Organization Credentials JSON workflow
  • [job] [logs] FTR Configs #128 / Journey[aiops_log_rate_analysis] "before all" hook for "Go to AIOps Log Rate Analysis"
  • [job] [logs] FTR Configs #128 / Journey[aiops_log_rate_analysis] "before all" hook for "Go to AIOps Log Rate Analysis"
  • [job] [logs] FTR Configs #50 / Journey[apm_service_inventory] "before all" hook for "Navigate to Service Inventory Page"
  • [job] [logs] FTR Configs #50 / Journey[apm_service_inventory] "before all" hook for "Navigate to Service Inventory Page"
  • [job] [logs] FTR Configs #47 / Journey[cloud_security_dashboard] "before all" hook for "Go to cloud security dashboards Page"
  • [job] [logs] FTR Configs #47 / Journey[cloud_security_dashboard] "before all" hook for "Go to cloud security dashboards Page"
  • [job] [logs] FTR Configs #71 / Journey[dashboard_listing_page] "before all" hook for "Go to Dashboards Page"
  • [job] [logs] FTR Configs #71 / Journey[dashboard_listing_page] "before all" hook for "Go to Dashboards Page"
  • [job] [logs] FTR Configs #123 / Journey[data_stress_test_lens_http2] "before all" hook for "Go to dashboard"
  • [job] [logs] FTR Configs #123 / Journey[data_stress_test_lens_http2] "before all" hook for "Go to dashboard"
  • [job] [logs] FTR Configs #103 / Journey[data_stress_test_lens] "before all" hook for "Go to dashboard"
  • [job] [logs] FTR Configs #103 / Journey[data_stress_test_lens] "before all" hook for "Go to dashboard"
  • [job] [logs] FTR Configs #41 / Journey[ecommerce_dashboard_http2] "before all" hook for "Go to Dashboards Page"
  • [job] [logs] FTR Configs #41 / Journey[ecommerce_dashboard_http2] "before all" hook for "Go to Dashboards Page"
  • [job] [logs] FTR Configs #26 / Journey[ecommerce_dashboard_map_only] "before all" hook for "Go to Dashboards Page"
  • [job] [logs] FTR Configs #26 / Journey[ecommerce_dashboard_map_only] "before all" hook for "Go to Dashboards Page"
  • [job] [logs] FTR Configs #115 / Journey[ecommerce_dashboard_saved_search_only] "before all" hook for "Go to Dashboards Page"
  • [job] [logs] FTR Configs #115 / Journey[ecommerce_dashboard_saved_search_only] "before all" hook for "Go to Dashboards Page"
  • [job] [logs] FTR Configs #120 / Journey[ecommerce_dashboard_tsvb_gauge_only] "before all" hook for "Go to Dashboards Page"
  • [job] [logs] FTR Configs #120 / Journey[ecommerce_dashboard_tsvb_gauge_only] "before all" hook for "Go to Dashboards Page"
  • [job] [logs] FTR Configs #65 / Journey[ecommerce_dashboard] "before all" hook for "Go to Dashboards Page"
  • [job] [logs] FTR Configs #65 / Journey[ecommerce_dashboard] "before all" hook for "Go to Dashboards Page"
  • [job] [logs] FTR Configs #87 / Journey[flight_dashboard] "before all" hook for "Go to Dashboards Page"
  • [job] [logs] FTR Configs #87 / Journey[flight_dashboard] "before all" hook for "Go to Dashboards Page"
  • [job] [logs] FTR Configs #38 / Journey[infra_hosts_view] "before all" hook for "Navigate to Hosts view and load 500 hosts"
  • [job] [logs] FTR Configs #38 / Journey[infra_hosts_view] "before all" hook for "Navigate to Hosts view and load 500 hosts"
  • [job] [logs] FTR Configs #27 / Journey[login] "before all" hook for "Login"
  • [job] [logs] FTR Configs #27 / Journey[login] "before all" hook for "Login"
  • [job] [logs] FTR Configs #56 / Journey[many_fields_discover_esql] "before all" hook for "Go to Discover Page"
  • [job] [logs] FTR Configs #56 / Journey[many_fields_discover_esql] "before all" hook for "Go to Discover Page"
  • [job] [logs] FTR Configs #55 / Journey[many_fields_discover] "before all" hook for "Go to Discover Page"
  • [job] [logs] FTR Configs #55 / Journey[many_fields_discover] "before all" hook for "Go to Discover Page"
  • [job] [logs] FTR Configs #14 / Journey[many_fields_lens_editor] "before all" hook for "Go to Visualize Library landing page"
  • [job] [logs] FTR Configs #14 / Journey[many_fields_lens_editor] "before all" hook for "Go to Visualize Library landing page"
  • [job] [logs] FTR Configs #32 / Journey[many_fields_transform] "before all" hook for "Go to Transforms"
  • [job] [logs] FTR Configs #32 / Journey[many_fields_transform] "before all" hook for "Go to Transforms"
  • [job] [logs] FTR Configs #52 / Journey[promotion_tracking_dashboard] "before all" hook for "Go to Dashboards Page"
  • [job] [logs] FTR Configs #52 / Journey[promotion_tracking_dashboard] "before all" hook for "Go to Dashboards Page"
  • [job] [logs] FTR Configs #84 / Journey[tags_listing_page] "before all" hook for "Go to Tags Page"
  • [job] [logs] FTR Configs #84 / Journey[tags_listing_page] "before all" hook for "Go to Tags Page"
  • [job] [logs] FTR Configs #47 / Journey[tsdb_logs_data_visualizer] "before all" hook for "Go to Data Visualizer"
  • [job] [logs] FTR Configs #47 / Journey[tsdb_logs_data_visualizer] "before all" hook for "Go to Data Visualizer"
  • [job] [logs] FTR Configs #119 / Journey[web_logs_dashboard_dataview] "before all" hook for "Go to Dashboards Page"
  • [job] [logs] FTR Configs #119 / Journey[web_logs_dashboard_dataview] "before all" hook for "Go to Dashboards Page"
  • [job] [logs] FTR Configs #114 / Journey[web_logs_dashboard_esql] "before all" hook for "Go to Dashboards Page"
  • [job] [logs] FTR Configs #114 / Journey[web_logs_dashboard_esql] "before all" hook for "Go to Dashboards Page"
  • [job] [logs] FTR Configs #117 / Journey[web_logs_dashboard] "before all" hook for "Go to Dashboards Page"
  • [job] [logs] FTR Configs #117 / Journey[web_logs_dashboard] "before all" hook for "Go to Dashboards Page"
  • [job] [logs] FTR Configs #63 / Serverless Observability - Deployment-agnostic AI Assistant API integration tests observability AI Assistant retrieve_elastic_doc POST /internal/observability_ai_assistant/chat/complete makes 2 requests to the LLM
  • [job] [logs] Scout: [ platform / streams_app ] plugin / serverless-oblt - Classic Streams - full flow
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-oblt - Discover App - Lighthouse Performance Audit - runs audit on Discover Page
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-oblt - Discover App - Performance Metrics & Bundle Analysis - collects and validates JS Bundles loaded on page
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-oblt - Discover App - Performance Metrics & Bundle Analysis - measures Performance Metrics before and after Discover load
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-oblt - Discover app - saved search embeddable - should allow removing the dashboard panel after the underlying saved search has been deleted
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-oblt - Discover app - saved searches - should customize time range on dashboards
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-oblt - Discover app - saved searches - should unselect saved search when navigating to a 'new'
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-oblt - Discover app - value suggestions non-time based - shows all auto-suggest options for a filter in discover context app
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-oblt - Discover app - value suggestions: useTimeRange disabled - show up if in range
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-oblt - Discover app - value suggestions: useTimeRange disabled - show up if outside of range
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-oblt - Discover app - value suggestions: useTimeRange enabled - also displays descriptions for operators
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-oblt - Discover app - value suggestions: useTimeRange enabled - dont show up if outside of range
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-oblt - Discover app - value suggestions: useTimeRange enabled - show up if in range
  • [job] [logs] Scout: [ platform / maps ] plugin / serverless-oblt - Maps - Full screen mode
  • [job] [logs] Scout: [ observability / apm ] plugin / serverless-oblt - Service Inventory - loads the service overview for a service when clicking on it
  • [job] [logs] Scout: [ observability / apm ] plugin / serverless-oblt - Service Inventory - renders page with selected date range
  • [job] [logs] Scout: [ observability / apm ] plugin / serverless-oblt - Service Inventory - shows the correct environment when changing the environment
  • [job] [logs] Scout: [ observability / apm ] plugin / serverless-oblt - Service Inventory - shows the filtered services when using the service name fast filter
  • [job] [logs] Scout: [ observability / apm ] plugin / serverless-oblt - Service Map - renders page with selected date range
  • [job] [logs] Scout: [ observability / apm ] plugin / serverless-oblt - Service Map - shows a detailed service map
  • [job] [logs] Scout: [ observability / apm ] plugin / serverless-oblt - Service Map - shows empty state when there is no data
  • [job] [logs] Scout: [ platform / streams_app ] plugin / serverless-oblt - Wired Streams - full flow
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-search - Discover App - Lighthouse Performance Audit - runs audit on Discover Page
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-search - Discover App - Performance Metrics & Bundle Analysis - collects and validates JS Bundles loaded on page
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-search - Discover App - Performance Metrics & Bundle Analysis - measures Performance Metrics before and after Discover load
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-search - Discover app - saved search embeddable - should allow removing the dashboard panel after the underlying saved search has been deleted
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-search - Discover app - saved searches - should customize time range on dashboards
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-search - Discover app - saved searches - should unselect saved search when navigating to a 'new'
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-search - Discover app - value suggestions non-time based - shows all auto-suggest options for a filter in discover context app
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-search - Discover app - value suggestions: useTimeRange disabled - show up if in range
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-search - Discover app - value suggestions: useTimeRange disabled - show up if outside of range
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-search - Discover app - value suggestions: useTimeRange enabled - also displays descriptions for operators
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-search - Discover app - value suggestions: useTimeRange enabled - dont show up if outside of range
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-search - Discover app - value suggestions: useTimeRange enabled - show up if in range
  • [job] [logs] Scout: [ platform / maps ] plugin / serverless-search - Maps - Full screen mode
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-security - Discover App - Lighthouse Performance Audit - runs audit on Discover Page
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-security - Discover App - Performance Metrics & Bundle Analysis - collects and validates JS Bundles loaded on page
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-security - Discover App - Performance Metrics & Bundle Analysis - measures Performance Metrics before and after Discover load
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-security - Discover app - saved search embeddable - should allow removing the dashboard panel after the underlying saved search has been deleted
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-security - Discover app - value suggestions: useTimeRange disabled - show up if in range
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-security - Discover app - value suggestions: useTimeRange disabled - show up if outside of range
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-security - Discover app - value suggestions: useTimeRange enabled - also displays descriptions for operators
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-security - Discover app - value suggestions: useTimeRange enabled - dont show up if outside of range
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / serverless-security - Discover app - value suggestions: useTimeRange enabled - show up if in range
  • [job] [logs] Scout: [ security / security_solution ] plugin / serverless-security - Expandable flyout state sync - should test flyout url sync
  • [job] [logs] Scout: [ platform / maps ] plugin / serverless-security - Maps - Full screen mode
  • [job] [logs] Scout: [ platform / streams_app ] plugin / stateful - Classic Streams - full flow
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / stateful - Discover app - errors - should render invalid scripted field error
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / stateful - Discover App - Lighthouse Performance Audit - runs audit on Discover Page
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / stateful - Discover App - Performance Metrics & Bundle Analysis - collects and validates JS Bundles loaded on page
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / stateful - Discover App - Performance Metrics & Bundle Analysis - measures Performance Metrics before and after Discover load
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / stateful - Discover app - saved search embeddable - should allow removing the dashboard panel after the underlying saved search has been deleted
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / stateful - Discover app - saved searches - should customize time range on dashboards
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / stateful - Discover app - saved searches - should unselect saved search when navigating to a 'new'
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / stateful - Discover app - value suggestions non-time based - shows all auto-suggest options for a filter in discover context app
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / stateful - Discover app - value suggestions: useTimeRange disabled - show up if in range
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / stateful - Discover app - value suggestions: useTimeRange disabled - show up if outside of range
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / stateful - Discover app - value suggestions: useTimeRange enabled - also displays descriptions for operators
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / stateful - Discover app - value suggestions: useTimeRange enabled - dont show up if outside of range
  • [job] [logs] Scout: [ platform / discover_enhanced ] plugin / stateful - Discover app - value suggestions: useTimeRange enabled - show up if in range
  • [job] [logs] Scout: [ security / security_solution ] plugin / stateful - Expandable flyout state sync - should test flyout url sync
  • [job] [logs] Scout: [ platform / maps ] plugin / stateful - Maps - Full screen mode
  • [job] [logs] Scout: [ platform / painless_lab ] plugin / stateful - Painless Lab - validate painless lab editor and request
  • [job] [logs] Scout: [ observability / apm ] plugin / stateful - Service Inventory - loads the service overview for a service when clicking on it
  • [job] [logs] Scout: [ observability / apm ] plugin / stateful - Service Inventory - renders page with selected date range
  • [job] [logs] Scout: [ observability / apm ] plugin / stateful - Service Inventory - shows the correct environment when changing the environment
  • [job] [logs] Scout: [ observability / apm ] plugin / stateful - Service Inventory - shows the filtered services when using the service name fast filter
  • [job] [logs] Scout: [ observability / apm ] plugin / stateful - Service Map - renders page with selected date range
  • [job] [logs] Scout: [ observability / apm ] plugin / stateful - Service Map - shows a detailed service map
  • [job] [logs] Scout: [ observability / apm ] plugin / stateful - Service Map - shows empty state when there is no data
  • [job] [logs] Scout: [ platform / streams_app ] plugin / stateful - Wired Streams - full flow

Metrics [docs]

Module Count

Fewer modules leads to a faster build time

id before after diff
embeddable 107 108 +1

Public APIs missing comments

Total count of every public API that lacks a comment. Target amount is 0. Run node scripts/build_api_docs --plugin [yourplugin] --stats comments for more detailed information.

id before after diff
dashboard 95 103 +8
embeddable 124 134 +10
total +18

Async chunks

Total size of all lazy-loaded chunks that will be downloaded as the user navigates the app

id before after diff
apm 2.6MB 2.6MB +10.0B
dashboard 618.6KB 619.0KB +395.0B
securitySolution 9.4MB 9.4MB +5.0B
total +410.0B

Public APIs missing exports

Total count of every type that is part of your API that should be exported but is not. This will cause broken links in the API documentation system. Target amount is 0. Run node scripts/build_api_docs --plugin [yourplugin] --stats exports for more detailed information.

id before after diff
dashboard 12 13 +1
embeddable 1 2 +1
total +2

Page load bundle

Size of the bundles that are downloaded on every page load. Target size is below 100kb

id before after diff
embeddable 16.7KB 17.6KB +927.0B
Unknown metric groups

API count

id before after diff
dashboard 100 108 +8
embeddable 148 158 +10
total +18

ESLint disabled line counts

id before after diff
embeddable 1 2 +1

References to deprecated APIs

id before after diff
@kbn/saved-search-component 0 1 +1
aiops 8 11 +3
controls 18 20 +2
dashboard 5 14 +9
dataVisualizer 11 12 +1
discover 9 16 +7
embeddableEnhanced 0 3 +3
imageEmbeddable 2 3 +1
lens 76 86 +10
links 1 3 +2
maps 26 37 +11
slo 3 4 +1
synthetics 23 24 +1
visualizations 53 62 +9
total +61

Total ESLint disabled count

id before after diff
embeddable 1 2 +1

History

@nreese
Copy link
Contributor

nreese commented Jun 27, 2025

@elasticmachine merge upstream

@nreese
Copy link
Contributor

nreese commented Jul 10, 2025

Closing, replacing with #227141

@nreese nreese closed this Jul 10, 2025
@sophiec20 sophiec20 deleted the dashboardApi/embeddableIntegration branch February 9, 2026 17:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport:skip This PR does not require backporting Feature:Embeddables Relating to the Embeddable system impact:high Addressing this issue will have a high level of impact on the quality/strength of our product. loe:large Large Level of Effort release_note:skip Skip the PR/issue when compiling release notes Team:Presentation Presentation Team for Dashboard, Input Controls, and Canvas t// v9.2.0

Projects

None yet

6 participants