diff --git a/.betterer.results b/.betterer.results
index eedd45faab7..b593c39ca68 100644
--- a/.betterer.results
+++ b/.betterer.results
@@ -518,120 +518,30 @@ exports[`better eslint`] = {
"packages/grafana-sql/src/components/visual-query-builder/AwesomeQueryBuilder.tsx:5381": [
[0, 0, 0, "Unexpected any. Specify a different type.", "0"]
],
- "packages/grafana-ui/src/components/Alert/Alert.tsx:5381": [
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"]
- ],
- "packages/grafana-ui/src/components/Card/Card.tsx:5381": [
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"]
- ],
- "packages/grafana-ui/src/components/Cascader/Cascader.tsx:5381": [
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"]
- ],
"packages/grafana-ui/src/components/ColorPicker/ColorPicker.tsx:5381": [
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
[0, 0, 0, "Unexpected any. Specify a different type.", "1"]
],
- "packages/grafana-ui/src/components/ColorPicker/NamedColorsPalette.tsx:5381": [
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"]
- ],
- "packages/grafana-ui/src/components/ColorPicker/SeriesColorPickerPopover.tsx:5381": [
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"]
- ],
"packages/grafana-ui/src/components/Combobox/MultiCombobox.tsx:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"]
],
- "packages/grafana-ui/src/components/Combobox/ValuePill.tsx:5381": [
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"]
- ],
"packages/grafana-ui/src/components/Combobox/useOptions.ts:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"]
],
- "packages/grafana-ui/src/components/ConfirmModal/ConfirmContent.tsx:5381": [
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"]
- ],
- "packages/grafana-ui/src/components/DataLinks/DataLinkEditor.tsx:5381": [
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"]
- ],
"packages/grafana-ui/src/components/DataLinks/DataLinkInput.tsx:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"]
],
"packages/grafana-ui/src/components/DataLinks/DataLinkSuggestions.tsx:5381": [
[0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"]
],
- "packages/grafana-ui/src/components/DataSourceSettings/AlertingSettings.tsx:5381": [
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"]
- ],
- "packages/grafana-ui/src/components/DataSourceSettings/BasicAuthSettings.tsx:5381": [
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"]
- ],
"packages/grafana-ui/src/components/DataSourceSettings/CustomHeadersSettings.tsx:5381": [
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "4"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "5"],
- [0, 0, 0, "Unexpected any. Specify a different type.", "6"],
- [0, 0, 0, "Unexpected any. Specify a different type.", "7"]
- ],
- "packages/grafana-ui/src/components/DataSourceSettings/DataSourceHttpSettings.tsx:5381": [
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "4"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "5"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "6"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "7"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "8"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "9"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "10"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "11"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "12"]
- ],
- "packages/grafana-ui/src/components/DataSourceSettings/HttpProxySettings.tsx:5381": [
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "4"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "5"]
- ],
- "packages/grafana-ui/src/components/DataSourceSettings/SecureSocksProxySettings.tsx:5381": [
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"]
- ],
- "packages/grafana-ui/src/components/DataSourceSettings/TLSAuthSettings.tsx:5381": [
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "4"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "5"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "6"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "7"]
+ [0, 0, 0, "Unexpected any. Specify a different type.", "0"],
+ [0, 0, 0, "Unexpected any. Specify a different type.", "1"]
],
"packages/grafana-ui/src/components/DataSourceSettings/types.ts:5381": [
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
[0, 0, 0, "Unexpected any. Specify a different type.", "1"]
],
- "packages/grafana-ui/src/components/DateTimePickers/DateTimePicker/DateTimePicker.tsx:5381": [
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"]
- ],
- "packages/grafana-ui/src/components/DateTimePickers/RelativeTimeRangePicker/RelativeTimeRangePicker.tsx:5381": [
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"],
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"]
- ],
"packages/grafana-ui/src/components/FileDropzone/FileDropzone.tsx:5381": [
[0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"]
],
@@ -1575,9 +1485,6 @@ exports[`better eslint`] = {
[0, 0, 0, "No untranslated strings. Wrap text with ", "6"],
[0, 0, 0, "No untranslated strings. Wrap text with ", "7"]
],
- "public/app/features/alerting/unified/RuleViewer.tsx:5381": [
- [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"]
- ],
"public/app/features/alerting/unified/Settings.tsx:5381": [
[0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"],
[0, 0, 0, "No untranslated strings. Wrap text with ", "1"],
diff --git a/.drone.yml b/.drone.yml
index 6883dcac6b6..491c607a83b 100644
--- a/.drone.yml
+++ b/.drone.yml
@@ -18,7 +18,7 @@ services: []
steps:
- commands:
- echo $DRONE_RUNNER_NAME
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: identify-runner
- commands:
- go build -o ./bin/build -ldflags '-extldflags -static' ./pkg/build/cmd
@@ -69,7 +69,7 @@ services: []
steps:
- commands:
- echo $DRONE_RUNNER_NAME
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: identify-runner
- commands:
- go install github.com/bazelbuild/buildtools/buildifier@latest
@@ -112,7 +112,7 @@ services: []
steps:
- commands:
- echo $DRONE_RUNNER_NAME
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: identify-runner
- commands:
- yarn install --immutable || yarn install --immutable
@@ -170,7 +170,7 @@ services: []
steps:
- commands:
- echo $DRONE_RUNNER_NAME
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: identify-runner
- commands:
- yarn install --immutable || yarn install --immutable
@@ -309,7 +309,7 @@ steps:
path: /github-app
- commands:
- echo $DRONE_RUNNER_NAME
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: identify-runner
- commands:
- yarn install --immutable || yarn install --immutable
@@ -427,7 +427,7 @@ steps:
path: /github-app
- commands:
- echo $DRONE_RUNNER_NAME
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: identify-runner
- commands:
- '# It is required that code generated from Thema/CUE be committed and in sync
@@ -517,7 +517,7 @@ services: []
steps:
- commands:
- echo $DRONE_RUNNER_NAME
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: identify-runner
- commands:
- go build -o ./bin/build -ldflags '-extldflags -static' ./pkg/build/cmd
@@ -642,7 +642,7 @@ steps:
path: /github-app
- commands:
- echo $DRONE_RUNNER_NAME
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: identify-runner
- commands:
- mkdir -p bin
@@ -713,7 +713,7 @@ steps:
-a targz:grafana:linux/arm/v7 -a docker:grafana:linux/amd64 -a docker:grafana:linux/amd64:ubuntu
-a docker:grafana:linux/arm64 -a docker:grafana:linux/arm64:ubuntu -a docker:grafana:linux/arm/v7
-a docker:grafana:linux/arm/v7:ubuntu --go-version=1.23.5 --yarn-cache=$$YARN_CACHE_FOLDER
- --build-id=$$DRONE_BUILD_NUMBER --ubuntu-base=ubuntu:22.04 --alpine-base=alpine:3.20.6
+ --build-id=$$DRONE_BUILD_NUMBER --ubuntu-base=ubuntu:22.04 --alpine-base=alpine:3.21.3
--tag-format='{{ .version_base }}-{{ .buildID }}-{{ .arch }}' --ubuntu-tag-format='{{
.version_base }}-{{ .buildID }}-ubuntu-{{ .arch }}' --verify='false' --grafana-dir=$$PWD
> packages.txt
@@ -770,7 +770,7 @@ steps:
GF_APP_MODE: development
GF_SERVER_HTTP_PORT: "3001"
GF_SERVER_ROUTER_LOGGING: "1"
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: grafana-server
- commands:
- ./bin/build e2e-tests --port 3001 --suite dashboards-suite
@@ -1114,7 +1114,7 @@ steps:
name: compile-build-cmd
- commands:
- echo $DRONE_RUNNER_NAME
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: identify-runner
- commands:
- '# It is required that code generated from Thema/CUE be committed and in sync
@@ -1280,7 +1280,7 @@ services: []
steps:
- commands:
- echo $DRONE_RUNNER_NAME
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: identify-runner
- commands:
- yarn install --immutable || yarn install --immutable
@@ -1637,7 +1637,7 @@ services: []
steps:
- commands:
- echo $DRONE_RUNNER_NAME
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: identify-runner
- commands:
- yarn install --immutable || yarn install --immutable
@@ -1708,7 +1708,7 @@ services: []
steps:
- commands:
- echo $DRONE_RUNNER_NAME
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: identify-runner
- commands:
- yarn install --immutable || yarn install --immutable
@@ -1766,7 +1766,7 @@ services: []
steps:
- commands:
- echo $DRONE_RUNNER_NAME
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: identify-runner
- commands:
- yarn install --immutable || yarn install --immutable
@@ -1842,7 +1842,7 @@ services: []
steps:
- commands:
- echo $DRONE_RUNNER_NAME
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: identify-runner
- commands:
- '# It is required that code generated from Thema/CUE be committed and in sync
@@ -1922,7 +1922,7 @@ services: []
steps:
- commands:
- echo $DRONE_RUNNER_NAME
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: identify-runner
- commands:
- go build -o ./bin/build -ldflags '-extldflags -static' ./pkg/build/cmd
@@ -1988,7 +1988,7 @@ services: []
steps:
- commands:
- echo $DRONE_RUNNER_NAME
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: identify-runner
- commands:
- yarn install --immutable || yarn install --immutable
@@ -2063,7 +2063,7 @@ steps:
path: /github-app
- commands:
- echo $DRONE_RUNNER_NAME
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: identify-runner
- commands:
- mkdir -p bin
@@ -2133,7 +2133,7 @@ steps:
-a targz:grafana:linux/arm/v7 -a docker:grafana:linux/amd64 -a docker:grafana:linux/amd64:ubuntu
-a docker:grafana:linux/arm64 -a docker:grafana:linux/arm64:ubuntu -a docker:grafana:linux/arm/v7
-a docker:grafana:linux/arm/v7:ubuntu --go-version=1.23.5 --yarn-cache=$$YARN_CACHE_FOLDER
- --build-id=$$DRONE_BUILD_NUMBER --ubuntu-base=ubuntu:22.04 --alpine-base=alpine:3.20.6
+ --build-id=$$DRONE_BUILD_NUMBER --ubuntu-base=ubuntu:22.04 --alpine-base=alpine:3.21.3
--tag-format='{{ .version_base }}-{{ .buildID }}-{{ .arch }}' --ubuntu-tag-format='{{
.version_base }}-{{ .buildID }}-ubuntu-{{ .arch }}' --verify='false' --grafana-dir=$$PWD
> packages.txt
@@ -2194,7 +2194,7 @@ steps:
GF_APP_MODE: development
GF_SERVER_HTTP_PORT: "3001"
GF_SERVER_ROUTER_LOGGING: "1"
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: grafana-server
- commands:
- ./bin/build e2e-tests --port 3001 --suite dashboards-suite
@@ -2611,7 +2611,7 @@ steps:
name: compile-build-cmd
- commands:
- echo $DRONE_RUNNER_NAME
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: identify-runner
- commands:
- '# It is required that code generated from Thema/CUE be committed and in sync
@@ -2856,7 +2856,7 @@ services: []
steps:
- commands:
- echo $DRONE_RUNNER_NAME
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: identify-runner
- commands:
- yarn install --immutable || yarn install --immutable
@@ -2912,7 +2912,7 @@ services: []
steps:
- commands:
- echo $DRONE_RUNNER_NAME
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: identify-runner
- commands:
- yarn install --immutable || yarn install --immutable
@@ -2986,7 +2986,7 @@ services: []
steps:
- commands:
- echo $DRONE_RUNNER_NAME
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: identify-runner
- commands:
- '# It is required that code generated from Thema/CUE be committed and in sync
@@ -3064,7 +3064,7 @@ services: []
steps:
- commands:
- echo $DRONE_RUNNER_NAME
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: identify-runner
- commands:
- go build -o ./bin/build -ldflags '-extldflags -static' ./pkg/build/cmd
@@ -3169,7 +3169,7 @@ steps:
name: compile-build-cmd
- commands:
- echo $DRONE_RUNNER_NAME
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: identify-runner
- commands:
- '# It is required that code generated from Thema/CUE be committed and in sync
@@ -3372,7 +3372,7 @@ services: []
steps:
- commands:
- echo $DRONE_RUNNER_NAME
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: identify-runner
- commands:
- mkdir -p bin
@@ -3504,7 +3504,7 @@ services: []
steps:
- commands:
- echo $DRONE_RUNNER_NAME
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: identify-runner
- commands:
- mkdir -p bin
@@ -3994,7 +3994,7 @@ steps:
environment:
_EXPERIMENTAL_DAGGER_CLOUD_TOKEN:
from_secret: dagger_token
- ALPINE_BASE: alpine:3.20.6
+ ALPINE_BASE: alpine:3.21.3
CDN_DESTINATION:
from_secret: rgm_cdn_destination
DESTINATION:
@@ -4069,7 +4069,7 @@ steps:
environment:
_EXPERIMENTAL_DAGGER_CLOUD_TOKEN:
from_secret: dagger_token
- ALPINE_BASE: alpine:3.20.6
+ ALPINE_BASE: alpine:3.21.3
CDN_DESTINATION:
from_secret: rgm_cdn_destination
DESTINATION:
@@ -4186,7 +4186,7 @@ steps:
environment:
_EXPERIMENTAL_DAGGER_CLOUD_TOKEN:
from_secret: dagger_token
- ALPINE_BASE: alpine:3.20.6
+ ALPINE_BASE: alpine:3.21.3
CDN_DESTINATION:
from_secret: rgm_cdn_destination
DESTINATION:
@@ -4288,7 +4288,7 @@ services: []
steps:
- commands:
- echo $DRONE_RUNNER_NAME
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: identify-runner
- commands:
- yarn install --immutable || yarn install --immutable
@@ -4342,7 +4342,7 @@ services: []
steps:
- commands:
- echo $DRONE_RUNNER_NAME
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: identify-runner
- commands:
- '# It is required that code generated from Thema/CUE be committed and in sync
@@ -4423,7 +4423,7 @@ steps:
environment:
_EXPERIMENTAL_DAGGER_CLOUD_TOKEN:
from_secret: dagger_token
- ALPINE_BASE: alpine:3.20.6
+ ALPINE_BASE: alpine:3.21.3
CDN_DESTINATION:
from_secret: rgm_cdn_destination
DESTINATION:
@@ -4567,7 +4567,7 @@ steps:
environment:
_EXPERIMENTAL_DAGGER_CLOUD_TOKEN:
from_secret: dagger_token
- ALPINE_BASE: alpine:3.20.6
+ ALPINE_BASE: alpine:3.21.3
CDN_DESTINATION:
from_secret: rgm_cdn_destination
DESTINATION:
@@ -4695,7 +4695,7 @@ steps:
environment:
_EXPERIMENTAL_DAGGER_CLOUD_TOKEN:
from_secret: dagger_token
- ALPINE_BASE: alpine:3.20.6
+ ALPINE_BASE: alpine:3.21.3
CDN_DESTINATION:
from_secret: rgm_cdn_destination
DESTINATION:
@@ -4838,7 +4838,7 @@ steps:
name: grabpl
- commands:
- echo $DRONE_RUNNER_NAME
- image: alpine:3.20.6
+ image: alpine:3.21.3
name: identify-runner
- commands:
- '# It is required that code generated from Thema/CUE be committed and in sync
@@ -5262,7 +5262,7 @@ steps:
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM node:22-bookworm
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM google/cloud-sdk:431.0.0
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM grafana/grafana-ci-deploy:1.3.3
- - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM alpine:3.20.6
+ - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM alpine:3.21.3
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM ubuntu:22.04
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM byrnedo/alpine-curl:0.1.8
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM plugins/slack
@@ -5300,7 +5300,7 @@ steps:
- trivy --exit-code 1 --severity HIGH,CRITICAL node:22-bookworm
- trivy --exit-code 1 --severity HIGH,CRITICAL google/cloud-sdk:431.0.0
- trivy --exit-code 1 --severity HIGH,CRITICAL grafana/grafana-ci-deploy:1.3.3
- - trivy --exit-code 1 --severity HIGH,CRITICAL alpine:3.20.6
+ - trivy --exit-code 1 --severity HIGH,CRITICAL alpine:3.21.3
- trivy --exit-code 1 --severity HIGH,CRITICAL ubuntu:22.04
- trivy --exit-code 1 --severity HIGH,CRITICAL byrnedo/alpine-curl:0.1.8
- trivy --exit-code 1 --severity HIGH,CRITICAL plugins/slack
@@ -5564,6 +5564,6 @@ kind: secret
name: gcr_credentials
---
kind: signature
-hmac: 558d477c002eb799c23f6631aafc7df933518e445e59f34ceb989e73f4dc60bc
+hmac: f16a4715c7a4e6a4ffb1fe041b42fb966310fd5da455239614e9a239493aff82
...
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 92581c315aa..4e3ca236ebf 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -776,6 +776,7 @@ embed.go @grafana/grafana-as-code
/.github/workflows/doc-validator.yml @grafana/docs-tooling
/.github/workflows/deploy-pr-preview.yml @grafana/docs-tooling
/.github/workflows/epic-add-to-platform-ux-parent-project.yml @meanmina
+/.github/workflows/feature-toggles-ci.yml @grafana/docs-tooling
/.github/workflows/github-release.yml @grafana/grafana-developer-enablement-squad
/.github/workflows/issue-opened.yml @grafana/grafana-community-support
/.github/workflows/metrics-collector.yml @torkelo
diff --git a/.github/commands.json b/.github/commands.json
index fb10220fb21..f2896d61551 100644
--- a/.github/commands.json
+++ b/.github/commands.json
@@ -640,7 +640,7 @@
"name": "area/configuration",
"action": "addToProject",
"addToProject": {
- "url": "https://github.com/orgs/grafana/projects/96"
+ "url": "https://github.com/orgs/grafana/projects/665"
}
},
{
@@ -744,7 +744,7 @@
"name": "area/backend/db/postgres",
"action": "addToProject",
"addToProject": {
- "url": "https://github.com/orgs/grafana/projects/96"
+ "url": "https://github.com/orgs/grafana/projects/835"
}
},
{
diff --git a/.github/workflows/alerting-update-module.yml b/.github/workflows/alerting-update-module.yml
index eece934525e..1d919f3dc4b 100644
--- a/.github/workflows/alerting-update-module.yml
+++ b/.github/workflows/alerting-update-module.yml
@@ -13,6 +13,7 @@ jobs:
permissions:
contents: write
pull-requests: write
+ id-token: write
steps:
- name: Checkout repository
@@ -93,8 +94,8 @@ jobs:
uses: grafana/shared-workflows/actions/get-vault-secrets@28361cdb22223e5f1e34358c86c20908e7248760 # 1.1.0
with:
repo_secrets: |
- GITHUB_APP_ID=github-app:app-id
- GITHUB_APP_PRIVATE_KEY=github-app:private-key
+ GITHUB_APP_ID=alerting-team:app-id
+ GITHUB_APP_PRIVATE_KEY=alerting-team:private-key
- name: "Generate token"
id: generate_token
@@ -127,4 +128,4 @@ jobs:
if: steps.create-pr.outputs.pull-request-url != ''
run: |
echo "## Pull Request Created" >> $GITHUB_STEP_SUMMARY
- echo "🔗 [View Pull Request](${{ steps.create-pr.outputs.pull-request-url }})" >> $GITHUB_STEP_SUMMARY
\ No newline at end of file
+ echo "🔗 [View Pull Request](${{ steps.create-pr.outputs.pull-request-url }})" >> $GITHUB_STEP_SUMMARY
diff --git a/.github/workflows/feature-toggles-ci.yml b/.github/workflows/feature-toggles-ci.yml
new file mode 100644
index 00000000000..a6c9f5c52dc
--- /dev/null
+++ b/.github/workflows/feature-toggles-ci.yml
@@ -0,0 +1,25 @@
+name: Feature toggles CI
+
+on:
+ pull_request:
+ paths:
+ - 'pkg/services/featuremgmt/toggles_gen_test.go'
+ - 'pkg/services/featuremgmt/registry.go'
+ - 'docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md'
+
+jobs:
+ test:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ persist-credentials: false
+
+ - name: Set up Go
+ uses: actions/setup-go@v5
+ with:
+ go-version-file: 'go.mod'
+ cache: true
+
+ - name: Run feature toggle tests
+ run: go test -v -run TestFeatureToggleFiles ./pkg/services/featuremgmt/
diff --git a/.gitignore b/.gitignore
index 193de6f539e..c043094a016 100644
--- a/.gitignore
+++ b/.gitignore
@@ -113,6 +113,7 @@ profile.cov
/pkg/extensions/*
!/pkg/extensions/.keep
!/pkg/extensions/main.go
+!/pkg/extensions/enterprise_imports.go
/public/app/extensions
!/public/app/extensions/.keep
diff --git a/Dockerfile b/Dockerfile
index 9914a48dce0..09cba46da26 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -3,7 +3,7 @@
# to maintain formatting of multiline commands in vscode, add the following to settings.json:
# "docker.languageserver.formatter.ignoreMultilineInstructions": true
-ARG BASE_IMAGE=alpine:3.20
+ARG BASE_IMAGE=alpine:3.21
ARG JS_IMAGE=node:22-alpine
ARG JS_PLATFORM=linux/amd64
ARG GO_IMAGE=golang:1.23.5-alpine
diff --git a/apps/alerting/notifications/go.mod b/apps/alerting/notifications/go.mod
index 74dc1dfe028..cf49c4e862d 100644
--- a/apps/alerting/notifications/go.mod
+++ b/apps/alerting/notifications/go.mod
@@ -32,7 +32,7 @@ require (
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/google/gnostic-models v0.6.8 // indirect
- github.com/google/go-cmp v0.6.0 // indirect
+ github.com/google/go-cmp v0.7.0 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect
github.com/google/uuid v1.6.0 // indirect
@@ -83,7 +83,7 @@ require (
google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect
google.golang.org/grpc v1.70.0 // indirect
- google.golang.org/protobuf v1.36.4 // indirect
+ google.golang.org/protobuf v1.36.5 // indirect
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
diff --git a/apps/alerting/notifications/go.sum b/apps/alerting/notifications/go.sum
index cae5be00879..3b3312aebf7 100644
--- a/apps/alerting/notifications/go.sum
+++ b/apps/alerting/notifications/go.sum
@@ -60,8 +60,8 @@ github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl76
github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I=
github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
-github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
+github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
@@ -269,8 +269,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.
google.golang.org/grpc v1.18.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ=
google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw=
-google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM=
-google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
+google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=
+google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
diff --git a/apps/investigations/go.mod b/apps/investigations/go.mod
index 12da166af27..7e9c06424d0 100644
--- a/apps/investigations/go.mod
+++ b/apps/investigations/go.mod
@@ -27,7 +27,7 @@ require (
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/google/gnostic-models v0.6.8 // indirect
- github.com/google/go-cmp v0.6.0 // indirect
+ github.com/google/go-cmp v0.7.0 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect
github.com/google/uuid v1.6.0 // indirect
@@ -73,7 +73,7 @@ require (
google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect
google.golang.org/grpc v1.70.0 // indirect
- google.golang.org/protobuf v1.36.4 // indirect
+ google.golang.org/protobuf v1.36.5 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/api v0.32.1 // indirect
diff --git a/apps/investigations/go.sum b/apps/investigations/go.sum
index d3caa3d08e3..bc0a2332d93 100644
--- a/apps/investigations/go.sum
+++ b/apps/investigations/go.sum
@@ -40,8 +40,8 @@ github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6
github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I=
github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
-github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
+github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
@@ -195,8 +195,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f h1:
google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50=
google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ=
google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw=
-google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM=
-google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
+google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=
+google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
diff --git a/apps/playlist/go.mod b/apps/playlist/go.mod
index cd07f8c199e..474148a6799 100644
--- a/apps/playlist/go.mod
+++ b/apps/playlist/go.mod
@@ -28,7 +28,7 @@ require (
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/google/gnostic-models v0.6.8 // indirect
- github.com/google/go-cmp v0.6.0 // indirect
+ github.com/google/go-cmp v0.7.0 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect
github.com/google/uuid v1.6.0 // indirect
@@ -74,7 +74,7 @@ require (
google.golang.org/genproto/googleapis/api v0.0.0-20250115164207-1a7da9e5054f // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f // indirect
google.golang.org/grpc v1.70.0 // indirect
- google.golang.org/protobuf v1.36.4 // indirect
+ google.golang.org/protobuf v1.36.5 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/api v0.32.1 // indirect
diff --git a/apps/playlist/go.sum b/apps/playlist/go.sum
index d3caa3d08e3..bc0a2332d93 100644
--- a/apps/playlist/go.sum
+++ b/apps/playlist/go.sum
@@ -40,8 +40,8 @@ github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6
github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I=
github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
-github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
+github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
@@ -195,8 +195,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f h1:
google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f/go.mod h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50=
google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ=
google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw=
-google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM=
-google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
+google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=
+google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
diff --git a/devenv/datasources.yaml b/devenv/datasources.yaml
index 452d2d3d1bc..00efa243c1c 100644
--- a/devenv/datasources.yaml
+++ b/devenv/datasources.yaml
@@ -136,6 +136,14 @@ datasources:
tsdbResolution: 1
tsdbVersion: 3
+ - name: gdev-opentsdb-v2.4
+ type: opentsdb
+ access: proxy
+ url: http://localhost:4242
+ jsonData:
+ tsdbResolution: 1
+ tsdbVersion: 4
+
- name: gdev-elasticsearch
type: elasticsearch
uid: gdev-elasticsearch
diff --git a/docs/sources/datasources/opentsdb/_index.md b/docs/sources/datasources/opentsdb/_index.md
index 560ba731bb5..07a5a66add0 100644
--- a/docs/sources/datasources/opentsdb/_index.md
+++ b/docs/sources/datasources/opentsdb/_index.md
@@ -62,7 +62,7 @@ To configure basic settings for the data source, complete the following steps:
| **Default** | Default data source that will be be pre-selected for new panels. |
| **URL** | The HTTP protocol, IP, and port of your OpenTSDB server (default port is usually 4242). |
| **Allowed cookies** | Listing of cookies to forward to the data source. |
-| **Version** | The OpenTSDB version. |
+| **Version** | The OpenTSDB version (supported versions are: 2.4, 2.3, 2.2 and versions less than 2.1). |
| **Resolution** | Metrics from OpenTSDB may have data points with either second or millisecond resolution. |
| **Lookup limit** | Default is 1000. |
@@ -98,9 +98,13 @@ can be used to query OpenTSDB. Fill Policy is also introduced in OpenTSDB 2.2.
While using OpenTSDB 2.2 data source, make sure you use either Filters or Tags as they are mutually exclusive. If used together, might give you weird results.
{{% /admonition %}}
+{{% admonition type="note" %}}
+When using OpenTSDB 2.4 with alerting, queries are executed with the parameter `arrays=true`. This causes OpenTSDB to return data points as an array of arrays instead of a map of key-value pairs. Grafana then converts this data into the appropriate data frame format.
+{{% /admonition %}}
+
### Auto complete suggestions
-As soon as you start typing metric names, tag names and tag values , you should see highlighted auto complete suggestions for them.
+As you begin typing metric names, tag names, or tag values, highlighted autocomplete suggestions will appear.
The autocomplete only works if the OpenTSDB suggest API is enabled.
## Templating queries
diff --git a/docs/sources/datasources/prometheus/configure-prometheus-data-source.md b/docs/sources/datasources/prometheus/configure-prometheus-data-source.md
index c8388c35821..98ef1608f60 100644
--- a/docs/sources/datasources/prometheus/configure-prometheus-data-source.md
+++ b/docs/sources/datasources/prometheus/configure-prometheus-data-source.md
@@ -55,7 +55,7 @@ To add the Prometheus data source, complete the following steps:
1. Click **Connections** in the left-side menu.
1. Under **Connections**, click **Add new connection**.
1. Enter `Prometheus` in the search bar.
-1. Select **Prometheus**.
+1. Click **Prometheus data source**.
1. Click **Add new data source** in the upper right.
1. Enter a name for the data source.
diff --git a/docs/sources/panels-visualizations/configure-data-links/index.md b/docs/sources/panels-visualizations/configure-data-links/index.md
index 0245bc75eb5..2b057694e6c 100644
--- a/docs/sources/panels-visualizations/configure-data-links/index.md
+++ b/docs/sources/panels-visualizations/configure-data-links/index.md
@@ -18,11 +18,16 @@ labels:
- cloud
- enterprise
- oss
-menuTitle: Configure data links
-title: Configure data links
+menuTitle: Configure data links and actions
+title: Configure data links and actions
description: Configure data links to create links between dashboards and link to external resources
weight: 80
refs:
+ api-settings:
+ - pattern: /docs/grafana/
+ destination: /docs/grafana//panels-visualizations/visualizations/canvas/#button-api-options
+ - pattern: /docs/grafana-cloud/
+ destination: /docs/grafana/latest/panels-visualizations/visualizations/canvas/#button-api-options
global-variables:
- pattern: /docs/grafana/
destination: /docs/grafana//dashboards/variables/add-template-variables/#__from-and-__to
@@ -125,9 +130,14 @@ refs:
destination: /docs/grafana-cloud/visualizations/panels-visualizations/visualizations/bar-chart/
---
-# Configure data links
+# Configure data links and actions
-Data links allow you to link to other panels, dashboards, and external resources while maintaining the context of the source panel. You can create links that include the series name or even the value under the cursor. For example, if your visualization shows four servers, you can add a data link to one or two of them.
+_Data links_ allow you to link to other panels, dashboards, and external resources and _actions_ let you trigger basic, unauthenticated, API calls.
+In both cases, you can carry out these tasks while maintaining the context of the source panel.
+
+## Data links
+
+With data links, you can create links that include the series name or even the value under the cursor. For example, if your visualization shows four servers, you can add a data link to one or two of them.
The link itself is accessible in different ways depending on the visualization. For the time series visualization you need to click a data point or line:
@@ -139,7 +149,7 @@ For visualizations like stat, gauge, or bar gauge you can click anywhere on the
If there's only one data link in the visualization, clicking anywhere on the visualization opens the link rather than the context menu.
-## Supported visualizations
+### Supported visualizations
You can configure data links for the following visualizations:
@@ -164,11 +174,32 @@ You can configure data links for the following visualizations:
{{< /column-list >}}
-## Data link variables
+## Actions
-Variables in data links let you send people to a detailed dashboard with preserved data filters. For example, you could use variables to specify a label, time range, series, or variable selection.
+Using actions, you can trigger processes like starting or shutting down a server, directly from a dashboard panel. [API settings](ref:api-settings) are configured in the **Add action** dialog box. You can also pass variables in the API editor.
-To see a list of available variables, enter `$` in the data link **URL** field.
+### Supported visualizations
+
+You can configure actions for the following visualizations:
+
+{{< column-list >}}
+
+- [Bar chart](ref:bar-chart)
+- [Candlestick](ref:candlestick)
+- [State timeline](ref:state-timeline)
+- [Status history](ref:status-history)
+- [Table](ref:table)
+- [Time series](ref:time-series)
+- [Trend](ref:trend)
+- [XY chart](ref:xy-chart)
+
+{{< /column-list >}}
+
+## Data link and action variables {#data-link-variables}
+
+Variables in data links and actions let you send people to a detailed dashboard or trigger an API call with preserved data filters. For example, you could use variables to specify a label, time range, series, or variable selection.
+
+To see a list of available variables, enter `$` in the data link or action **URL** field.
{{% admonition type="note" %}}
These variables changed in 6.4 so if you have an older version of Grafana, then use the version picker to select docs for an older version of Grafana.
@@ -176,11 +207,11 @@ These variables changed in 6.4 so if you have an older version of Grafana, then
Azure Monitor, [CloudWatch](ref:cloudwatch), and [Google Cloud Monitoring](ref:google-cloud-monitoring) have pre-configured data links called _deep links_.
-You can also use template variables in your data links URLs. For more information, refer to [Templates and variables](ref:templates-and-variables).
+You can also use template variables in your data links or actions URLs. For more information, refer to [Templates and variables](ref:templates-and-variables).
### Time range panel variables
-These variables allow you to include the current time range in the data link URL:
+These variables allow you to include the current time range in the data link or action URL:
| Variable | Description |
| ------------------ | ------------------------------------------------------------------------ |
@@ -188,7 +219,7 @@ These variables allow you to include the current time range in the data link URL
| `__from` | For more information, refer to [Global variables](ref:global-variables). |
| `__to` | For more information, refer to [Global variables](ref:global-variables). |
-When you create data links using time range variables like `__url_time_range` in the URL, you have to form the query parameter syntax yourself; that is, you must format the URL by appending query parameters using the question mark (`?`) and ampersand (`&`) syntax. These characters aren't automatically generated.
+When you create data links and actions using time range variables like `__url_time_range` in the URL, you have to form the query parameter syntax yourself; that is, you must format the URL by appending query parameters using the question mark (`?`) and ampersand (`&`) syntax. These characters aren't automatically generated.
### Series variables
@@ -219,9 +250,9 @@ Value-specific variables are available under `__value` namespace:
| `__value.text` | Text representation of a value |
| `__value.calc` | Calculation name if the value is result of calculation |
-Using value-specific variables in data links can show different results depending on the set option of Tooltip mode.
+Using value-specific variables in data links and actions can show different results depending on the set option of Tooltip mode.
-When you create data links using time range variables like `__value.time` in the URL, you have to form the query parameter syntax yourself; that is, you must add the question mark (`?`) and ampersand (`&`). These characters aren't automatically generated.
+When you create data links and actions using time range variables like `__value.time` in the URL, you have to form the query parameter syntax yourself; that is, you must add the question mark (`?`) and ampersand (`&`). These characters aren't automatically generated.
### Data variables
@@ -247,20 +278,29 @@ When linking to another dashboard that uses template variables, select variable
If you want to add all of the current dashboard's variables to the URL, then use `${__all_variables}`.
-## Add a data link
+## Add data links or actions {#add-a-data-link}
+
+The following tasks describe how to configure data links and actions.
+
+{{< tabs >}}
+{{< tab-content name="Add data links" >}}
+To add a data link, follow these steps:
1. Navigate to the panel to which you want to add the data link.
1. Hover over any part of the panel to display the menu icon in the upper-right corner.
1. Click the menu icon and select **Edit** to open the panel editor.
-1. In the panel edit pane, scroll down to the **Data links** section and expand it.
+1. Scroll down to the **Data links and actions** section and expand it.
1. Click **+ Add link**.
-1. In the dialog box that opens, enter a **Title**. This is a human-readable label for the link displayed in the UI. This is a required field.
-1. Enter the **URL** or variable to which you want to link. This is a required field.
+1. In the dialog box that opens, enter a **Title**.
- To add a data link variable, click in the **URL** field and enter `$` or press Ctrl+Space or Cmd+Space to see a list of available variables.
+ This is a human-readable label for the link displayed in the UI. This is a required field.
+
+1. Enter the **URL** to which you want to link.
+
+ To add a data link variable, click in the **URL** field and enter `$` or press Ctrl+Space or Cmd+Space to see a list of available variables. This is a required field.
1. If you want the link to open in a new tab, toggle the **Open in a new tab** switch.
-1. If you want the data link to open with a single click, toggle the **One click** switch.
+1. If you want the data link to open with a single click on the visualization, toggle the **One click** switch.
Only one data link can have **One click** enabled at a time. **One click** is only supported for some visualizations.
@@ -268,4 +308,37 @@ If you want to add all of the current dashboard's variables to the URL, then use
1. Click **Save dashboard**.
1. Click **Back to dashboard** and then **Exit edit**.
-If you add multiple data links, you can control the order in which they appear in the visualization. To do this, click and drag the data link to the desired position.
+ {{< /tab-content >}}
+ {{< tab-content name="Add actions" >}}
+
+ {{< admonition type="note">}}
+ Actions are not supported for all visualizations. For the list of supported visualizations, refer to [Supported visualizations](#supported-visualizations-1).
+ {{< /admonition >}}
+
+ To add an action, by follow these steps:
+
+1. Navigate to the panel to which you want to add the action.
+1. Hover over any part of the panel to display the menu icon in the upper-right corner.
+1. Click the menu icon and select **Edit** to open the panel editor.
+1. Scroll down to the **Data links and actions** section and expand it.
+1. Click **+ Add action**.
+1. In the dialog box that opens, define the API call settings:
+
+ | Option | Description |
+ | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
+ | Title | A human-readable label for the action that's displayed in the UI. |
+ | Confirmation message | A descriptive prompt to confirm or cancel the action. |
+ | Method | Select from **POST**, **PUT**, or **GET**. |
+ | URL | The request URL.
To add a variable, click in the **URL** field and enter `$` or press Ctrl+Space or Cmd+Space to see a list of available variables. |
+ | Query parameters | **Key** and **Value** pairs. Click the **+** icon to add as many key/value pairs as you need. |
+ | Headers | Comprised of **Key** and **Value** pairs and a **Content-Type**.
Click the **+** icon to add as many key/value pairs as you need. |
+ | Content-Type | Select from the following: **application/json**, **text/plain**, **application/XML**, and **application/x-www-form-urlencoded**. |
+ | Body | The body of the request. |
+
+1. Click **Save** to save changes and close the dialog box.
+1. Click **Save dashboard**.
+1. Click **Back to dashboard** and then **Exit edit**.
+ {{< /tab-content >}}
+ {{< /tabs >}}
+
+If you add multiple data links or actions, you can control the order in which they appear in the visualization. To do this, click and drag the data link or action to the desired position.
diff --git a/docs/sources/panels-visualizations/visualizations/bar-chart/index.md b/docs/sources/panels-visualizations/visualizations/bar-chart/index.md
index c9aaf77688b..6de1af95513 100644
--- a/docs/sources/panels-visualizations/visualizations/bar-chart/index.md
+++ b/docs/sources/panels-visualizations/visualizations/bar-chart/index.md
@@ -199,7 +199,7 @@ You can set standard min/max options to define hard limits of the Y-axis. For mo
{{< docs/shared lookup="visualizations/standard-options.md" source="grafana" version="" >}}
-### Data links
+### Data links and actions
{{< docs/shared lookup="visualizations/datalink-options-2.md" source="grafana" version="" >}}
diff --git a/docs/sources/panels-visualizations/visualizations/bar-gauge/index.md b/docs/sources/panels-visualizations/visualizations/bar-gauge/index.md
index cc70b2bbb20..3fd9b5c24ea 100644
--- a/docs/sources/panels-visualizations/visualizations/bar-gauge/index.md
+++ b/docs/sources/panels-visualizations/visualizations/bar-gauge/index.md
@@ -211,7 +211,7 @@ This option only applies when bar size is set to manual.
{{< docs/shared lookup="visualizations/standard-options.md" source="grafana" version="" >}}
-## Data links
+## Data links and actions
{{< docs/shared lookup="visualizations/datalink-options-1.md" source="grafana" version="" >}}
diff --git a/docs/sources/panels-visualizations/visualizations/candlestick/index.md b/docs/sources/panels-visualizations/visualizations/candlestick/index.md
index c673509a446..bbaccb65254 100644
--- a/docs/sources/panels-visualizations/visualizations/candlestick/index.md
+++ b/docs/sources/panels-visualizations/visualizations/candlestick/index.md
@@ -136,7 +136,7 @@ The candlestick visualization is based on the time series visualization. It can
{{< docs/shared lookup="visualizations/tooltip-options-2.md" source="grafana" version="" >}}
-## Data links
+## Data links and actions
{{< docs/shared lookup="visualizations/datalink-options-2.md" source="grafana" version="" >}}
diff --git a/docs/sources/panels-visualizations/visualizations/gauge/index.md b/docs/sources/panels-visualizations/visualizations/gauge/index.md
index fb6b224a12e..fbb1cb922ae 100644
--- a/docs/sources/panels-visualizations/visualizations/gauge/index.md
+++ b/docs/sources/panels-visualizations/visualizations/gauge/index.md
@@ -171,7 +171,7 @@ Adjust the sizes of the gauge text.
{{< docs/shared lookup="visualizations/standard-options.md" source="grafana" version="" >}}
-### Data links
+### Data links and actions
{{< docs/shared lookup="visualizations/datalink-options-1.md" source="grafana" version="" >}}
diff --git a/docs/sources/panels-visualizations/visualizations/geomap/index.md b/docs/sources/panels-visualizations/visualizations/geomap/index.md
index b42d1f78a6c..64b20d33dd7 100644
--- a/docs/sources/panels-visualizations/visualizations/geomap/index.md
+++ b/docs/sources/panels-visualizations/visualizations/geomap/index.md
@@ -711,7 +711,7 @@ Displays debug information in the upper right corner. This can be useful for deb
{{< docs/shared lookup="visualizations/standard-options.md" source="grafana" version="" >}}
-### Data links
+### Data links and actions
{{< docs/shared lookup="visualizations/datalink-options.md" source="grafana" version="" >}}
diff --git a/docs/sources/panels-visualizations/visualizations/heatmap/index.md b/docs/sources/panels-visualizations/visualizations/heatmap/index.md
index 99bd1f53e68..a51479e4e7a 100644
--- a/docs/sources/panels-visualizations/visualizations/heatmap/index.md
+++ b/docs/sources/panels-visualizations/visualizations/heatmap/index.md
@@ -208,7 +208,7 @@ Choose whether you want to display the heatmap legend on the visualization by to
Set the color used to show exemplar data.
-### Data links
+### Data links and actions
{{< docs/shared lookup="visualizations/datalink-options.md" source="grafana" version="" >}}
diff --git a/docs/sources/panels-visualizations/visualizations/histogram/index.md b/docs/sources/panels-visualizations/visualizations/histogram/index.md
index 70fcc675d02..f005c8ad7cb 100644
--- a/docs/sources/panels-visualizations/visualizations/histogram/index.md
+++ b/docs/sources/panels-visualizations/visualizations/histogram/index.md
@@ -157,7 +157,7 @@ Choose from the following:
{{< docs/shared lookup="visualizations/standard-options.md" source="grafana" version="" >}}
-## Data links
+## Data links and actions
{{< docs/shared lookup="visualizations/datalink-options.md" source="grafana" version="" >}}
diff --git a/docs/sources/panels-visualizations/visualizations/pie-chart/index.md b/docs/sources/panels-visualizations/visualizations/pie-chart/index.md
index 83efab500f9..679f4e61f3b 100644
--- a/docs/sources/panels-visualizations/visualizations/pie-chart/index.md
+++ b/docs/sources/panels-visualizations/visualizations/pie-chart/index.md
@@ -174,7 +174,7 @@ Use these settings to define how the legend appears in your visualization. For m
{{< docs/shared lookup="visualizations/standard-options.md" source="grafana" version="" >}}
-### Data links
+### Data links and actions
{{< docs/shared lookup="visualizations/datalink-options-1.md" source="grafana" version="" >}}
diff --git a/docs/sources/panels-visualizations/visualizations/stat/index.md b/docs/sources/panels-visualizations/visualizations/stat/index.md
index 8eca8f63b29..e1ad7fada4a 100644
--- a/docs/sources/panels-visualizations/visualizations/stat/index.md
+++ b/docs/sources/panels-visualizations/visualizations/stat/index.md
@@ -172,7 +172,7 @@ Adjust the sizes of the gauge text.
{{< docs/shared lookup="visualizations/standard-options.md" source="grafana" version="" >}}
-### Data links
+### Data links and actions
{{< docs/shared lookup="visualizations/datalink-options-1.md" source="grafana" version="" >}}
diff --git a/docs/sources/panels-visualizations/visualizations/state-timeline/index.md b/docs/sources/panels-visualizations/visualizations/state-timeline/index.md
index cc861506203..192bcb8fdb1 100644
--- a/docs/sources/panels-visualizations/visualizations/state-timeline/index.md
+++ b/docs/sources/panels-visualizations/visualizations/state-timeline/index.md
@@ -157,7 +157,7 @@ The **Page size** option lets you paginate the state timeline visualization to l
{{< docs/shared lookup="visualizations/standard-options.md" source="grafana" version="" >}}
-### Data links
+### Data links and actions
{{< docs/shared lookup="visualizations/datalink-options-2.md" source="grafana" version="" >}}
diff --git a/docs/sources/panels-visualizations/visualizations/status-history/index.md b/docs/sources/panels-visualizations/visualizations/status-history/index.md
index 998ff72e251..0382deffd77 100644
--- a/docs/sources/panels-visualizations/visualizations/status-history/index.md
+++ b/docs/sources/panels-visualizations/visualizations/status-history/index.md
@@ -143,7 +143,7 @@ Controls the opacity of state regions.
{{< docs/shared lookup="visualizations/standard-options.md" source="grafana" version="" >}}
-## Data links
+## Data links and actions
{{< docs/shared lookup="visualizations/datalink-options-2.md" source="grafana" version="" >}}
diff --git a/docs/sources/panels-visualizations/visualizations/table/index.md b/docs/sources/panels-visualizations/visualizations/table/index.md
index c53a0f7adff..e99622019d8 100644
--- a/docs/sources/panels-visualizations/visualizations/table/index.md
+++ b/docs/sources/panels-visualizations/visualizations/table/index.md
@@ -246,6 +246,7 @@ If you want to apply a cell type to only some fields instead of all fields, you
| Data links | If you've configured data links, when the cell type is **Auto**, the cell text becomes clickable. If you change the cell type to **Data links**, the cell text reflects the titles of the configured data links. To control the application of data link text more granularly, use a **Cell option > Cell type > Data links** field override. |
| [JSON View](#json-view) | Shows values formatted as code. |
| [Image](#image) | If the field value is an image URL or a base64 encoded image, the table displays the image. |
+| [Actions](#actions) | The cell displays a button that triggers a basic, unauthenticated API call when clicked. |
##### Sparkline
@@ -333,6 +334,23 @@ Set the following options:
- **Alt text** - Set the alternative text of an image. The text will be available for screen readers and in cases when images can't be loaded.
- **Title text** - Set the text that's displayed when the image is hovered over with a cursor.
+##### Actions
+
+The cell displays a button that triggers a basic, unauthenticated API call when clicked.
+Configure the API call with the following options:
+
+
+| Option | Description |
+| ------- | ------------ |
+| Endpoint | Enter the endpoint URL. |
+| Method | Choose from **GET**, **POST**, and **PUT**. |
+| Content-Type | Select an option in the drop-down list. Choose from: JSON, Text, JavaScript, HTML, XML, and x-www-form-urlencoded. |
+| Query parameters | Enter as many **Key**, **Value** pairs as you need. |
+| Header parameters | Enter as many **Key**, **Value** pairs as you need. |
+| Payload | Enter the body of the API call. |
+
+
+
#### Wrap text
{{< admonition type="note" >}}
@@ -362,9 +380,9 @@ If you want to apply this setting to only some fields instead of all fields, you
{{< docs/shared lookup="visualizations/standard-options.md" source="grafana" version="" >}}
-### Data links
+### Data links and actions
-{{< docs/shared lookup="visualizations/datalink-options-1.md" source="grafana" version="" >}}
+{{< docs/shared lookup="visualizations/datalink-options-3.md" source="grafana" version="" >}}
### Value mappings
diff --git a/docs/sources/panels-visualizations/visualizations/time-series/index.md b/docs/sources/panels-visualizations/visualizations/time-series/index.md
index 2031d0db76a..7b3dec5e5bf 100644
--- a/docs/sources/panels-visualizations/visualizations/time-series/index.md
+++ b/docs/sources/panels-visualizations/visualizations/time-series/index.md
@@ -362,7 +362,7 @@ Set the position of the bar relative to a data point. In the examples below, **S
{{< docs/shared lookup="visualizations/standard-options.md" source="grafana" version="" >}}
-### Data links
+### Data links and actions
{{< docs/shared lookup="visualizations/datalink-options-2.md" source="grafana" version="" >}}
diff --git a/docs/sources/panels-visualizations/visualizations/trend/index.md b/docs/sources/panels-visualizations/visualizations/trend/index.md
index 49032640568..e8cc7fa8d30 100644
--- a/docs/sources/panels-visualizations/visualizations/trend/index.md
+++ b/docs/sources/panels-visualizations/visualizations/trend/index.md
@@ -60,7 +60,7 @@ For example, you could represent engine power and torque versus speed where spee
{{< docs/shared lookup="visualizations/tooltip-options-2.md" source="grafana" version="" >}}
-## Data links
+## Data links and actions
{{< docs/shared lookup="visualizations/datalink-options-2.md" source="grafana" version="" >}}
diff --git a/docs/sources/panels-visualizations/visualizations/xy-chart/index.md b/docs/sources/panels-visualizations/visualizations/xy-chart/index.md
index 8e25e2e2dfa..83becc1b7df 100644
--- a/docs/sources/panels-visualizations/visualizations/xy-chart/index.md
+++ b/docs/sources/panels-visualizations/visualizations/xy-chart/index.md
@@ -308,7 +308,7 @@ You can customize the following standard options:
To learn more, refer to [Configure standard options](ref:configure-standard-options).
-## Data links
+## Data links and actions
{{< docs/shared lookup="visualizations/datalink-options-2.md" source="grafana" version="" >}}
diff --git a/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md b/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md
index 2b446b11047..f40ad6a1766 100644
--- a/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md
+++ b/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md
@@ -28,7 +28,6 @@ Most [generally available](https://grafana.com/docs/release-life-cycle/#general-
| `featureHighlights` | Highlight Grafana Enterprise features | |
| `correlations` | Correlations page | Yes |
| `cloudWatchCrossAccountQuerying` | Enables cross-account querying in CloudWatch datasources | Yes |
-| `accessControlOnCall` | Access control primitives for OnCall | Yes |
| `nestedFolders` | Enable folder nesting | Yes |
| `logsContextDatasourceUi` | Allow datasource to provide custom UI for context view | Yes |
| `lokiQuerySplitting` | Split large interval queries into subqueries with smaller time intervals | Yes |
@@ -131,7 +130,6 @@ Experimental features might be changed or removed without prior notice.
| `lokiExperimentalStreaming` | Support new streaming approach for loki (prototype, needs special loki build) |
| `storage` | Configurable storage for dashboards, datasources, and resources |
| `canvasPanelNesting` | Allow elements nesting |
-| `vizActions` | Allow actions in visualizations |
| `disableSecretsCompatibility` | Disable duplicated secret storage in legacy tables |
| `logRequestsInstrumentedAsUnknown` | Logs the path for requests that are instrumented as unknown |
| `showDashboardValidationWarnings` | Show warnings when dashboards do not validate against the schema |
diff --git a/docs/sources/shared/visualizations/datalink-options-1.md b/docs/sources/shared/visualizations/datalink-options-1.md
index debfdcccbf9..5cfe706abf6 100644
--- a/docs/sources/shared/visualizations/datalink-options-1.md
+++ b/docs/sources/shared/visualizations/datalink-options-1.md
@@ -1,12 +1,16 @@
---
-title: Data link options
+title: Data links and actions options
comments: |
- This file is used in the following visualizations: bar gauge, gauge, pie chart, stat, table
+ This file is used in the following visualizations: bar gauge, gauge, pie chart, stat
---
Data links allow you to link to other panels, dashboards, and external resources while maintaining the context of the source panel.
You can create links that include the series name or even the value under the cursor.
-To learn more, refer to [Configure data links](../../configure-data-links/).
+To learn more, refer to [Configure data links and actions](../../configure-data-links/).
+
+{{< admonition type="note" >}}
+Actions are not supported for this visualization.
+{{< /admonition >}}
For each data link, set the following options:
@@ -14,4 +18,5 @@ For each data link, set the following options:
- **URL**
- **Open in new tab**
-Data links for this visualization don't include the **One click** switch, however, if there's only one data link configured, that data link has single-click functionality. If multiple data links are configured, then clicking the visualization opens a menu that displays all the data links.
+Data links for this visualization don't include the **One click** switch, however, if there's only one data link configured, that data link has single-click functionality.
+If multiple data links are configured, then clicking the visualization opens a menu that displays all the data links.
diff --git a/docs/sources/shared/visualizations/datalink-options-2.md b/docs/sources/shared/visualizations/datalink-options-2.md
index ec8502a1ae5..b74b753b4e6 100644
--- a/docs/sources/shared/visualizations/datalink-options-2.md
+++ b/docs/sources/shared/visualizations/datalink-options-2.md
@@ -1,10 +1,11 @@
---
-title: Data link options
+title: Data links and actions options
comments: |
This file is used in the following visualizations: bar chart, candlestick, state timeline, status history, time series, trend, xy chart
---
-Data links allow you to link to other panels, dashboards, and external resources while maintaining the context of the source panel. You can create links that include the series name or even the value under the cursor.
+_Data links_ allow you to link to other panels, dashboards, and external resources and _actions_ let you trigger basic, unauthenticated, API calls.
+In both cases, you can carry out these tasks while maintaining the context of the source panel.
For each data link, set the following options:
@@ -13,4 +14,21 @@ For each data link, set the following options:
- **Open in new tab**
- **One click** - Opens the data link with a single click. Only one data link can have **One click** enabled at a time.
-To learn more, refer to [Configure data links](../../configure-data-links/).
+For each action, define the following API call settings:
+
+
+
+| Option | Description |
+| -------------------- | ----------------------------------------------------------------- |
+| Title | A human-readable label for the action that's displayed in the UI. |
+| Confirmation message | A descriptive prompt to confirm or cancel the action. |
+| Method | Select from **POST**, **PUT**, or **GET**. |
+| URL | The request URL.
To add a variable, click in the **URL** field and enter `$` or press Ctrl+Space or Cmd+Space to see a list of available variables. |
+| Query parameters | **Key** and **Value** pairs. Click the **+** icon to add as many key/value pairs as you need. |
+| Headers | Comprised of **Key** and **Value** pairs and a **Content-Type**.
Click the **+** icon to add as many key/value pairs as you need. |
+| Content-Type | Select from the following: **application/json**, **text/plain**, **application/XML**, and **application/x-www-form-urlencoded**. |
+| Body | The body of the request. |
+
+
+
+To learn more, refer to [Configure data links and actions](../../configure-data-links/).
diff --git a/docs/sources/shared/visualizations/datalink-options-3.md b/docs/sources/shared/visualizations/datalink-options-3.md
new file mode 100644
index 00000000000..738a5898596
--- /dev/null
+++ b/docs/sources/shared/visualizations/datalink-options-3.md
@@ -0,0 +1,36 @@
+---
+title: Data links and actions options
+comments: |
+ This file is used in the following visualizations: table
+---
+
+_Data links_ allow you to link to other panels, dashboards, and external resources and _actions_ let you trigger basic, unauthenticated, API calls.
+In both cases, you can carry out these tasks while maintaining the context of the source panel.
+
+For each data link, set the following options:
+
+- **Title**
+- **URL**
+- **Open in new tab**
+
+Data links for this visualization don't include the **One click** switch, however, if there's only one data link configured, that data link has single-click functionality.
+If multiple data links are configured, then clicking the visualization opens a menu that displays all the data links.
+
+For each action, define the following API call settings:
+
+
+
+| Option | Description |
+| -------------------- | ----------------------------------------------------------------- |
+| Title | A human-readable label for the action that's displayed in the UI. |
+| Confirmation message | A descriptive prompt to confirm or cancel the action. |
+| Method | Select from **POST**, **PUT**, or **GET**. |
+| URL | The request URL.
To add a variable, click in the **URL** field and enter `$` or press Ctrl+Space or Cmd+Space to see a list of available variables. |
+| Query parameters | **Key** and **Value** pairs. Click the **+** icon to add as many key/value pairs as you need. |
+| Headers | Comprised of **Key** and **Value** pairs and a **Content-Type**.